【问题标题】:snapshot never shows null even if there is no data in it快照永远不会显示 null,即使其中没​​有数据
【发布时间】:2022-11-19 07:18:43
【问题描述】:

大家好,Asslam o Alikum!

我遇到的错误是流生成器中的快照从不显示 null,即使其中没​​有数据。

我已经打印了 snapshot.data / snapshot.hasData 的值,但是一旦我运行它,它就会显示 null/false 但几分钟之内它就开始显示不是 null / true

也许错误是因为使用 Stream Builder 或其他东西,如果你有解决方案或你使用了什么替代方案,你能帮忙吗:

完整代码在这里:Accounts.Dart

StreamBuilder(
        stream: Accountforuser(),
        builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
          print('Here is test data ' +
// snapshot.hasData.toString());
// snapshot.hasData);
// snapshot.isEmpty);
 snapshot.data=null);

          if(snapshot.stackTrace.toString()==null){
           isLoading=false;
           return Text('No Data');
          }
else{
< Here is Data>
}

我对使用这个很好奇

AsyncSnapshot<QuerySnapshot> snapshot)

但不知道

提前感谢您的热心回复!

我已经打印了 snapshot.data / snapshot.hasData 的值,但是一旦我运行,它就会显示 null/false,但几分钟之内它就开始显示 not null/true。

我期待使用 StreambuilderQuerySnapshot 的解决方案或替代方案

【问题讨论】:

    标签: flutter firebase dart error-handling flutter-layout


    【解决方案1】:

    来自官方documentation

    DocumentSnapshot 从查询返回,或通过直接访问文档返回。即使数据库中不存在文档,也始终会返回快照。

    所以快照永远不会是null,即使那里没有文件,但你可以像这样用exists检查它们:

        if (snapshot.hasData && snapshot.data!.exists) {
          return Text("Document does exist");
        } else {
          return Text("Document does not exist");
        }
    

    所以在你的情况下,你可以替换:

         if(snapshot.stackTrace.toString()==null){
           isLoading=false;
           return Text('No Data');
          }
    

    和:

          if(!snapshot.data!.exists){
           isLoading=false;
           return Text('No Data');
          }
    

    【讨论】:

      猜你喜欢
      • 2021-11-20
      • 2020-07-02
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      相关资源
      最近更新 更多