gpt4 book ai didi

android - 如何检测用户是否停止写入 TextField?

转载 作者:行者123 更新时间:2023-12-04 23:47:17 25 4
gpt4 key购买 nike

我有一个带有 Jetpack Compose 的屏幕,其中有一个 TextField 供用户编写文本。
使用此文本,我将进行查询以获取数据。我希望在用户完成输入后进行此查询。
有没有办法知道用户是否需要 2 秒而不写(例如)来启动这个查询?

最佳答案

要在用户停止输入 2 秒后查询,我认为您可以使用 debounce 运算符(与此处的答案类似的想法 Jetpack Compose and Room DB: Performance overhead of auto-saving user input? )
这是处理 TextField 上的文本更改的示例,然后查询数据库并将结果返回到dbText

class VM : ViewModel() {
val text = MutableStateFlow("")
val dbText = text.debounce(2000)
.distinctUntilChanged()
.flatMapLatest {
queryFromDb(it)
}

private fun queryFromDb(query: String): Flow<String> {
Log.i("TAG", "query from db: " + query)
if (query.isEmpty()) {
return flowOf("Empty Result")
}
// TODO, do query from DB and return result
}
}
Composable
Column {
val text by viewModel.text.collectAsState()
val dbText by viewModel.dbText.collectAsState("Empty Result")

TextField(value = text, onValueChange = { viewModel.text.value = it })
Text(text = dbText)
}

关于android - 如何检测用户是否停止写入 TextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70645803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com