在viewModel Jetpack compose中_uistate1 . stateflow()和_uiState1



在下面的代码中,显示了两个不同的公共状态处理程序uiState1uiState,这两个场景之间的区别是什么?

// UI state exposed to the UI
// Scenario 1
private val _uiState1: MutableStateFlow<InboxUiState> = MutableStateFlow(InboxUiState.default)
val uiState1 = _uiState1.asStateFlow()
// Scenario 2
private val _uiState: MutableStateFlow<InboxUiState> = MutableStateFlow(InboxUiState.default)
val uiState = _uiState
.stateIn(
viewModelScope,
SharingStarted.Eagerly,
InboxUiState.default
)

其中asStateFlow()将可修改的状态流表示为只读的状态流stateIn()him转换为冷的转换成hotStateFlow在给定的协程范围内启动。

stateIn操作符在以下情况下非常有用:存在冷流,该流提供对某些状态值的更新,并且创建和/或维护的成本很高,但是有多个订阅者需要收集最新的状态值。

stateIn: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/state-in.html

asStateFlow: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/as-state-flow.html

相关内容

  • 没有找到相关文章

最新更新