フラッターStreamBuilderがnullを返しました

ヴィンセント:
@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("");

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=377469&siteId=1