kotlin 如何使用jetpack compose清除ViewModel?

fv2wmkja  于 2023-04-21  发布在  Kotlin
关注(0)|答案(1)|浏览(205)

如何在特定事件中清除ViewModel?我正在使用撰写导航。在单击“返回按钮”的时刻。我想重置ViewModel。但是如果我检查uiState,当我进入屏幕时。
1.准备-〉空闲(正确)-〉返回
1.(重新输入)空闲-〉返回
1.(重新输入)空闲-〉返回
我在'go back event'调用了这个函数,但它不清楚。

// ViewModel
fun clear() = viewModelScope.launch {
    onCleared()
}

我也试过这个,但没有工作。

DisposableEffect(Unit){
    onDispose {
        viewModel.clear()
    }
}

但是我不应该使用这个,因为数据应该在我下一次访问时保留(而不是返回),当用户返回时,数据应该被恢复。
有人说,我不需要管理ViewModel,导航会管理它。但它没有被清除。我用它来“返回”

navController.navigateToHome(
    navOptions {
        popUpTo(homeGraphRoutePattern)
    }
)

这是错的吗?

lymnna71

lymnna711#

Navigation处理ViewModel。并且Screen的导航范围错误。
之前:

@Composable
fun MyRoute(
    ...
    moveToOrder: () -> Unit,
    moveToBack: () -> Unit,
    viewModel: MyViewModel = hiltViewModel(LocalContext.current as MainActivity),
){
  // content
}

之后:

@Composable
fun MyRoute(
    ...
    moveToOrder: () -> Unit,
    moveToBack: () -> Unit,
    viewModel: MyViewModel = hiltViewModel(),
){
  // content
}

相关问题