随后将更新从辅助 util 类(如 LoginUtil.kt)推送到 ViewModel 和 UI 本身的理想方法是什么?

问题描述 投票:0回答:1

我正在尝试在我的 Android 应用程序中创建一个 LoginUtil.kt 类。简而言之,该类应该是一个更简单的高级接口,供 ViewModel 进行交互以在应用程序中登录和注销。

但是,我面临的问题是,每当发生登录或注销时,我不知道使用哪个 API 来推送更新。我在

FirebaseUser
类中有一个
LoginUtil
对象,每当用户调用
login
logout
时,该对象将为空,但问题是我希望 ViewModel 观察这个
FirebaseUser
对象。

我尝试过使用

flow
,但它要求我使用无限 while 循环或重复函数来保持定期推送更新。

StateFlow 也浮现在脑海中,但我确信 StateFlow 不应该在这里使用,因为

UserUtil
不是 ViewModel 子类。

android firebase kotlin firebase-authentication
1个回答
0
投票

我希望 ViewModel 观察这个 FirebaseUser 对象。

FirebaseUser 对象不是可以观察到的对象。如果您想跟踪用户身份验证状态,我建议您使用FirebaseAuth.AuthStateListener。正如您可能看到的 onAuthStateChanged 方法:

当身份验证状态发生变化时,会在 UI 线程中调用此方法。

关于Kotlin中监听auth状态的方式:

我尝试过使用 flow,但它要求我使用无限 while 循环或重复函数来保持定期推送更新。

我个人更喜欢使用

callbackFlow来进行此类操作。如果您愿意,您还可以查看我如何在公共存储库中实现它。

© www.soinside.com 2019 - 2024. All rights reserved.