在我的搜索中,有一些方法可以做到这一点。一种方法是同时使用FS='\n' RS='\n\n'
和FutureBuilder
。但我想避免在FutureBuilder中嵌套StreamBuilder?
我试图创建一个方法并从流生成器中调用它。
StreamBuilder
但是我收到此错误:
“ Future”类型不是“ Stream”类型的子类型
我该如何解决这个问题?
答案 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中的构建器,则您的应用程序将中断,即会引发运行时异常。