我尝试在我的项目中实现Firebase Auth,并且尝试创建一个带有Firebase当前用户的流。但是我无法在视图模型中真实的获取用户。我有两个按钮用于登录和注销,还有一个按钮用于获取当前用户的日志,但是当我登录和注销时,这个变量没有改变。
这在FireBaseAuthService中:
val currentUser: Flow<FirebaseUser?> = flow {
val user = firebaseAuth.currentUser
emit(user)
}
此内容位于身份验证存储库中:
val currentUser: Flow<FirebaseUser?> = firebaseAuthService.currentUser
在ViewModel中,我尝试:
private val _currentUser = authRepository.currentUser.asLiveData(viewModelScope.coroutineContext)
val currentUser: LiveData<FirebaseUser?>
get() = _currentUser
以及
init {
viewModelScope.launch {
authRepository.currentUser.collect{
currentUser = it
}
}
}
1条答案
按热度按时间ghhaqwfi1#
要跟踪用户身份验证状态,必须使用FirebaseAuth.AuthStateListener:
身份验证状态发生更改时调用的侦听器。
这意味着当用户状态发生变化时,无论是从登录到注销还是从注销到登录,您都会立即收到通知。在这种情况下,当涉及到流时,建议使用callbackFlow。因此,要将用户身份验证状态从存储库权限传播到UI,我将使用以下方法: