ヴィンセント:
@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クラウド内のユーザーのいずれかのデータがあるかどうかをチェックすることによって、彼のプロフィールを設定しているかどうかを確認します。そうでなければ、ユーザは、設定ページに送信されます。問題は、最終的には、クラウド内のユーザーデータがある場合、私は、エラーメッセージと約0.5秒間赤の画面を得るということですが、それはそれへのsuppostとして継続する後。エラーメッセージが存在する理由しかし、私は理解していません。
ビルド関数はnullを返しました。関連するエラーの原因となるウィジェットがStreamBuilder <UserDataを>でした
ハルーンアシュラフ・アワン:
streambuildersでconnectionstatesを使用してください。これを試して:
@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("");