小编Lit*_*Mik的帖子

当我尝试在 onValueChange 中保存 OutlinedTextField 的值时,打字时光标向左跳一个位置

我在使用 OutlinedTextField 和连接到存储用户设置的数据存储时遇到一些问题。数据已保存并正确读取。但是,更新显示和光标似乎存在问题。当我输入文本时(可能是因为我打字太快),光标向左跳一位。这会破坏输入并且用户体验非常糟糕。

到目前为止我还没有找到解决问题的方法。你知道它可能是什么吗?非常感谢!

这就是我用于 OutlinedTextField 的代码:

OutlinedTextField(
    value = dataStoreState.nickname,
    onValueChange = {
        CoroutineScope(Dispatchers.IO).launch {
            viewModel.saveToDataStore(dataStoreState.copy(nickname = it))
        }
    },
    label = { Text(stringResource(id = R.string.enterNickname)) },
    keyboardOptions = KeyboardOptions.Default.copy(
        keyboardType = KeyboardType.Text,
        imeAction = ImeAction.Done
    ),
    modifier = Modifier.fillMaxWidth()
) 
Run Code Online (Sandbox Code Playgroud)

我尝试将文本值缓存在另一个变量中,但没有效果。然后我尝试更改保存功能,但我在这里也找不到正确的解决方案。

android-jetpack-compose android-jetpack-datastore

4
推荐指数
1
解决办法
899
查看次数