我不明白为什么在很多 Google 官方示例中,他们使用 Flow combine 功能将 2-10 个不同的流组合成一个视图状态数据对象。 这样做有什么具体原因吗? (除了可能更整洁的代码?)
他们甚至将在按钮 onClick 中设置的布尔值设置为流,以便将布尔值设置为该视图状态对象。 (例如,下面的 selectedCategory 变量在某种 tabview 回调中发生了变化) 就我个人而言,我会将那个布尔变量变成一个 MutableState。我不明白为什么要把它变成一个流...
data class DiscoverViewState(
val categories: List<Category> = emptyList(),
val selectedCategory: Category? = null
)
class DiscoverViewModel(
...
) : ViewModel() {
private val _state = MutableStateFlow(DiscoverViewState())
val state: StateFlow<DiscoverViewState>
get() = _state
}
@Composable
fun Discover(
modifier: Modifier = Modifier
) {
val viewModel: DiscoverViewModel = viewModel()
val viewState by viewModel.state.collectAsState()
}