繁体   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