Jetpack 撰写为什么 viewstate 数据类

时间:2021-05-28 02:27:52

标签: android android-jetpack-compose

我不明白为什么在很多 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()
}

0 个答案:

没有答案