我正在尝试在我的 Android 应用程序中创建一个 LoginUtil.kt 类。简而言之,该类应该是一个更简单的高级接口,供 ViewModel 进行交互以在应用程序中登录和注销。
但是,我面临的问题是,每当发生登录或注销时,我不知道使用哪个 API 来推送更新。我在
FirebaseUser
类中有一个 LoginUtil
对象,每当用户调用 login
或 logout
时,该对象将为空,但问题是我希望 ViewModel 观察这个 FirebaseUser
对象。
我尝试过使用
flow
,但它要求我使用无限 while 循环或重复函数来保持定期推送更新。
StateFlow 也浮现在脑海中,但我确信 StateFlow 不应该在这里使用,因为
UserUtil
不是 ViewModel 子类。
我希望 ViewModel 观察这个 FirebaseUser 对象。
FirebaseUser 对象不是可以观察到的对象。如果您想跟踪用户身份验证状态,我建议您使用FirebaseAuth.AuthStateListener。正如您可能看到的 onAuthStateChanged 方法:
当身份验证状态发生变化时,会在 UI 线程中调用此方法。关于Kotlin中监听auth状态的方式:
我尝试过使用 flow,但它要求我使用无限 while 循环或重复函数来保持定期推送更新。我个人更喜欢使用
callbackFlow来进行此类操作。如果您愿意,您还可以查看我如何在公共存储库中实现它。