You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中向导式页面的共享UI状态管理方案咨询

关于Jetpack Compose向导式页面共享状态的疑问

根据Jetpack Compose指南,每个页面都应拥有独立的UI状态及对应的ViewModel

UI data flow

假设我有一套向导式页面,用户在Screen A、B、C中输入数据,最后进入Screen D查看汇总信息。所有数据均为本地输入和管理,除Screen D外其他页面无需数据层。

各页面的ViewModel结构如下:

data class Screen{X}UiState(
    myString: String?
)

class Screen{X}ViewModel: ViewModel() {
     private val _uiState = MutableStateFlow(Screen{X}UiState())
     val uiState = _uiState.toStateFlow()

     fun mySetterMethod(myValue: String?) {
           _uiState.update { itCopy(myString = myValue) }
     }
}

当进入Screen D时,我需要展示Screen A、B、C中输入的所有数据。按技术逻辑,我认为应将共享状态提升至NavHost(最低公共父组件),这意味着除了在mySetterMethod中更新当前页面状态外,还需将更新后的状态传递给NavHost。请问我的理解是否正确?

NavHost(
        startDestination = "ScreenA"
) {
        val screenDUiState = MutableStateFlow(ScreenDUiState())
        composable(route = "ScreenA") {
            ScreenA()
        }
        composable(route = "ScreenB") {
            ScreenB()
        }
        composable(route = "ScreenC") {
            ScreenC()
        }
        composable(route = "ScreenD") {
            ScreenD(screenDUiState)
        }
}

内容的提问来源于stack exchange,提问作者SilleBille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:40:09