【发布时间】:2021-01-06 08:26:26
【问题描述】:
我有一个登录表单。我使用StateFlow 将LoginResult(调用API 后)从ViewModel 发送到Activity。在活动中,如果登录失败,我将显示一个错误对话框。
它第一次运行良好,但从我第二次登录失败后,错误对话框将不再显示。我在StateFlow 上测试了.value 和.emit
private val _loginResult = MutableStateFlow(LoginResult())
val loginResult: StateFlow<LoginResult> = _loginResult
fun login(email: String, password: String) {
viewModelScope.launch {
when (val result = loginRepository.login(email, password)) {
is Result.Fail-> {
_loginResult.value = LoginResult(error = "Login failed")
// _loginResult.emit(LoginResult(error = "Login failed")) same issue
}
...
}
}
}
【问题讨论】:
-
StateFlow 不会发出重复值。您可以使用 SharedFlow 来解决您的问题。
-
@OmidFaraji 是的,我已经在我的回答中解决了这个问题。我需要一些时间来解决这个问题,所以我在这里发布它
标签: android kotlin kotlin-stateflow sharedflow