Метод get
Метод get класса
SavedStateHandle
возвращает сохранённое значение
или null, если ключа нет.
Тип задают generic-параметром,
например get<String>.
Синтаксис
val text = handle.get<String>("label")
Параметры
| Параметр | Описание |
|---|---|
key |
Строковый ключ в хранилище. |
Пример
Давайте покажем значение из handle или запасной текст:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewmodel.compose.viewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val model: ReadViewModel = viewModel()
val text by model.text.collectAsState()
Text(text = text)
}
}
}
class ReadViewModel(
handle: SavedStateHandle,
) : ViewModel() {
private val _text = MutableStateFlow(
handle.get<String>("label") ?: "abcde",
)
val text = _text.asStateFlow()
}
На экране будет "abcde",
если ключ label ещё пуст.
Смотрите также
-
метод
set,
которым записывают значение -
метод
remove,
которым удаляют ключ -
класс
SavedStateHandle,
у которого объявлен get -
функция
rememberSaveable,
которая сохраняет State в UI-слое