Compose TextField在获得焦点时清除值



我有一个可组合的函数,它显示2个TextFields。这是我的代码:

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不是在现有文本的光标位置插入/附加字符,而是完全清除现有文本(设置为预焦点(,然后"重新开始"。也就是说,每个TextField只记住在当前"焦点会话"中输入的文本。

我做错了吗?或者这是Compose中的一个错误?我在1.0.0-beta071.0.0-beta08上都复制了这种行为。

事实证明,这本身不是Compose错误,而是模拟器问题。在实际设备上运行完全相同的代码并没有遇到这个问题。

遇到此问题的模拟器是运行在macOS Big Sur上的API 30。我还没有测试其他系统是否也受到这个模拟器错误的影响。

最新更新