Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
319 of 502 menu
◀ ▶

Функция mutableStateOf

Функция mutableStateOf оборачивает значение в MutableState. Когда поле value меняют, Compose перерисовывает composable, которые это значение читают. Обычно вызов кладут в remember, чтобы объект не создавали заново каждый кадр.

Синтаксис

var text by mutableStateOf("abcde")

Параметры

Параметр Описание
value Начальное значение состояния.
policy Политика сравнения. Решает, считать ли новое значение изменением. По умолчанию используется структурное равенство.

Пример

Давайте переключим текст по кнопке:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var text by remember { mutableStateOf("abcde") } Button(onClick = { text = if (text == "abcde") "12345" else "abcde" }) { Text(text = "abcde") } Text(text = text) } } }

На экране под кнопкой будет строка, которая меняется между "abcde" и "12345".

Пример

Давайте заведём два независимых состояния:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var first by remember { mutableStateOf("abcde") } var second by remember { mutableStateOf("12345") } Column { Button(onClick = { first = "12345" }) { Text(text = "abcde") } Text(text = first) Text(text = second) } } } }

На экране изменится только первая строка, вторая останется "12345".

Смотрите также

  • класс MutableState,
    который возвращает эта функция
  • класс State,
    родительский интерфейс только для чтения
  • функция remember,
    где хранят объект состояния
  • функция collectAsState,
    которая превращает Flow в State
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить