MRa*_*iaz 6 android preferences coroutine kotlin android-jetpack
我已经使用 jetpack compose 为我的 android 应用程序设置了主题。我已将 Application 类 ( TranslateApplication
)中的变量声明为
val isDark = mutableStateOf(false)
Run Code Online (Sandbox Code Playgroud)
我在我的MainActivity.kt
诸如此类中使用此值
setContent {
JetnewsTheme(darkTheme = translateApplication.isDark.value) { ......
Run Code Online (Sandbox Code Playgroud)
现在我想获取isDark
using 首选项数据存储,并且我定义了以下代码。
@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
}
}
Run Code Online (Sandbox Code Playgroud)
首先,我将值分配给isDark
然后使用GlobalScope
inonCreate
来获取preference datastore
,在喷气背包组合中像这样更改主题似乎不是最佳实践。
我的问题是,在 jetPack Compose 中使用 Application Class 获取存储值和更改主题的首选方式是什么。
归档时间: |
|
查看次数: |
488 次 |
最近记录: |