Firebase/Flutter:reload() 未刷新 user.isEmailVerified

Ras*_*ian 2 dart firebase firebase-authentication flutter

当用户在应用程序中注册时,我会发送验证链接,但当我尝试创建一个监听用户何时单击电子邮件中的验证链接的流时,我会发送验证链接。

我知道我需要以某种方式刷新用户令牌,但我似乎无法让它工作。我认为reload()方法就是方法,但也许我只是没有正确实施它。

问题是 Stream 总是返回 isEmailVerified == false,使其为 true 的唯一方法是用户注销并再次登录,这是我想避免的事情。我该怎么做呢?

我创造了这个未来:

//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;
    }
  }
Run Code Online (Sandbox Code Playgroud)

和这个流:

//IS EMAILVERIFIED STREAM
  Stream<EmailVerified> get emailVerified async* {
    final bool isEmailVerified = await checkIfEmailIsVerified();
    yield EmailVerified(isEmailVerified);
  }
Run Code Online (Sandbox Code Playgroud)

Kam*_*oda 7

不幸的是,重新加载后有必要获取用户的新实例:

User user = FirebaseAuth.instance.currentUser;
if (user != null) {
    await user.reload();
    user = FirebaseAuth.instance.currentUser;
    if (user.emailVerified) {
      ...
    }
}
Run Code Online (Sandbox Code Playgroud)