我目前正在用Firebase开发一个Futter应用程序,我很纠结,因为无论用户何时登录或退出,状态认证通知程序都会触发并按预期工作,但它不会通知用户验证电子邮件、更改显示名或更改电子邮件等更改,甚至不会通知用户将匿名帐户转换为电子邮件帐户。
通知程序代码为:
final FirebaseAuth _firebaseAuth;
Stream<User?> get authStateChanges => _firebaseAuth.authStateChanges();
以及
final firebaseUser = context.watch<User?>();
1条答案
按热度按时间mzsu5hc01#
authStateChanges
只通知用户的登录状态,如登录或注销,而不通知您提到的User
配置文件的更改。不过,您可以使用userChanges()
方法监听任何用户更新的更改:通知任何用户更新的更改。
这是authStateChanges和idTokenChanges的超集。它提供有关所有用户更改的事件,例如链接和取消链接凭据时以及更新用户配置文件时。此流的用途是侦听用户状态(已登录、已注销、不同用户和令牌刷新)的实时更新,而不必手动调用reload,然后再重新生成对应用程序的更改。
但是,它不会通知电子邮件验证。正如文档中所述,事件会在以下情况发生时触发:
FirebaseAuth.instance.currentUser
提供的以下方法时:reload()
unlink()
updateEmail()
updatePassword()
updatePhoneNumber()
updateProfile()
此外,如果您通过自己的firebase admin sdk实现更新
User
配置文件,userChanges()
将不会触发。您可以使用以下
FirebaseAuth.instance.currentUser.reload()
强制重新加载以检索最新的User
配置文件。