Функция booleanPreferencesKey
Функция booleanPreferencesKey возвращает
Preferences.Key для boolean.
Имя передают в name,
значение пишут через
edit
и читают из снимка
Preferences.
Синтаксис
val key = booleanPreferencesKey("abcde")
Параметры
| Параметр | Описание |
|---|---|
name |
Строковое имя пары в файле prefs. |
Пример
Давайте сохраним true по ключу abcde:
import android.content.Context
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.preferencesDataStore
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch
private val Context.dataStore by preferencesDataStore(name = "prefs")
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val key = booleanPreferencesKey("abcde")
lifecycleScope.launch {
val snapshot = dataStore.edit { it[key] = true }
val res = snapshot[key] == true
setContent {
Text(text = if (res) "12345" else "abcde")
}
}
}
}
В prefs сохранится true,
на экране Text покажет "12345".
Пример
Давайте переключим ключ на false:
import android.content.Context
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.preferencesDataStore
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch
private val Context.dataStore by preferencesDataStore(name = "prefs")
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val key = booleanPreferencesKey("abcde")
lifecycleScope.launch {
dataStore.edit { it[key] = true }
val snapshot = dataStore.edit { it[key] = false }
val res = snapshot[key] == true
setContent {
Text(text = if (res) "12345" else "abcde")
}
}
}
}
После второго edit в prefs будет false,
на экране - "abcde".
Смотрите также
-
метод
putBoolean,
аналог записи boolean в SharedPreferences -
функция
intPreferencesKey,
которой задают int-ключ -
класс
Preferences,
откуда читают boolean -
функция
preferencesDataStore,
которой объявляют dataStore