Flutter 空值上使用的空检查运算符-StaggeredGridView
我正在开发一个'Notes'应用程序 到目前为止,它有一个Flutter 空值上使用的空检查运算符-StaggeredGridView,flutter,flutter-layout,staggered-gridview,Flutter,Flutter Layout,Staggered Gridview,我正在开发一个'Notes'应用程序 到目前为止,它有一个主屏幕()和Note()小部件。第一个是显示注释的屏幕,第二个是自定义小部件,通过注释的显示方式进行充气。我正在使用卡片()显示每个便笺 要动态设置卡的大小,我使用的是StaggeredGridView 这是我的密码注释列表是注释数组 import 'package:flutter/material.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_g
主屏幕()
和Note()
小部件。第一个是显示注释的屏幕,第二个是自定义小部件,通过注释的显示方式进行充气。我正在使用卡片()
显示每个便笺
要动态设置卡的大小,我使用的是StaggeredGridView
这是我的密码注释列表
是注释数组
import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:get_it/get_it.dart';
import '../models/notes_list.dart';
import '../services/notes_service.dart';
import '../note.dart';
import './add_note_screen.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
NotesService get service => GetIt.I<NotesService>();
List<NotesList> notesList = [];
@override
void initState() {
notesList = service.getNotes();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: notesList.length == 0
? AppBar(title: Text('Create a Note'))
: AppBar(title: Text('Safe')),
body: StaggeredGridView.builder(
padding: EdgeInsets.all(10),
itemCount: notesList.length,
gridDelegate: SliverStaggeredGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
staggeredTileBuilder: (index) => StaggeredTile.fit(1),
),
itemBuilder: (_, index) => Note(
notesList[index].noteTitle,
notesList[index].noteContent,
notesList[index].noteDateTime,
),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () => Navigator.push(
context, MaterialPageRoute(builder: (_) => AddNoteScreen())),
),
floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
);
}
}
我发现
StaggedGridView.builder
在项目不足以覆盖屏幕时抛出该错误,如果使用shrinkWrap:true
则必须提供有界高度,这不是通用解决方案
但是根据您的期望,StaggedGridView.countBuilder
更适合您的情况
因此,我使用了StaggeredGridView.countBuilder
,它需要所有必要的参数,并且它适用于我的主屏幕
代码:
StaggeredGridView.countBuilder(
padding: EdgeInsets.all(10),
itemCount: notesList.length,
crossAxisCount: 2,
staggeredTileBuilder: (index) => StaggeredTile.fit(1),
itemBuilder: (_, index) => Note(
notesList[index].noteTitle,
notesList[index].noteContent,
notesList[index].noteDateTime,
),
)
请提供错误堆栈跟踪,非常抱歉。用错误堆栈跟踪更新了我的问题。我的意思是完全完整的堆栈跟踪,因为您的实现中似乎存在一些逻辑错误。带有
StaggedGridView
的小部件的完整代码将非常有用,请检查我是否需要添加更多详细信息。尝试添加shrinkWrap:true
它解决了手头的两个问题。谢谢但我仍然需要找出错误的原因。
StaggeredGridView.countBuilder(
padding: EdgeInsets.all(10),
itemCount: notesList.length,
crossAxisCount: 2,
staggeredTileBuilder: (index) => StaggeredTile.fit(1),
itemBuilder: (_, index) => Note(
notesList[index].noteTitle,
notesList[index].noteContent,
notesList[index].noteDateTime,
),
)