Проблема:
Когда отображается ModalBottomSheet и я пытаюсь отредактировать любой TextField внутри него, нижний лист автоматически закрывается. Это происходит только в режиме интерактивного предварительного просмотра.
Вот моя текущая реализация:
Код: Выделить всё
data class User(val firstName: String, val lastName: String)
@Composable
fun UserEditor(
user: User,
onUserChanged: ((User) -> Unit)?
){
var firstName by remember { mutableStateOf(user.firstName) }
var lastName by remember { mutableStateOf(user.lastName) }
Column(
modifier = Modifier.fillMaxWidth().verticalScroll(rememberScrollState()),
verticalArrangement = Arrangement.spacedBy(10.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
OutlinedTextField(
value = firstName,
onValueChange = { firstName = it },
label = { Text("First Name") }
)
OutlinedTextField(
value = lastName,
onValueChange = { lastName = it },
label = { Text("Last Name") }
)
TextButton(
onClick = {
onUserChanged?.invoke(User(firstName, lastName))
}
) { Text("Update")}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Preview(showBackground = true)
@Composable
fun UserEditorModalBottomSheetPreview(){
var showUserEditor by remember { mutableStateOf(false) }
var user by remember { mutableStateOf(User("Abc", "Def")) }
AppTheme {
Box(Modifier.fillMaxSize()) {
Text("firstName = ${user.firstName} \nlast Name = ${user.lastName}", Modifier.align(Alignment.Center))
TextButton(
onClick = { showUserEditor = true }
) { Text("Edit") }
}
if(showUserEditor){
ModalBottomSheet(
modifier = Modifier.fillMaxSize(),
onDismissRequest = { showUserEditor = false }
){
UserEditor(
user = user,
onUserChanged = {
user = it
showUserEditor = false
}
)
}
}
}
}

Код отлично работает на реальных устройствах и эмуляторах. Проблема возникает только в режиме интерактивного предварительного просмотра Android Studio. Нижний лист закрывается, как только TextField получает фокус.
Среда:
- Выпадение функций Android Studio Koala | 2024.1.2
- Составить спецификацию 2024.10.01
Подробнее здесь: https://stackoverflow.com/questions/792 ... text-field
Мобильная версия