JetPack Compose TextField State не обновляет пользовательский интерфейс при наборахAndroid

Форум для тех, кто программирует под Android
Anonymous
JetPack Compose TextField State не обновляет пользовательский интерфейс при наборах

Сообщение Anonymous »

Я работаю над экраном JetPack Compose, где пользователи вводят заголовок в текстовом поле, и кнопка включена только тогда, когда заголовок не пуст. Проблема заключается в том, что, хотя обновления состояния заголовка (как подтверждено LogCat), пользовательский интерфейс не отражает изменения - текст в текстовом поле не отображается, и кнопка остается отключенной. < /P>
@Composable
fun TitleScreen(
modifier: Modifier = Modifier,
navigateToInitial: () -> Unit,
navigateToHelp: () -> Unit,
navigateToUpload: (Uri, String) -> Unit,
fileUri: Uri
) {
var title by rememberSaveable { mutableStateOf("") }

Column(
modifier = modifier
.fillMaxSize()
.background(White)
.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally
) {
TextField(
value = title,
onValueChange = {
title = it
Log.d("TitleScreen", "New title: $title") // Log shows correct updates
},
label = { Text("Title") },
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
.padding(bottom = 16.dp, start = 16.dp, end = 16.dp)
.clip(CircleShape),
colors = TextFieldDefaults.colors(
unfocusedContainerColor = TextFieldColor,
focusedContainerColor = TextFieldColor,
focusedTextColor = DarkBlack,
unfocusedTextColor = DarkBlack,
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent
),
maxLines = 1
)

Button(
onClick = { navigateToUpload(fileUri, title) },
colors = buttonColors(containerColor = Blue, disabledContainerColor = LightGray),
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 24.dp)
.height(50.dp),
enabled = title.isNotBlank() // Button remains disabled
) {
Text(text = "Next", fontSize = 25.sp, color = White, fontWeight = FontWeight.Bold)
}
}
}
< /code>
Попытки отладки: < /p>
  • Проверено logcat - правильно обновления состояния заголовка. < /li>
    < li> заменен вспоминать, что можно вспомнить - без эффекта. < /li>
    Используется BasicTexfield вместо Textfield - все еще нет обновления пользовательского интерфейса. - Текст обновляется правильно, но Textfield остается пустым. < /Li>
    Используется LaunchEeffect (title) {log.d ("titleScreen", title)} - показывает обновления, но пользовательский интерфейс не меняется.
Почему Textfield не обновляется с новым значением заголовка, и почему кнопка остается отключенной, даже если заголовок обновляется в штате?

Подробнее здесь: https://stackoverflow.com/questions/794 ... hen-typing

Вернуться в «Android»