Firebase Firestore退货&x27;querysnapshot的实例';即使集合不存在

Firebase Firestore退货&x27;querysnapshot的实例';即使集合不存在,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,显然,集合('aaaaaaaa')甚至不存在,那么为什么它不返回null?您应该使用hasData检查是否有数据: StreamBuilder( stream: Firestore.instance.collection('aaaaaaaaaaaaaaaa').snapshots(), builder: ( context , snap){ if(snap.data == null){ print('A'); } if(sna


显然,集合('aaaaaaaa')甚至不存在,那么为什么它不返回null?

您应该使用
hasData
检查是否有数据:

StreamBuilder(
   stream: Firestore.instance.collection('aaaaaaaaaaaaaaaa').snapshots(),
    builder: ( context , snap){

      if(snap.data == null){
         print('A');
      }
      if(snap.data != null){
        print(snap.data);
        print('B');
      }
StreamBuilder(
流:Firestore.instance.collection('aaaaaaaaaa').snapshots(),
生成器:(上下文,异步快照){
if(snapshot.hasData){
印刷品(“a”);
}否则{
返回文本(“无数据”);
}
返回循环ProgressIndicator();
},
),
查询不存在(或空)的集合不是错误。因此,当没有结果时,Firestore会给您一个空的
QuerySnapshot
,而不是一个错误


要检测是否有任何结果,请检查
QuerySnapshot
是否有任何文档(FlatterFire似乎没有包装本机。

出于某种原因,它的行为是这样的。为什么不检查长度或其他参数以检查其是否为null。仍然得到相同的结果。如果集合不存在,那么为什么它不返回null?它应该不返回任何数据,如果使用我的代码,您得到了什么?当我尝试获取该集合中的文档将返回空的
DocumentSnapshot
。因此我认为它从不返回null,那么如何检查它是否为null?我不确定“空DocumentSnapshot”是什么意思如果您
snap.data.documents
包含任何文档,则表示集合不是空的。如果没有文档,Firebase将不会返回
DocumentSnapshot
          StreamBuilder(
            stream: Firestore.instance.collection('aaaaaaaaaaaaaaaa').snapshots(),
            builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
              if (snapshot.hasData) {
                print("a");
              } else{
                return Text("No data");
              }
              return CircularProgressIndicator();
            },
          ),