返回类型 'SignUpScreen' 不是闭包上下文要求的"void"



我试图建立一个函数谁返回Widget的持久状态,但我得到这个错误。

Future<Widget?> persiting () async {
await FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
return  SignUpScreen() ;
} else {
return  HomeScreen() ;
}
});
}

try this:

Future<Widget?> persiting () async {
late bool hasUsers;
await FirebaseAuth.instance
.authStateChanges()
.listen((User? user) {
if (user == null) {
hasUsers = true;
} else {
hasUsers = false;
}
});
return hasUsers ? SignUpScreen() : HomeScreen();
}

显示异常,因为您将对象返回给.listen()函数而不是persiting()函数。

你需要做的是等待presiting()函数内部的流。

Future<Widget?> persiting () async {
try{
Stream<User?> stream = await FirebaseAuth.instance
.authStateChanges();
bool hasUser = false;
await stream.forEach((user){
hasUser = user != null;
});
return hasUser? HomeScreen() : SignUpScreen();
}catch(e){
/// better do some handling if any network or unexpected error here
}
}

相关内容

最新更新