相关疑难解决方法(0)

如何绑定ViewModel生命周期来撰写

我现在正在使用 Jetpack Compose。我意识到我可以在可组合项中使用 ViewModel 并在可组合项中初始化视图模型,如下所示:

val myViewModel:MyViewModel = viewModel()
Run Code Online (Sandbox Code Playgroud)

但存在一个问题,即使未显示可组合项,这些视图模型也永远不会被销毁。

例如,我有一个主可组合屏幕,它根据用户交互加载一些其他屏幕,如下所示:

@Composable
fun MainAuthentication(viewModel: MainViewModel) {
    val state = viewModel.state.value
    val scope = rememberCoroutineScope()
    val scaffoldState = rememberScaffoldState()
    Scaffold(scaffoldState = scaffoldState)
    {

        //--------------------(login and sign up button)--------------------//
        Row(
            modifier = Modifier
                .padding(top = 50.dp)
                .fillMaxSize(),
            verticalAlignment = Alignment.CenterVertically,
        ) {
            if (!state.signUpFormIsVisible && !state.loginFormIsVisible) {
                Button(
                    onClick = {
                        viewModel.onEvent(event = MainEvent.LoginButtonClick)
                    },
                    modifier = Modifier
                        .padding(10.dp)
                        .weight(0.5f)
                ) {
                    Text(text = stringResource(id = R.string.login))
                }

                Button(
                    onClick = { …
Run Code Online (Sandbox Code Playgroud)

viewmodel android-lifecycle kotlin android-jetpack-compose

8
推荐指数
1
解决办法
6019
查看次数