【问题标题】:Retrieving firebase firestore documents in Flutter / Dart and Sound Null在 Flutter / Dart 和 Sound Null 中检索 firebase firestore 文档
【发布时间】:2021-11-10 18:30:25
【问题描述】:

我正在学习 Udemy Flutter 课程,并且我正在处理 Firebase 的一章。该课程大约有 3-4 年的历史,并且似乎已经足够大,以至于示例完成的代码在访问 Firebase 部分时会崩溃。我从头开始了一个新项目,并拼凑了一些零碎的东西来让它大部分运行起来,但我现在已经走到了死胡同。新项目和 firebase 插件是 Sound Null,而类代码不是。从数据库获取和打印数据工作正常,直到我尝试将它连接到流。我在迭代收到的文档时特别遇到了问题。

当我在 for-in 循环中使用(Flutter)snapshot.data 设置消息变量并尝试遍历返回的文档(#1)时,我遇到了一个空问题。如果不将类型 (#1a) 指定为 AsyncSnapshot<dynamic>,我无法遍历不可为空的 for-in 循环错误。

更改类型会消除编译时错误,但会产生运行时错误

类型 _JsonQuerySnapshot 不是 Iterable 类型的子类型

Dart 不是我的主要语言,我已经在谷歌上搜索了几个小时,但无济于事。任何帮助表示赞赏。

最终 _firestore = FirebaseFirestore.instance; //

      children: <Widget>[

        StreamBuilder<QuerySnapshot>(
          stream: _firestore.collection('messages').snapshots(),
          builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) { //<----Problem #1a here
            List<Text> messageWidgets = [];
            if (snapshot.hasData) {

              final messages = snapshot.data;

              for (var message in messages) { //<----------Problem #1 here
                final messageText = message.data['text'];
                final messageSender = message.data['sender'];
                final messageWidget =
                    Text('$messageText from $messageSender');
                messageWidgets.add(messageWidget);
              }
            }
            return Column(
              children: messageWidgets,
            );
          },
      

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    好吧,在谷歌搜索了大约一个小时后,我找到了合适的地方。 firestore 的颤振插件的文档与我正在学习的课程有很大的不同。阅读(ctrl-c, ctrl-v) 我至少能够基本理解并让程序回到正轨以完成我的课程。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2019-10-12
    • 2021-07-02
    • 2019-04-26
    • 2021-03-27
    • 2020-09-30
    • 2021-04-13
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多