Код IT
← Каталог

Jetpack Compose — первый экран — ViewModel — состояние переживает поворот

Фрагмент из «Jetpack Compose — первый экран»: ViewModel — состояние переживает поворот.

Kotlin main.kt

import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update

data class CounterUiState(val count: Int = 0)

class CounterViewModel : ViewModel() {
    private val _state = MutableStateFlow(CounterUiState())
    val state: StateFlow<CounterUiState> = _state.asStateFlow()

    fun increment() = _state.update { it.copy(count = it.count + 1) }
    fun reset() = _state.update { CounterUiState() }
}

import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update

data class CounterUiState(val count: Int = 0)

class CounterViewModel : ViewModel() {
    private val _state = MutableStateFlow(CounterUiState())
    val state: StateFlow<CounterUiState> = _state.asStateFlow()

    fun increment() = _state.update { it.copy(count = it.count + 1) }
    fun reset() = _state.update { CounterUiState() }
}