我有一个TextField
用于搜索查询和一个Button
将执行搜索,结果显示在列中。由于搜索需要几秒钟才能运行,我希望它在按钮按下而不是文本更改时执行。
这是一个简化的演示:
Column {
val list = remember { mutableStateListOf<String>() }
val textFieldValue = remember { mutableStateOf(TextFieldValue("")) }
TextField(
value = textFieldValue.value,
onValueChange = { textFieldValue.value = it }
)
Button({
list.clear()
list.addAll(textFieldValue.value.text.split(""))
}) {
Text("Search")
}
list.forEach {
println("test")
Text(it)
}
}
第一次按下按钮后,foreach 循环将在文本更改时运行。即使单击TextField
也会重新运行循环。这不会对文本更改运行搜索,但会重新呈现结果,这会导致在文本字段中键入时出现故障。
如何防止这种情况?