dart - itemcount 中的 snapshot.data.length 不起作用:“在 null 上调用了 getter 'length'”
问题描述
我正在尝试使用以下代码从 firestore 获取文档:
Future getCategories() async {
var firestore = Firestore.instance;
QuerySnapshot qn = await firestore.collection("categories").getDocuments();
return qn.documents;
}
@override
Widget build(BuildContext context) {
return Container(
child:FutureBuilder(
future:getCategories(),
builder:(context, snapshot){
if(snapshot.connectionState == ConnectionState.waiting){
return Center(
child:Text("Loading...")
);
}
else
{
return GridView.builder(
itemCount: snapshot.data.length,
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisSpacing: 6.0, mainAxisSpacing: 6.0, crossAxisCount: 2),
itemBuilder: (BuildContext context, int index) {
return SingleCategory(
category_name: snapshot.data[index].data["title"],
category_picture: snapshot.data[index].data["picture"],
);
}
);
}
}
)
);
当我运行代码时,我收到以下错误:
I/颤振(7555):══╡小部件库发现异常╞═════════════════════════════════════════════ ═════════════════════════ I/flutter(7555):在构建 FutureBuilder(脏,状态:I/flutter(7555)时引发了以下 NoSuchMethodError : _FutureBuilderState#c3e7b): I/flutter (7555): 在 null 上调用了 getter 'length'。I/flutter(7555):接收者:null I/flutter(7555):尝试调用:长度 I/flutter(7555):I/flutter(7555):抛出异常时,这是堆栈:I/flutter( 7555): #0 Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5)
谁能帮助我。
解决方案
尝试这个 :
future: getData(),
builder: (context, AsyncSnapshot<List<User>> snapshot)