【发布时间】:2022-12-06 07:51:46
【问题描述】:
我正在构建一个使用 Compose 和 Navigation 的 Android 应用程序。在一个屏幕上,我有几个表单字段,每个表单字段都有自己的可组合函数,我想存储其中的值。我已经设法对主屏幕功能中的单个表单字段执行此操作,如 this example 所示:
@Composable
fun Screen1(navController: NavController) {
val context = LocalContext.current
val scope = rememberCoroutineScope()
val dataStoreName = StoreName(context)
val savedName = dataStoreName.getValue.collectAsState(initial = "")
Column( ) {
val patientName = remember { mutableStateOf("") }
Button(onClick = {scope.launch {dataStoreName.saveValue(patientName.value)}
navController.navigate(Screen.Screen2.route) }) {
Text(text = "Save & Next")}
OutlinedTextField( value = patientName.value,
label = { Text(text = "Name") },
onValueChange = { patientName.value = it })
Text(text = "Current information stored: " + savedName.value) } }
但是,当我在自己的可组合函数中有多个字段时,我不清楚如何调整它。当我将 mutableState 变量放在文本字段函数中时,保存按钮中的代码无法识别它,而当我将它放在外面时,文本字段函数无法识别该变量... 这是我现在拥有的文本字段函数之一,我将在 Screen1 函数的列内调用它:
@Composable
fun PatientNameField() {
val patientName by remember { mutableStateOf(TextFieldValue("")) }
OutlinedTextField(
value = patientName.value,
label = { Text(text = "Name") },
onValueChange = { patientName.value = it } )
}
【问题讨论】:
标签: android-jetpack-compose android-jetpack-navigation android-jetpack-datastore