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
вызывается только в первый раз и не вызывается для следующих значений. Однако код будет вызываться с последним значением, если я перейду к другому фрагменту, а затем вернусь к нему.