Как получать значения из введённых полей в 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 шт):

Автор решения: Vadik

Напишите функцию, которая будет выполнять некоторое преобразование. Для примера, функция 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 },
)
→ Ссылка