繁体   English   中英

StreamBuilder 没有从 FireStore 获取数据 | 扑

[英]StreamBuilder gets no data from FireStore | Flutter

在我的应用程序中,我需要在继续之前获取当前用户的 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, locale de-DE)
[✓] Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.2)
[✓] Xcode - 为 iOS 和 macOS 开发 (Xcode 12.1)
[✓] Android Studio(4.0 版)
[✓] 已连接设备(1 个可用)

• 未发现问题!

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

编辑:

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

我的 Firestore 收藏的图片

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

尝试这个,

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); 
                  }
                },
              );

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM