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 package com.huanchengfly.tieba.post
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.datastore.core.DataMigration
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.SharedPreferencesMigration import androidx.datastore.preferences.SharedPreferencesMigration
import androidx.datastore.preferences.core.* import androidx.datastore.preferences.core.*
@ -23,10 +25,26 @@ object DataStoreConst {
val Context.dataStore: DataStore<Preferences> by preferencesDataStore( val Context.dataStore: DataStore<Preferences> by preferencesDataStore(
name = DataStoreConst.DATA_STORE_NAME, name = DataStoreConst.DATA_STORE_NAME,
produceMigrations = { context -> 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 @Composable
fun <T> DataStore<Preferences>.collectPreferenceAsState(key: Preferences.Key<T>, defaultValue: T): State<T> { fun <T> DataStore<Preferences>.collectPreferenceAsState(key: Preferences.Key<T>, defaultValue: T): State<T> {
return data.map { it[key] ?: defaultValue }.collectAsState(initial = defaultValue) return data.map { it[key] ?: defaultValue }.collectAsState(initial = defaultValue)

View File

@ -70,7 +70,7 @@ open class AppPreferencesUtils(context: Context) {
defaultValue = "0" 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( var followSystemNight by DataStoreDelegates.boolean(
defaultValue = true, defaultValue = true,
@ -365,7 +365,6 @@ open class AppPreferencesUtils(context: Context) {
} }
} }
} }
} }
val Context.appPreferences: AppPreferencesUtils val Context.appPreferences: AppPreferencesUtils