Как получать значения из введённых полей в Jetpack Compose
Как мне получить значения из введенного поля, для дальнейший обработке его вне @Composable?
Например, в XML я использовал findviewbyid.
А как мне к примеру: получить значения введенное например в OutlinedTextField?
Вот у меня есть поля-текста:
@Composable
fun Example(){
val maxChar = 15
var revers by remember { mutableStateOf("") }
OutlinedTextField(
value = revers,
onValueChange = {
if (it.length <= maxChar){
revers = it
}
},
label = { Text("Инверсия")},
placeholder = { Text(text = "Введите символы")},
maxLines = 1,
)
}
Допустим, нужно с введенным значением проделать какие-нибудь манипуляции, а только потом вывести его для пользователя.
Как мне получить введеное значения?
Ответы (1 шт):
Напишите функцию, которая будет выполнять некоторое преобразование. Для примера, функция format будет переводить текст в верхний регистр:
private fun format(value: String): String {
return value.uppercase()
}
Теперь используйте эту функцию в OutlinedTextField:
var rawValue by remember { mutableStateOf("") }
OutlinedTextField(
value = format(rawValue),
onValueChange = { rawValue = it },
)
Если вы хотите хранить в состоянии уже преобразованный текст, то применяйте функцию format в момент присваивания нового значения:
var formattedValue by remember { mutableStateOf("") }
OutlinedTextField(
value = formattedValue,
onValueChange = { formattedValue = format(it) },
)
Если вам необходимо иметь доступ как к старому, так и новому значению, то заведите еще одно состояние, которое будет выводиться из старого:
var rawValue by remember { mutableStateOf("") }
val formattedValue by derivedStateOf { format(rawValue) }
OutlinedTextField(
value = formattedValue,
onValueChange = { rawValue = it },
)