feat: 添加深色模式支持,优化图片查看器滑动切换
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.memory.app.data
|
||||
|
||||
import android.content.Context
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
|
||||
enum class ThemeMode {
|
||||
LIGHT, DARK, SYSTEM
|
||||
}
|
||||
|
||||
class ThemeManager(context: Context) {
|
||||
private val prefs = context.getSharedPreferences("theme_prefs", Context.MODE_PRIVATE)
|
||||
|
||||
private val _themeMode = MutableStateFlow(loadThemeMode())
|
||||
val themeMode: StateFlow<ThemeMode> = _themeMode.asStateFlow()
|
||||
|
||||
private fun loadThemeMode(): ThemeMode {
|
||||
val value = prefs.getString("theme_mode", ThemeMode.LIGHT.name)
|
||||
return try {
|
||||
ThemeMode.valueOf(value ?: ThemeMode.LIGHT.name)
|
||||
} catch (e: Exception) {
|
||||
ThemeMode.LIGHT
|
||||
}
|
||||
}
|
||||
|
||||
fun setThemeMode(mode: ThemeMode) {
|
||||
prefs.edit().putString("theme_mode", mode.name).apply()
|
||||
_themeMode.value = mode
|
||||
}
|
||||
|
||||
fun toggleTheme() {
|
||||
val newMode = if (_themeMode.value == ThemeMode.DARK) ThemeMode.LIGHT else ThemeMode.DARK
|
||||
setThemeMode(newMode)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user