У меня есть BasicTextField в одном из моих просмотров. Я показываю программную клавиатуру по умолчанию, и когда я начинаю вводить буквы на клавиатуре, в BasicTextField ничего не отображается, так как у него нет курсора.
Чтобы сделать мои действия с клавиатурой видимыми, мне нужно нажать на TextField, чтобы сделать курсор видимым. Теперь, когда я нажимаю на клавиатуру, я вижу результат в BasicTextField.
Как я могу открыть BasicTextField с активным мигающим курсором?
Обновлено: предлагаемое решение отсюда у меня не сработал
val focusRequester = FocusRequester()
val keyboardController = LocalSoftwareKeyboardController.current
//..
.focusRequester(focusRequester)
.onFocusChanged {
if (it.isFocused) {
keyboardController?.show()
}
}
Не активировал курсор и не показывал клавиатуру. В дополнение к этому
DisposableEffect(Unit) {
focusRequester.requestFocus()
onDispose { }
}
приводит к сбою:
java.lang.IllegalStateException: FocusRequester is not initialized. Here are some possible fixes:
1. Remember the FocusRequester: val focusRequester = remember { FocusRequester() } 2. Did you forget to add a Modifier.focusRequester() ? 3. Are you attempting to request focus during composition? Focus requests should be made in response to some event. Eg Modifier.clickable { focusRequester.requestFocus() } at androidx.compose.ui.focus.FocusRequester.requestFocus(FocusRequester.kt:54)
@PhilipDukhov Я изменил ОП
Почему вы не следуете «возможным исправлениям»? Особенно первый.
@PhilipDukhov В предоставленной вами ссылке точно есть 1 ответ от GabrieleMariotti, и я применил его.





У меня это работает:
val focusRequester = FocusRequester()
//..
.focusRequester(focusRequester)
и вместо
DisposableEffect(Unit) {
focusRequester.requestFocus()
onDispose { }
}
я использовал
LaunchedEffect(Unit) {
if (isFocused){
focusRequester.requestFocus()
}
}
это отвечает на ваш вопрос?