Android 跨屏幕正确确定ViewModel的范围

Android 跨屏幕正确确定ViewModel的范围,android,android-viewmodel,android-navigation,android-jetpack-compose,Android,Android Viewmodel,Android Navigation,Android Jetpack Compose,假设我们有一个跨多个屏幕的注册表单,例如: 因此,我创建了一个跨越这些屏幕的范围视图模型: 问题在于,由于状态的作用域是跨屏幕的,因此: PersonalInfo屏幕->设置用户名屏幕->(按下)个人信息屏幕如下所示: 请注意,username状态被保留(因为ViewModel的作用域横跨整个流)。因此,当用户返回到设置用户名屏幕而不是空白状态时,它将保留以前的状态。(但我需要它被清除) 所以我真正需要的是: 能够知道before屏幕是否被完全处理(不是因为设备配置更改或它将返回后台),

假设我们有一个跨多个屏幕的注册表单,例如:

因此,我创建了一个跨越这些屏幕的范围视图模型:

问题在于,由于状态的作用域是跨屏幕的,因此:
PersonalInfo屏幕->设置用户名屏幕->(按下)个人信息屏幕
如下所示:

请注意,
username
状态被保留(因为ViewModel的作用域横跨整个流)。因此,当用户返回到
设置用户名屏幕
而不是空白状态时,它将保留以前的状态。(但我需要它被清除)

所以我真正需要的是:

  • 能够知道before屏幕是否被完全处理(不是因为设备配置更改或它将返回后台),因此我可以手动清除状态

  • 或者像这样做:

  • 这意味着将嵌套导航置于嵌套导航之上(我认为这不是正确的方法?)

  • 另一种选择是让ViewModel只在屏幕上显示,并在导航过程中跨屏幕传递状态,但我发现这非常繁琐,特别是在多个屏幕上有很多状态要传递时

  • 我错过什么了吗?有什么建议吗?

    我知道这可能就是一个例子。但在建议的“输入并查看”流程中,保留这些信息通常非常重要,这样用户就不必在发现错误后重新输入所有内容。这当然是另一种情况,当选择取决于以前的数据时,在这种情况下有许多解决方案。我个人会选择单视图模型,其中更改“基础”数据将清除“依赖项”