我在检查返回的用户uid是否不为null后尝试推送新页面。我认为问题在于,当页面被推送时,用户uid始终为null,因此它总是推送至错误页面。如何解决此问题,或者有更好的方法从尝试做的事情中获得相似的结果
Future<FirebaseUser> signInUser([var myuserdata,var mypasswrd
,frouter,srouter]
)async{
FirebaseUser firebaseUser = await FirebaseAuth.instance
.signInWithEmailAndPassword(email:myuserdata,password:mypasswrd).then((onValue){
if(onValue.uid != null){
// main page
print('object at non-null uid ${onValue.uid}');
frouter;
}
if(onValue.uid == null){
//error page
srouter;
print('object at null uid ${onValue.uid}');
}
});
print('user id :${firebaseUser.uid}');
return firebaseUser;
}
Exception has occurred.
NoSuchMethodError: The getter 'uid' was called on null.
Receiver: null
Tried calling: uid
I/flutter ( 8462): object at non-null uid q0q9vYK7AsPBrVpRQUwH04jyCp22
答案 0 :(得分:0)
您的代码中的异步处理似乎存在一些问题。 试试这个希望对您有帮助的人。
final FirebaseAuth _auth = FirebaseAuth.instance;
Future<FirebaseUser> signInUser([var myuserdata,var mypasswrd
,frouter,srouter]
)async{
FirebaseUser firebaseUser =
await _auth.signInWithEmailAndPassword(email:myuserdata,password:mypasswrd);
if(firebaseUser .uid != null){
// main page
print('object at non-null uid ${onValue.uid}');
frouter;
}
else if(firebaseUser .uid == null){
//error page
srouter;
print('object at null uid ${onValue.uid}');
}
});
print('user id :${firebaseUser.uid}');
return firebaseUser;
}