我正在使用 Jetpack Compose,但我遇到了 TextField
问题:
当我想插入新行时,onValueChange
向我发送了错误的字符串值。
几个步骤来说明:
// Step 1
currentValue : ""
input value : "A"
onValueChange : "A" // OK
// Step 2
currentValue : "A"
input value : "\n"
onValueChange : "A\n" // OK
// Step 3
currentValue : "A\n"
input value : "B"
onValueChange : "AB\n" // Here the "B" isn't inserted at the end, why ?
// Step 4
currentValue : "AB\n"
input value : "C"
onValueChange : "AB\nC" // The "C" is correctly inserted
我使用的是 BasicTextField
,但 TextField
也有同样的错误:
var message by remember { mutableStateOf("") }
BasicTextField(
value = message,
onValueChange = { message = it },
textStyle = TextStyle(fontSize = 15.sp),
decorationBox = { innerTextField ->
if (message.isEmpty())
Text(text = "Enter message")
innerTextField()
}
)
还有其他人面临这个问题吗?
编辑:找到可能的来源
在我的测试中,我遇到了带有 Android 10 自定义 ROM 的小米 Mi8 的问题,但是对于我的 S21U(Android 11 官方),我没有问题。
可能是因为自定义 ROM 或 Android 10。
EDIT2:错误跟踪
这个问题现在被谷歌知道了,他们正在修复: https://issuetracker.google.com/issues/193457105
答案 0 :(得分:0)
尝试删除该 decorationBox
参数。以前真的没见过这种行为