提问人:Dina 提问时间:11/9/2023 更新时间:11/9/2023 访问量:11
在数据库中有数据可用后重新加载或重试 Android Kotlin Flow?
Reload or retry Android Kotlin Flow after data available in database?
问:
我有这个流函数可以从数据库中获取数据。但是第一次加载应用程序时,数据库中没有记录,所以我猜 Flow 是空的。将记录插入数据库后,我需要此流程重新加载或类似的东西来查看新数据。
private var _settingAsync = settingRepository.flowLoadUserSetting(userId).map {
handleSetting(it)
}.catch { emit(Async.Error(R.string.setting_not_found)) }
val uiState: StateFlow<UiStateB> = combine(_settingAsync, _message, _isLoading) { settingAsync, message, isLoading ->
when (settingAsync) {
Async.Loading -> {
UiStateB(isLoading = true)
}
is Async.Error -> {
UiStateB(message = settingAsync.errorMessage)
}
is Async.Success -> {
UiStateB(
alarmOn = settingAsync.data!!.alarmOn,
message = message,
isLoading = isLoading
)
}
}
}
.stateIn(
scope = viewModelScope,
started = WhileUiSubscribed,
initialValue = UiStateB(isLoading = true)
)
我尝试了一些 Flow 解决方案,但不起作用。在另一个组件中,我使用挂起功能,效果很好。
答: 暂无答案
评论