我写了一个outlinedTextField,onValueChange中的“it”不能沿着标签文本工作
无法读取,文本也显示错误。
val usernameState = rememberSaveable{ mutableStateOf(TextFieldValue) }
OutlinedTextField(
value = usernameState.value,
onValueChange = { usernameState.value = it },
label = { Text(text = "username")}
)
这是调用概述文本字段并设置它的错误:
不能使用提供的参数调用以下函数: public fun OutlinedTextField(value: TextFieldValue, onValueChange: (TextFieldValue) -> Unit, 修饰符: Modifier = ..., 启用: Boolean = ..., readOnly: Boolean = ..., textStyle: TextStyle = ..., label : (() -> 单位)? = ..., 占位符: (() -> 单位)? = ..., 前导图标: (() -> 单位) = ..., 尾随图标: (() - > 单位)?= ...,isError:布尔= ...,视觉变换:视觉变换= ...,键盘选项:键盘选项= ...,键盘操作:键盘操作= ...,singleLine:布尔= ...,maxLines :Int = ...,interactionSource:MutableInteractionSource = ...,shape:Shape = ...,颜色:TextFieldColors = ...):在androidx.compose.material中定义的单位 public fun OutlinedTextField(value: String, onValueChange: (String) -> Unit, 修饰符: Modifier = ..., 启用: Boolean = ..., readOnly: Boolean = ..., textStyle: TextStyle = ..., label : (() -> 单位)? = ..., 占位符: (() -> 单位)? = ..., 前导图标: (() -> 单位) = ..., 尾随图标: (() - > 单位)?= ...,isError:布尔= ...,视觉变换:视觉变换= ...,键盘选项:键盘选项= ...,键盘操作:键盘操作= ...,singleLine:布尔= ...,maxLines :Int = ...,interactionSource:MutableInteractionSource = ...,shape:Shape = ...,颜色:TextFieldColors = ...):在androidx.compose.material中定义的单位
您可以使用
remember
as 来完成此操作
val usernameState = remember { mutableStateOf(TextFieldValue) }
OutlinedTextField(
value = usernameState.value,
onValueChange = { usernameState.value = it },
label = { Text(text = "username")}
)
或者您可以使用 Kotlin 委托作为
val username by remember { mutableStateOf(TextFieldValue) }
OutlinedTextField(
value = username,
onValueChange = {username = it},
label = {Text(text = "username")}
)
MutableState 默认没有 getter 和 setter。要使用 Kotlin 委托,您必须导入必要的 getter 和 setter(IDE 建议),它们是 MutableState 的扩展函数
您需要提供
String
作为您在此处使用的签名的值。因此,您传递的值参数应该是 unserNameState.value.value
。第一个值是从MutableState
中提取状态值,第二个是从String
中提取TextFieldValue
。另外,您需要通过添加括号来初始化 TextFieldValue
的构造函数。
我的建议是您采用最简单的方法。
var uns by remeberSaveable{ mutableStateOf("") } // Use 'by' to treat this state as a regular variable
OutlinedTextField(
value = uns, // As simple as that
onValueChange = { uns = it },
label = { Text("User Name") }
)
考虑参加 codelabs 来更好地全面了解 Compose。
到目前为止你在月球上雕刻了什么?