我目前正在开发一个 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个或更多,代码量就会变得笨重,并且管理点也会过多。 我的问题是:
当部分数量很大且动态时,管理 ViewModel 中多个部分状态的最有效方法是什么?
如何减少大量类似部分的代码重复并简化状态管理?
有什么设计模式或架构方法可以在这种情况下提供帮助吗?
我正在寻找一种能够保持每个部分状态的独立性,同时具有可扩展性和可管理性的解决方案。任何见解或最佳实践将不胜感激。
你是对的,对于许多州来说这是一种耗时的方式。也许在状态下使用
List
或 Map
就足够了。最终方式取决于您的需求。最简单的解决方案是使用类似的东西
data class StateReady(val sections: List<SectionUiState>) : UiState
然后基于
sections
(也许是 Recycler?)生成 ui 部分