0Pricing
Android Academy · Урок

Состояние с remember и mutableStateOf

Храните состояние пользовательского интерфейса в компонуемых элементах

«Состояние с remember и mutableStateOf» — бесплатный урок Android Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.

Что такое состояние?

Состояние — это любое значение, которое может меняться со временем и на которое должен реагировать пользовательский интерфейс: счётчик, содержимое текстового поля, состояние флажка. Когда состояние меняется, Compose перерисовывает интерфейс.

mutableStateOf

mutableStateOf создаёт наблюдаемое значение. Когда Вы записываете в него новое значение, Compose понимает, что нужно повторно запустить все компонуемые элементы, которые его читали.

val count = mutableStateOf(0)
// read with count.value, write with count.value = 1

Зачем нужен remember?

Компонуемые элементы могут выполняться много раз (рекомпозиция). Если создавать состояние при каждом выполнении, оно будет каждый раз сбрасываться. remember сообщает Compose, что нужно сохранять значение между рекомпозициями.

val count = remember { mutableStateOf(0) }

Делегат by

Постоянное чтение и запись .value делает код громоздким. Делегат свойства Kotlin by позволяет обращаться с состоянием как с обычной переменной.

var count by remember { mutableStateOf(0) }
// now use count directly, no .value

Необходимые импорты

Чтобы использовать делегат by, импортируйте вспомогательные средства для получения и установки значения. Android Studio добавляет их автоматически.

import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember

Компонуемый счётчик

Вот работающий счётчик. Нажатие кнопки увеличивает count, а Text обновляется автоматически.

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    Button(onClick = { count++ }) {
        Text(text = "Count: $count")
    }
}

Чтение вызывает обновление

В этом и заключается особенность: Text читает count. Compose фиксирует это чтение, поэтому при изменении count рекомпозируется только соответствующая часть и отображается новое значение.

Состояние может хранить любой тип

Состояние нужно не только для чисел. В нём можно хранить String, Boolean, список или собственный класс данных.

var name by remember { mutableStateOf("") }
var isOn by remember { mutableStateOf(false) }

TextField с состоянием

Редактируемому текстовому полю нужно состояние для текущего значения и обратный вызов для его обновления.

var text by remember { mutableStateOf("") }
TextField(
    value = text,
    onValueChange = { text = it }
)

Состояние является локальным

Состояние, созданное с помощью remember, существует внутри компонуемого элемента. Два вызова Counter() имеют собственные независимые значения счётчика.

Полный пример

Полный экран счётчика, объединяющий всё из этого урока.

@Composable
fun CounterScreen() {
    var count by remember { mutableStateOf(0) }
    Column {
        Text(text = "You tapped $count times")
        Button(onClick = { count++ }) {
            Text(text = "Tap")
        }
    }
}

Быстрая проверка

Зачем оборачивать mutableStateOf в remember?

Повторение

Основы состояния:

  • mutableStateOf создаёт наблюдаемое значение.
  • remember сохраняет его между рекомпозициями.
  • by позволяет не использовать .value.
  • Чтение состояния подписывает компонуемый элемент на его изменения.

Часто задаваемые вопросы

Урок «Состояние с remember и mutableStateOf» бесплатный?

Да — полный текст урока «Состояние с remember и mutableStateOf» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.

Чему я научусь в уроке «Состояние с remember и mutableStateOf»?

Храните состояние пользовательского интерфейса в компонуемых элементах Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Android Academy?

Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Состояние с remember и mutableStateOf»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Android Academy?

Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Состояние с remember и mutableStateOf
  2. Рекомпозиция: объяснение
  3. Подъём состояния
  4. rememberSaveable
← Назад к Android Academy