当用户在应用程序中注册时,我会发送一个验证链接,但是当我尝试创建一个流来监听用户何时单击电子邮件中的验证链接时。
我知道我需要以某种方式刷新用户 token ,但我似乎无法让它工作。我以为 reload()
方法就是其中之一,但也许我只是没有正确实现它。
问题是 Stream 总是返回 isEmailVerified == false,使它变为真的唯一方法是让用户注销并再次登录,这是我想避免的事情。我该怎么做?
我创造了这个 future :
//CHECKS IF EMAIL IS VERIFIED
Future<bool> checkIfEmailIsVerified() async {
FirebaseUser currUser = await _auth.currentUser();
await currUser.reload();
currUser = await _auth.currentUser();
final bool flag = currUser.isEmailVerified;
if (currUser != null) {
return flag;
} else {
return false;
}
}
和这个流:
//IS EMAILVERIFIED STREAM
Stream<EmailVerified> get emailVerified async* {
final bool isEmailVerified = await checkIfEmailIsVerified();
yield EmailVerified(isEmailVerified);
}
最佳答案
不幸的是,有必要在重新加载后获取用户的新实例:
User user = FirebaseAuth.instance.currentUser;
if (user != null) {
await user.reload();
user = FirebaseAuth.instance.currentUser;
if (user.emailVerified) {
...
}
}
关于Firebase/Flutter : reload() not refreshing user. isEmailVerified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854615/