【问题标题】:StreamBuilder gets no data from FireStore | FlutterStreamBuilder 没有从 FireStore 获取数据 |扑
【发布时间】:2021-02-20 15:35:43
【问题描述】:

在我的应用程序中,我需要在继续之前获取当前用户的 Profile-Data。 我尝试通过在我的代码中使用 StreamBuilder 来完成此操作。

我的问题: StreamBuilder 总是返回 else 语句。好像他无法从 FireStore-Collection 'Users' 加载任何数据。

return StreamBuilder<QuerySnapshot>(
        stream: Firestore.instance.collection('Users').snapshots(), // It seems like he cannot load any data from the collection 'Users'...
        builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
          if (snapshot.hasData) {
            print("Loaded data successfully");
            return Container(color: CupertinoColors.systemGreen,); 
          } else {
            print("Could not load data");
            return Container(color: CupertinoColors.systemRed,); // The Code always ends here
          }
        }
      );

此外,我没有收到任何类型的错误消息。

颤振医生:

[✓] Flutter (Channel stable, 1.20.4, on Mac OS X 10.15.6 19G2021, 语言环境 de-DE)
[✓] Android 工具链 - 为 Android 开发 设备(Android SDK 版本 30.0.2)
[✓] Xcode - 为 iOS 开发 和 macOS (Xcode 12.1)
[✓] Android Studio (版本 4.0)
[✓] 已连接的设备(1 个可用)

• 未发现任何问题!

为什么我没有从 Firestore 获得任何数据?

编辑:

我的 Firestore“用户”集合(Sammlung):

Image of my Firestore collection

【问题讨论】:

    标签: android ios flutter dart stream-builder


    【解决方案1】:

    试试这个,

    return StreamBuilder(
                    stream: Firestore.instance
                        .collection('Users')
                        .snapshots(),
                    builder: (BuildContext context,
                        AsyncSnapshot<QuerySnapshot> snapshot) {
                      print("snapshotData"+snapshot.data.toString());
                      if (snapshot.data.toString()=='null')
                        return Container(color: CupertinoColors.systemRed); 
                      if (snapshot.hasError)
                         return Container(color: CupertinoColors.systemRed); 
                      if(snapshot.data.documents.length<1)
                       return Container(color: CupertinoColors.systemRed); 
                      switch (snapshot.connectionState) {
                        case ConnectionState.waiting:
                          return new Text('Loading...');
                        default:
                         return Container(color: CupertinoColors.systemGreen); 
                      }
                    },
                  );
    

    我也在为空白/空添加条件。

    【讨论】:

      【解决方案2】:

      StreamBuilder 看起来不错,检查“用户”集合是否已创建并在那里有数据,在我看来这就是失败的原因。问题不在 Flutter 中,更多的是您的数据有问题,这就是您没有收到输出错误的原因。

      【讨论】:

      • Firebase 中存在“用户”集合(我将更新我的问题,以便您看到我正在使用的内容)。这就是为什么它如此令人沮丧......一切(IMO)都以正确的方式完成,但它仍然无法正常工作。
      • @Jonathan 把所有代码放上来看看更多细节,你使用的是哪个版本的“cloud_firestore”和“firebase_core”。
      猜你喜欢
      • 2020-02-14
      • 2020-07-30
      • 2023-01-01
      • 2019-04-20
      • 2021-07-27
      • 2021-11-23
      • 2020-01-04
      • 1970-01-01
      • 2020-04-13
      相关资源
      最近更新 更多