fix: 修复夜间模式异常

This commit is contained in:
HuanCheng65 2022-12-31 16:02:30 +08:00
parent bbcb486342
commit 0e91950519
No known key found for this signature in database
GPG Key ID: E9031EF91A805148
2 changed files with 20 additions and 3 deletions

View File

@ -1,9 +1,11 @@
package com.huanchengfly.tieba.post
import android.annotation.SuppressLint
import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
import androidx.datastore.core.DataMigration
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.SharedPreferencesMigration
import androidx.datastore.preferences.core.*
@ -23,10 +25,26 @@ object DataStoreConst {
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(
name = DataStoreConst.DATA_STORE_NAME,
produceMigrations = { context ->
listOf(SharedPreferencesMigration(context, "settings"))
listOf(
SharedPreferencesMigration(context, "settings"),
object : DataMigration<Preferences> {
override suspend fun cleanUp() {}
override suspend fun migrate(currentData: Preferences): Preferences {
return currentData.toMutablePreferences().apply {
set(stringPreferencesKey("dark_theme"), "grey_dark")
}.toPreferences()
}
override suspend fun shouldMigrate(currentData: Preferences): Boolean {
return currentData[stringPreferencesKey("dark_theme")] == "dark"
}
}
)
}
)
@SuppressLint("FlowOperatorInvokedInComposition")
@Composable
fun <T> DataStore<Preferences>.collectPreferenceAsState(key: Preferences.Key<T>, defaultValue: T): State<T> {
return data.map { it[key] ?: defaultValue }.collectAsState(initial = defaultValue)

View File

@ -70,7 +70,7 @@ open class AppPreferencesUtils(context: Context) {
defaultValue = "0"
)
var darkTheme by DataStoreDelegates.string(key = "dark_theme", defaultValue = "dark")
var darkTheme by DataStoreDelegates.string(key = "dark_theme", defaultValue = "grey_dark")
var followSystemNight by DataStoreDelegates.boolean(
defaultValue = true,
@ -365,7 +365,6 @@ open class AppPreferencesUtils(context: Context) {
}
}
}
}
val Context.appPreferences: AppPreferencesUtils