如何收听以Auth UID为参考的文档?

时间:2019-04-14 10:31:27

标签: dart flutter google-cloud-firestore

在我的搜索中,有一些方法可以做到这一点。一种方法是同时使用FS='\n' RS='\n\n'FutureBuilder。但我想避免在FutureBuilder中嵌套StreamBuilder?

我试图创建一个方法并从流生成器中调用它。

StreamBuilder

但是我收到此错误:

  

“ Future”类型不是“ Stream”类型的子类型

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您将需要StreamBuilder嵌套在FutureBuilder内,因为您将需要等待FirebaseAuth中的用户才能获取流。但是,这个还不错
Flutter就是这样工作的:嵌套小部件。

..., child: FutureBuilder(
        future: FirebaseAuth.instance.currentUser(),
        builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot) {
          if (snapshot.connectionState != ConnectionState.done) return Container();
          return StreamBuilder<DocumentSnapshot>(
            stream: Firestore.instance.collection('userinfo').document(snapshot.data.uid).snapshots(),
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              if (!snapshot.hasData) return Container();
              return Column(...);
            },
          );
        })

要实现这一目标的另一个关键方面是,您始终始终从任何构建器返回小部件。如果您不将窗口小部件返回给Flutter中的构建器,则您的应用程序将中断,即会引发运行时异常。