![](/img/trans.png)
[英]The body might complete normally, causing 'null' to be returned, but the return type, 'Widget', is a potentially non-nullable type. Flutter code
[英]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.