jetpackCompose mutablestate 不保存状态

问题描述 投票:0回答:1

我有一个身份验证屏幕,其中有 textUser,我记得保存状态,但是当我导航到屏幕,然后通过按后退按钮返回屏幕时,textuser var 由于某种原因被重置。 mutuablestate() 的全部目的不就是解决这个问题吗?

    var textUser by remember { mutableStateOf("") }
 TextField(
                    value = dialCode ?: "+91",
                    onValueChange = { dialCode = it },
                    keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text),
                    modifier = Modifier
//                        .padding(top = 5.dp)
                        .wrapContentWidth()
                        .clickable(onClick = { navController.navigate(NavScreens.Country.route) }),
                    enabled = false,
                    singleLine = true,
                    label = { Text(text = "") },
                    colors = TextFieldDefaults.textFieldColors(
                        containerColor = Color.Transparent,
                        disabledIndicatorColor = Color.Transparent,
                        unfocusedIndicatorColor = Color.Transparent,
                        focusedIndicatorColor = Color.Transparent,
                        focusedLabelColor = Color.Gray,
                        unfocusedLabelColor = Color.Gray
                    ),
                    readOnly = true,
                    textStyle = TextStyle(color = colorResource(id = R.color.login_text_enabled)),
                    interactionSource = remember { MutableInteractionSource() }
                        .also { interactionSource ->
                            LaunchedEffect(interactionSource) {
                                interactionSource.interactions.collect {
                                    if (it is PressInteraction.Release) {
                                        navController.navigate(NavScreens.Country.route)
                                    }
                                }
                            }
                        }
                )
TextField(
                value = textUser,
                onValueChange = { textUser = it },
                keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text),
                label = { Text(text = stringResource(R.string.email_id_or_mobile_number)) },
                modifier = Modifier.padding(start = hidePadding.dp).align(Alignment.BottomCenter)
                    .fillMaxWidth(),
                colors = TextFieldDefaults.textFieldColors(
                    containerColor = Color.Transparent,
                    disabledIndicatorColor = Color.Transparent,
                    unfocusedIndicatorColor = Color.Transparent,
                    focusedIndicatorColor = Color.Transparent,
                    focusedLabelColor = Color.Gray,
                    unfocusedLabelColor = Color.Gray,
                    focusedTrailingIconColor = Color.Gray
                ),
                singleLine = true,
                textStyle = TextStyle(color = colorResource(id = R.color.login_text_enabled))
            )

所以我希望即使返回到身份验证屏幕后,textuser 也具有相同的值

android kotlin navigation android-jetpack-compose android-jetpack-navigation
1个回答
0
投票

使用

rememberSaveable
有助于在方向更改或导航时保持状态。

https://developer.android.com/jetpack/compose/state#restore-ui-state

© www.soinside.com 2019 - 2024. All rights reserved.