Compose TextField 在获得焦点时清除值
Compose TextField clears value on gaining focus
我有一个显示 2 TextField
的可组合函数。这是我的代码:
fun CreateEntryItem() {
var wordA by remember { mutableStateOf("") }
var wordB by remember { mutableStateOf("") }
Column {
Row {
TextField(
value = wordA,
onValueChange = { wordA = it },
enabled = true,
modifier = Modifier.weight(1f)
)
TextField(
value = wordB,
onValueChange = { wordB = it },
enabled = true,
modifier = Modifier.weight(1f)
)
}
}
}
当我将焦点放在 TextField A 上时,我可以键入并且 wordA
的值会正确更新。
这是奇怪的行为:
然后我将焦点移至 TextField B。然后我将焦点移回 TextField A。当我开始键入时,TextField A 不会在现有文本的光标位置插入/附加字符,而是完全清除现有文本(如设置的预聚焦)和 'starts afresh'。也就是说,每个TextField只记住当前输入的文本'focus session'.
我做错了吗?或者这是 Compose 中的错误?我在 1.0.0-beta07
和 1.0.0-beta08
.
上重现了这种行为
事实证明,这本身并不是 Compose 错误,而是模拟器问题。 运行 真实设备上完全相同的代码没有 运行 进入这个问题。
遇到此问题的模拟器是 API 30 运行ning on macOS Big Sur。我还没有测试其他系统是否也受到这个模拟器错误的影响。
我有一个显示 2 TextField
的可组合函数。这是我的代码:
fun CreateEntryItem() {
var wordA by remember { mutableStateOf("") }
var wordB by remember { mutableStateOf("") }
Column {
Row {
TextField(
value = wordA,
onValueChange = { wordA = it },
enabled = true,
modifier = Modifier.weight(1f)
)
TextField(
value = wordB,
onValueChange = { wordB = it },
enabled = true,
modifier = Modifier.weight(1f)
)
}
}
}
当我将焦点放在 TextField A 上时,我可以键入并且 wordA
的值会正确更新。
这是奇怪的行为:
然后我将焦点移至 TextField B。然后我将焦点移回 TextField A。当我开始键入时,TextField A 不会在现有文本的光标位置插入/附加字符,而是完全清除现有文本(如设置的预聚焦)和 'starts afresh'。也就是说,每个TextField只记住当前输入的文本'focus session'.
我做错了吗?或者这是 Compose 中的错误?我在 1.0.0-beta07
和 1.0.0-beta08
.
事实证明,这本身并不是 Compose 错误,而是模拟器问题。 运行 真实设备上完全相同的代码没有 运行 进入这个问题。
遇到此问题的模拟器是 API 30 运行ning on macOS Big Sur。我还没有测试其他系统是否也受到这个模拟器错误的影响。