Kotlin StateFlow не собирается после начального значения

В моих моделях просмотра я раскрываю 2 потока состояний следующим образом

        val viewState: StateFlow<List<ItemRow>> =
    getFirstFlow().combine(getSecondFlow()) { data1: Set<Int>, data2: String ->
      buildResult(data1,data2)
    }.stateIn(viewModelScope, SharingStarted.Lazily, getInitValue())

  private val action = MutableStateFlow<Event<DiscoveryAction>>(Event(DiscoveryAction.NoAction))

А во фрагменте я их собираю следующим образом

        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    lifecycleScope.launchWhenStarted {
      viewModel.viewState.collectLatest { 
        Timber.d("Value Received $it")
      }
    }
    lifecycleScope.launchWhenStarted {
      viewModel.action.collectLatest { 
        Timber.d("Action Received $it")
      }
    }
  }

Ожидаемая функциональность заключается в том, что всякий раз, когда getFirstFlow() или же getSecondFlow() выбрасывать предметы, комбинированные viewStateвыдаст результат. Отладка показала, что все работает как положено, но блок внутри collectLatestвызывается только в первый раз и не вызывается для следующих значений. Однако код будет вызываться с последним значением, если я перейду к другому фрагменту, а затем вернусь к нему.

0 ответов

Другие вопросы по тегам