我可以很好地对用户进行身份验证,但是,当我有意输入不存在的电子邮件地址或正确的电子邮件地址但密码错误时,身份验证错误消息似乎会延迟。
最初,我使用Future进行了尝试,并在内部进行异步等待,但是按照udemy教程进行操作后,他没有使用它,所以我将其拿走了,但是运行方式没有区别。我与本教程不同的一件事是,我也在更新一个云存储数据库。
loginUser(_email, _password) {
formkey.currentState.save();
if (formkey.currentState.validate()) {
_auth
.signInWithEmailAndPassword(email: _email, password: _password)
.catchError((e) {
Fluttertoast.showToast(
msg: e.message,
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.TOP,
timeInSecForIos: 5,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
}).then((newUser) {
var now = new DateTime.now();
Firestore.instance
.collection('users')
.document(newUser.uid)
.collection('userInfo')
.document('userInfo')
.setData({
'Last login': now,
})
.then((onValue) {
print('Created it in sub collection');
}).catchError((e) {
print('======Error======== ' + e);
});
getSignedInUser();
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MyApp()),
);
});
}
}
getSignedInUser() async {
mCurrentUser = await _auth.currentUser();
DocumentSnapshot result = await Firestore.instance.collection('users')
.document(mCurrentUser.uid).collection('profile').document('profile')
.get();
String myResult = result['First Name'];
Fluttertoast.showToast(
msg: "Welcome $myResult!",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.TOP,
timeInSecForIos: 1,
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0
);
}
}
我第一次输入无效的电子邮件时,在控制台中收到错误消息,指出在null上调用e.message的行。如果我再次按登录,它会给我正确的错误信息。现在,如果我输入了正确的电子邮件地址,但输入了错误的密码(在同一运行实例中)。它说用户名不存在。如果再次单击它,它会给我正确的无效密码消息。有什么想法我做错了吗?预先感谢