@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
return StreamProvider<QuerySnapshot>.value( // irrelevant (?)
value: DatabaseService().users,
child: StreamBuilder<UserData>(
stream: DatabaseService(uid: user.uid).userData,
builder: (context, snapshot) {
UserData userData = snapshot.data;
if (!snapshot.hasData) {
return ProfileSetup();
} else {
return Scaffold(...
我想通过检查Firestore Cloud中是否有该用户的数据来检查用户是否已设置其个人资料。否则,用户将被发送到设置页面。问题是,当云中最终有用户数据时,我会收到一条错误消息和一个红色屏幕半秒钟,但此后它一直继续下去。但是我不明白为什么会有错误消息。
一个构建函数返回null。相关的引起错误的小部件是 StreamBuilder
答案 0 :(得分:0)
在streambuilders中使用连接状态。 试试这个:
@override
Widget build(BuildContext context) {
final user = Provider.of<User>(context);
return StreamProvider<QuerySnapshot>.value( // irrelevant (?)
value: DatabaseService().users,
child: StreamBuilder<UserData>(
stream: DatabaseService(uid: user.uid).userData,
builder: (context, snapshot) {
UserData userData = snapshot.data;
if (snapshot.hasData) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text("No Connections");
case ConnectionState.waiting:
return CircularProgressIndicator();
case ConnectionState.active:
case ConnectionState.done:
return snapshot.data.length > 0 ? ScaffoldPage() :ProfileSetup();
default:
break;
}
}
return Text("");