如何在JetPackComposeAndroid的应用程序类中使用首选项数据存储来更改主题?
我已经使用 jetpack compose 为我的 android 应用程序设置了主题。我已将 Application 类 ( TranslateApplication)中的变量声明为
val isDark = mutableStateOf(false)
我在我的MainActivity.kt诸如此类中使用此值
setContent {
JetnewsTheme(darkTheme = translateApplication.isDark.value) { ......
现在我想获取isDarkusing 首选项数据存储,并且我定义了以下代码。
@HiltAndroidApp
class TranslateApplication: Application(){
val android.content.Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = Constants.SETTINGS)
val isDark = mutableStateOf(false)
override fun onCreate() {
super.onCreate()
GlobalScope.launch {
read()
}
}
suspend fun read() {
val dataStoreKey = booleanPreferencesKey(Constants.THEME)
val preferences = dataStore.data.first()
isDark.value = preferences[dataStoreKey] ?: false
}
}
首先,我将值分配给isDark 然后使用GlobalScopeinonCreate来获取preference datastore,在喷气背包组合中像这样更改主题似乎不是最佳实践。
我的问题是,在 jetPack Compose 中使用 Application Class 获取存储值和更改主题的首选方式是什么。
THE END
二维码