适用于 DataStore 的拓展¶
为了方便用户对 DataStore
进行操作,提供了对应的的拓展方法:
使用拓展方法在 Preferences DataStore 中进行存储¶
创建 Preferences DataStore¶
使用由 preferencesDataStore
创建的属性委托来创建 Datastore<Preferences>
实例。在您的 Kotlin 文件顶层调用该实例一次,便可在应用的所有其余部分通过此属性访问该实例。这样可以更轻松地将 DataStore
保留为单例。
val Context.dataStore: DataStore<Preferences> by
preferencesDataStore(name = "settings")
实现 IDataStoreOwner¶
object ThemeDs : IDataStoreOwner {
override val dataStore: DataStore<Preferences> =
ContextHelper.getAppContext().dataStore
val isDark by boolean(false)
}
从 Preferences DataStore 读取内容¶
下面的示例为你展示了在 Compose
中通过调用 asNotNullFlow
可以将 Boolean
类型数据从 Preferences DataStore
中读出。
val darkTheme by ThemeDs.isDark.asNotNullFlow().collectAsState(false)
将内容写入 Preferences DataStore¶
下面的示例为你展示了在 Compose
中将 Boolean
类型数据写入 Preferences DataStore
中。
val coroutineScope = rememberCoroutineScope()
Switch(checked = darkTheme, onCheckedChange = { value ->
coroutineScope.launch {
ThemeDs.isDark.set(value)
}
})