3

我想TextField绑定到MutableStateFlow来自视图模型的 a 。这就是我的设置方式:

@Composable
fun MyTextField(textFlow: MutableStateFlow<String>) {
    val state = textFlow.collectAsState(initial = "")
    TextField(
        value = TextFieldValue(state.value),
        onValueChange = { textFlow.value = it.text },
        label = { Text(text = "Label") }
    )
}

当我在文本字段中输入内容时,它的行为非常奇怪。例如,如果我输入“asd”,它会以“asdasa”结尾。如何在textFlow.value不弄乱文本字段的情况下进行更新?

4

1 回答 1

1

此错误是由使用TextFieldValuewith引起的Flow

要解决此问题,请将 的 设置valueTextFieldjust state.value,然后在文本更改时将值设置为textFlow.value = it

@Composable
fun MyTextField(textFlow: MutableStateFlow<String>) {
    val state = textFlow.collectAsState(initial = "")
    TextField(
        value = state.value,
        onValueChange = { textFlow.value = it },
        label = { Text(text = "Label") }
    )
}
于 2021-11-12T16:46:42.310 回答