Flutter Firestore QuerySnapshot没有getter'document的实例

时间:2019-12-14 08:16:09

标签: android ios flutter google-cloud-firestore

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

颤振:构建时引发了以下NoSuchMethodError: flutter:类“ QuerySnapshot”没有实例获取器“ document”。 颤动:接收器:'QuerySnapshot'的实例 颤抖:尝试通话:文档

我正在使用的代码是:

useEffect(() => {console.log(arr)})

我是Firestore的新手,noSQL谁能在这里提供帮助?

5 个答案:

答案 0 :(得分:16)

我遇到了同样的问题,我的解决方法是将 documents 更改为 docs,请参阅以下内容:

snapshot.data.docs[index]

答案 1 :(得分:2)

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

snapshot.data.document[index]

应为:

snapshot.data.documents[index]

答案 2 :(得分:0)

因此问题出在构建器中:(BuildContext上下文,AsyncSnapshot快照)应该是(BuildContext上下文,AsyncSnapshot'<'QuerySnapshot'>'快照)添加了该名称后,您将可以访问 snapshot.data.documents

QuerySnapshot 在没有尖括号的情况下,我不得不将其放在此处以使其出现在Stackoverflow上。

答案 3 :(得分:0)

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

def mean(person_cls):
    class MeanInner(person_cls):
        def hello(self, n):
            print(id(self), f"{n} times mean hello in {self.lang}")

    return MeanInner


a = mean(Person)('English')
c = copy.copy(a)
c.lang = 'German'
print(id(a), id(c))  # 140407794133424 140407794133536
a.hello(2)  # 140407794133424 2 times mean hello in English
c.hello(2)  # 140407794133536 2 times mean hello in German

答案 4 :(得分:0)

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”。我写的是“文档”而不是“文档”