首页 > 解决方案 > 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)

谁能帮助我。

标签: dartfluttergoogle-cloud-firestore

解决方案


尝试这个 :

 future: getData(),
              builder: (context, AsyncSnapshot<List<User>> snapshot)

推荐阅读