在数据库中有数据可用后重新加载或重试 Android Kotlin Flow?

Reload or retry Android Kotlin Flow after data available in database?

提问人:Dina 提问时间:11/9/2023 更新时间:11/9/2023 访问量:11

问:

我有这个流函数可以从数据库中获取数据。但是第一次加载应用程序时,数据库中没有记录,所以我猜 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 解决方案,但不起作用。在另一个组件中,我使用挂起功能,效果很好。

Android Kotlin Kotlin-Flow

评论


答: 暂无答案