我当前正在使用Flutter创建一个应用。
目标是在登录之前检查帐户的电子邮件是否经过验证。
现在,用户使用Auth.signInWithEmailAndPassword
此时,Auth.isEmailVerified
返回false
此后,将发送一封验证电子邮件,用户然后单击链接以验证其帐户,然后出现一个弹出窗口,表明他们的帐户现已通过验证。
用户尝试再次登录,但是Auth.isEmailVerified
仍然返回false。
有什么想法吗?
这是我正在使用的auth.dart
类文件。
https://github.com/AndriousSolutions/auth/blob/master/lib/auth.dart
这是我的代码。
child: MaterialButton(
minWidth: 200.0,
height: 42.0,
onPressed: () async {
if (_formKey.currentState.validate()) {
Auth.signInWithEmailAndPassword(
email: emailAddressController.text,
password: passwordController.text)
.then((onSuccess) {
Auth.reload();
if ((onSuccess)) {
if (Auth.isEmailVerified) {
db.createUser(
emailAddress: Auth.email,
firstName: Tools.getFirstName(Auth.displayName),
googleAccount: false);
Navigator.of(context).pushReplacementNamed(HomePage.tag);
} else {
emailVerificationDialog(context);
Auth.sendEmailVerification();
}
}
}).catchError((e) {
print(" LSAHJDSAKHDSA " + e);
});
}
},
color: ThemeSettings.RaisedButtonColor,
child: Text('Log In', style: TextStyle(color: Colors.white)),
),
非常感谢您!
答案 0 :(得分:0)
需要等待正在使用Auth.reload
调用的库。应该是
static Future<bool> reload() async {
await _user?.reload();
return _setUserFromFireBase(_user);
}
由于它不等待重新加载,因此您的代码只是继续运行,并在有机会完成重新加载之前检查isEmailVerified
。
此issue正在举报我分享了此信息。