这是关于Flutter Firebase身份验证插件 .
我在创建新用户后尝试发送验证电子邮件,但sendEmailVerification()在内部使用currentUser() . 这看起来像是一个bug,但为了以防万一,我向stackoverflow发布了一个问题 . Android和IOS上的错误是相同的 .
前两行返回FirebaseUser . 第三个返回null . 第四,如果第三个被注释,则抛出一个空引用错误 .
谢谢,
鲍里斯
user = await _auth.createUserWithEmailAndPassword(email: email, password: password);
// result is FirebaseUser
user = await _auth.signInWithEmailAndPassword(email: email, password: password);
// result is FirebaseUser
user = await _auth.currentUser();
// result is null
await user.sendEmailVerification();
//null reference, because it internally uses .currentUser()
2 回答
这是我发现的,我不确定它是否仍然是一个错误,但有一种方法可以使它工作 . 由signInWithEmailAndPassword返回的FirebaseUser未经过真正的身份验证 . 只有onAuthStateChanged流返回的用户才是 . 所以,如果你从onAuthStateChanged上下文调用user.sendEmailVerification(),那么一切都很好 .
这将有效:
当然,这个代码是简化的 . 我们不希望在每次登录尝试时都发送验证邮件 .
查看firebase_auth代码,我看到
signInWithEmailAndPassword
确实实例化并返回一个用户 . 那可能是你需要用来调用sendEmailVerification
的用户 .