簡體   English   中英

正文可能會正常完成,導致返回“null”,但返回類型可能是不可為空的類型

[英]The body might complete normally, causing 'null' to be returned, but the return type, is a potentially non-nullable type

所以基本上我想檢查我的應用程序的狀態,如果用戶登錄它會將用戶重定向到主頁,如果管理員登錄它會重定向到儀表板。 我在那里放了一個退貨聲明,但它說可能會退回 null。 下面是我的代碼片段:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder<User?>(
        stream: FirebaseAuth.instance.authStateChanges(),
        builder: (context,snapshot){
          if(snapshot.hasData){
            final User user = FirebaseAuth.instance.currentUser!;
            final userID = user.uid;

            FirebaseFirestore.instance
            .collection('user')
            .doc(userID)
            .get()
            .then((DocumentSnapshot ds) {
              Map<String, dynamic> data = ds.data()! as Map<String, dynamic>;
              if(data['role']=='admin') {
                return AdminPage();
              }else {
                return HomePage();
              }
            });
          } else {
            return AuthPage();
          }
        },
      ),
    );
  }
}

我該如何解決這個錯誤?

當查詢無法執行或加載數據時,您必須返回一些東西。

    @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder<User?>(
        stream: FirebaseAuth.instance.authStateChanges(),
        builder: (context,snapshot){
          if(snapshot.hasData){
            final User user = FirebaseAuth.instance.currentUser!;
            final userID = user.uid;

            FirebaseFirestore.instance
            .collection('user')
            .doc(userID)
            .get()
            .then((DocumentSnapshot ds) {
              Map<String, dynamic> data = ds.data()! as Map<String, dynamic>;
              if(data['role']=='admin') {
                return AdminPage();
              }else {
                return HomePage();
              }
            });
          return LoadingPage();
          } else {
            return AuthPage();
          }
        },
      ),
    );
  }
}

暫無
暫無

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

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