【问题标题】:Is StreamBuilder Snapshot is emptyStreamBuilder 快照是否为空
【发布时间】:2021-08-08 22:11:09
【问题描述】:
StreamBuilder(
        stream: firestore
            .collection('Product')
            .doc(order.productId)
            .collection('AbleToReview')
            .doc(auth.currentUser.uid)
            .snapshots(),
        builder: (context, snapshot) {
          if (snapshot.hasError) {
            return Text('Something went wrong');
          }

          if (snapshot.connectionState == ConnectionState.waiting) {
            return Center(
              child: CircularProgressIndicator(),
            );
          }

          if (snapshot.data==null){
            return Text('no data');
          } else {
            return Text('have data');
          }
        }
    )

有时 firestore.collection('Product').doc(order.productId).collection('AbleToReview').doc(auth.currentUser.uid).snapshots() 中没有数据 查询。由于取决于数据是否存在,我尝试重新使用不同的小部件。但是snapshot.data==null!snapshot.hasData 不是我想要的正确方式。

【问题讨论】:

    标签: flutter google-cloud-firestore flutter-layout


    【解决方案1】:

    您可以使用snapshot.data.documents.isEmpty() 检查查询中的实际数据是否为空。

    您可以将您的代码更新为以下代码:

        if (snapshot.data==null || snapshot.data.data().isEmpty()){
            return Text('no data');
        } else {
            return Text('have data');
        }
    

    【讨论】:

    • 类 'DocumentSnapshot' 没有实例 getter 'documents'。接收方:“DocumentSnapshot”实例尝试调用:文档
    • @HasanToufiqAhamed,应该是 .data() 而不是 .documents。请查看更新后的答案。
    • 是的,我已经找到了解决方案。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 2020-07-19
    • 2019-09-19
    • 2021-10-21
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2023-02-11
    相关资源
    最近更新 更多