簡體   English   中英

flutter:由future builder引起的紅屏

[英]flutter: red screen caused by future builder

我的 flutter-firebase 應用程序首先檢查用戶的 state。 如果用戶是專業人士,則會顯示mypagepro屏幕,否則會顯示mypage 這是我的代碼。

@override
Widget build(BuildContext context) {
  return FutureBuilder(
      future: FirebaseFirestore.instance
          .collection('crews')
          .doc(user.uid)
          .get(),
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        if (snapshot.data['isPro'] == true) {
          return MyPagePro();
        } else {
          return MyPage();
        }
      });
    }
  }
}

問題是檢查用戶的 state 需要很長時間才能顯示紅色屏幕,然后才最終顯示mypagemypagepro屏幕。

在此處輸入圖像描述

我想顯示mypagemypagepro屏幕而不顯示任何像這樣的紅色屏幕。 檢查用戶的 state 時如何避免出現此紅屏?

您應該檢查snapshot是否有數據。

嘗試這個:

@override
Widget build(BuildContext context) {
  return FutureBuilder(
      future: FirebaseFirestore.instance
          .collection('crews')
          .doc(user.uid)
          .get(),
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        if (snapshot.hasData && snapshot.data['isPro'] == true) {
          return MyPagePro();
        } else {
          return MyPage();
        }
      });
    }
  }
}

您正在嘗試訪問尚未收到的數據的屬性。 嘗試使用以下代碼。

    @override
Widget build(BuildContext context) {
  return FutureBuilder(
      future: FirebaseFirestore.instance
          .collection('crews')
          .doc(user.uid)
          .get(),
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        if (snapshot.hasData && snapshot.data["isPro"]) {
          return myPagePro();
        } else {
          return MyPage();
        }
      });
    }
  }
}

需要驗證使用

快照.hasData? 我的頁面Pro():我的頁面()

   @override
    Widget build(BuildContext context) {
      return FutureBuilder(
          future: FirebaseFirestore.instance
              .collection('crews')
              .doc(user.uid)
              .get(),
          builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) =>
            snapshot.hasData ?  myPagePro() : MyPage()
          );
        }
      }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM