【问题标题】:Flutter Firestore QuerySnapshot has no instance of getter 'documentFlutter Firestore QuerySnapshot 没有 getter 'document 的实例
【发布时间】:2020-04-07 13:09:53
【问题描述】:

我正在使用它从 firestore 数据库中获取消息列表,但是,它给了我一个错误:

flutter:构建时抛出了以下 NoSuchMethodError: 颤振:类“QuerySnapshot”没有实例获取器“文档”。 颤振:接收器:“QuerySnapshot”的实例 颤振:尝试调用:文档

我使用的代码是:

StreamBuilder(
                stream: Firestore.instance
                    .collection('messages')
                    .document(groupId)
                    .collection(groupId)
                    .orderBy('timestamp', descending: true)
                    .snapshots(),
                builder: (BuildContext context, AsyncSnapshot snapshot) {
                  if (!snapshot.hasData) {
                    return Center(
                      child: CircularProgressIndicator(),
                    );
                  } else {
                    listMessage = snapshot.data.documents;
                    return ListView.builder(
                      padding: EdgeInsets.all(10.0),
                      itemBuilder: (context, index) =>
                          buildItem(index, snapshot.data.document[index]),
                      itemCount: snapshot.data.documents.length,
                      reverse: true,
                      controller: scrollController,
                    );
                  }
                },
              ),

我是 Firestore 和 noSQL 的新手,有人可以帮忙吗?

【问题讨论】:

    标签: android ios flutter google-cloud-firestore


    【解决方案1】:

    我遇到了同样的问题,我的解决方法是将documents 更改为docs,见下文:

    snapshot.data.docs[index]
    

    【讨论】:

      【解决方案2】:

      所以问题出在builder:(BuildContext context, AsyncSnapshot snapshot) 它应该是(BuildContext context, AsyncSnapshot'<'QuerySnapshot'>' snapshot) 加上你就可以访问snapshot.data.documents

      QuerySnapshot 没有尖括号的引号,我必须把它们放在那里才能在 Stackoverflow 上显示。

      【讨论】:

        【解决方案3】:

        我有同样的问题。这是一个错字。

        snapshot.data.document[index]
        

        应该是:

        snapshot.data.documents[index]
        

        【讨论】:

          【解决方案4】:

          我也有这个问题。
          我的解决方法是将其重写为

          snapshot.data[index]['name']
          

          【讨论】:

            【解决方案5】:
            buildSearchResult() {
                return FutureBuilder(
                    future: searchResultFuture,
                    builder: (context, snapshot) {
                      if (!snapshot.hasData) {
                        return circularProgress();
                      }
                      // otherwise if it has data
                      List<Text> searchResults = [];
                      snapshot.data.**documents**.forEach((doc) {
                        User user = User.fromDocument(doc);
                        searchResults.add(Text(user.username));
                      });
                      return ListView(
                        children: searchResults,
                      );
                    });
              }
            

            我遇到了类似的问题,我的问题是因为我在上面标记为粗体的文档中省略了字母“s”。我写的是“文档”而不是“文档”

            【讨论】:

              猜你喜欢
              • 2022-06-15
              • 2020-10-21
              • 2021-04-18
              • 2020-04-11
              • 1970-01-01
              • 2021-03-01
              • 2021-05-18
              • 1970-01-01
              相关资源
              最近更新 更多