首页 > 解决方案 > Flutter Firestore Streambuilder 与未来

问题描述

我有一个简单的问题。对我的 Firestore 集合的引用是动态的。在这段代码中,getDocumentReference() 在检查用户的电子邮件后为我提供了对文档的引用。我使用此文档参考来获取我的快照。

Future<Stream<QuerySnapshot>> getHabits() async {
    DocumentReference document = await getDocumentReference();
    var snapshots =  document.collection('habits').snapshots();
    return snapshots;
}

如您所见,我想将其Future<Stream<QuerySnapshot>>用于流构建器。我怎样才能做到这一点?我尝试过这样的事情。但它没有将未来作为流的输入

return StreamBuilder(
   stream: getHabits(),
);

标签: flutterdart

解决方案


您可以将其包装在FutureBuilder中:

return FutureBuilder<Stream<QuerySnapshot>>(
   future: getHabits(),
   builder: (context, snapshot) {
      if (snapshot.hasData) {
          return StreamBuilder(stream: snapshot.data); // Success
      } else if (snapshot.hasError) {
          return Text('${snapshot.error}'); // Error
      } else {
          return CircularProgressIndicator(); // Loading
      }
   },

);

推荐阅读