Ответ
В Jetpack Compose есть несколько видов State:
- MutableState - базовый наблюдаемый тип состояния. При изменении вызывает рекомпозицию:
var count by remember { mutableStateOf(0) }
-
State - только для чтения версия MutableState.
-
SnapshotStateList/Map - наблюдаемые коллекции:
val list = remember { mutableStateListOf<String>() }
- DerivedState - вычисляемое состояние на основе других состояний:
val showButton by derivedStateOf { list.size > 5 }
- Потоковые состояния - интеграция с Flow/LiveData:
val data by someFlow.collectAsState()
Ключевые особенности:
- Все изменения должны происходить в UI-потоке
- Для сохранения между рекомпозициями используется remember
- Для сохранения между конфигурациями - rememberSaveable