如何管理多个部分的 uiState?

问题描述 投票:0回答:1

我目前正在开发一个 Android 应用程序,可以显示电影列表的多个部分。每个部分的 UI 状态都是使用 ViewModel 中单独的 StateFlow 独立管理的。这是我当前方法的简化版本:

class MovieViewModel : ViewModel() {
    private val _section1State = MutableStateFlow<UiState>(UiState.Loading)
    val section1State: StateFlow<UiState> = _section1State.asStateFlow()

    private val _section2State = MutableStateFlow<UiState>(UiState.Loading)
    val section2State: StateFlow<UiState> = _section2State.asStateFlow()

    // ... more sections ...

    // Functions to update each section
}

这对于少数部分来说效果很好,但我担心可扩展性。如果节的数量增长到100个或更多,代码量就会变得笨重,并且管理点也会过多。 我的问题是:

  1. 当部分数量很大且动态时,管理 ViewModel 中多个部分状态的最有效方法是什么?

  2. 如何减少大量类似部分的代码重复并简化状态管理?

  3. 有什么设计模式或架构方法可以在这种情况下提供帮助吗?

我正在寻找一种能够保持每个部分状态的独立性,同时具有可扩展性和可管理性的解决方案。任何见解或最佳实践将不胜感激。

android mvvm android-jetpack-compose kotlin-coroutines kotlin-stateflow
1个回答
0
投票

你是对的,对于许多州来说这是一种耗时的方式。也许在状态下使用

List
Map
就足够了。最终方式取决于您的需求。最简单的解决方案是使用类似的东西

data class StateReady(val sections: List<SectionUiState>) : UiState

然后基于

sections
(也许是 Recycler?)生成 ui 部分

© www.soinside.com 2019 - 2024. All rights reserved.