Przeglądaj źródła

深色/浅色切换

chendeben 1 rok temu
rodzic
commit
d2ad468d46

+ 14 - 7
entry/src/main/ets/pages/NewIndex.ets

@@ -1,4 +1,4 @@
-import { AppUtil, DisplayUtil, ToastUtil } from '@pura/harmony-utils';
+import { AppUtil, DisplayUtil, PreferencesUtil, ToastUtil } from '@pura/harmony-utils';
 import TitleBar from '../view/TitleBar';
 import { router } from '@kit.ArkUI';
 import mainViewModel, { MainViewModel } from '../viewmodel/MainViewModel';
@@ -22,6 +22,7 @@ import { ImageKnife } from '@ohos/imageknife';
 import { BreakpointSystem, BreakpointTypeEnum } from '../common/util/BreakpointSystem';
 import dataStorage from '@ohos.data.storage';
 import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
+import { SettingPage } from './SettingPage';
 
 const TAG = 'NewIndex'; // 日志标签
 
@@ -168,14 +169,20 @@ struct NewIndex{
 
     // 初始化深色模式状态
     try {
+      // 从持久化存储中读取深色模式设置
+      const savedDarkMode = PreferencesUtil.getBooleanSync(SettingPage.IS_DARK_MODE, false);
+      this.isDarkMode = savedDarkMode;
+      
+      // 更新 AppStorage 中的颜色模式
+      const colorMode = savedDarkMode ? ConfigurationConstant.ColorMode.COLOR_MODE_DARK : ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT;
+      AppStorage.setOrCreate('currentColorMode', colorMode);
+      AppStorage.setOrCreate('isDarkMode', savedDarkMode);
+      
+      // 通知系统更新颜色模式
       const context = getContext(this) as common.UIAbilityContext;
-      this.storage = await dataStorage.getStorage(context.cacheDir);
-      if (this.storage) {
-        const colorMode = await this.storage.get('currentColorMode', ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);
-        this.isDarkMode = colorMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK;
-      }
+      context.getApplicationContext().setColorMode(colorMode);
     } catch (err) {
-      console.error('Failed to get color mode:', err);
+      console.error('Failed to initialize color mode:', err);
     }
   }
 

+ 10 - 2
entry/src/main/ets/pages/SettingPage.ets

@@ -116,8 +116,11 @@ export struct SettingPage {
     this.isMusicMemoryPlay = PreferencesUtil.getBooleanSync(SettingPage.iS_MUSIC_MEMORY_PLAY, false)
     this.isMusicBGCover = PreferencesUtil.getBooleanSync(SettingPage.iS_MUSIC_BG_COVER, true)
     
-    // 初始化深色模式状态
-    this.isDarkMode = this.currentMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK;
+    // 从持久化存储中读取深色模式设置
+    const savedDarkMode = PreferencesUtil.getBooleanSync(SettingPage.IS_DARK_MODE, false);
+    this.isDarkMode = savedDarkMode;
+    this.currentMode = savedDarkMode ? ConfigurationConstant.ColorMode.COLOR_MODE_DARK : ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT;
+    AppStorage.setOrCreate('currentColorMode', this.currentMode);
     AppStorage.setOrCreate('isDarkMode', this.isDarkMode);
   }
 
@@ -125,6 +128,8 @@ export struct SettingPage {
   onColorModeChange(): void {
     this.isDarkMode = this.currentMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK;
     AppStorage.setOrCreate('isDarkMode', this.isDarkMode);
+    // 保存深色模式设置到持久化存储
+    PreferencesUtil.putSync(SettingPage.IS_DARK_MODE, this.isDarkMode);
   }
 
   // 切换深色模式
@@ -136,6 +141,9 @@ export struct SettingPage {
       AppStorage.setOrCreate('currentColorMode', newMode);
       AppStorage.setOrCreate('isDarkMode', checked);
       
+      // 保存深色模式设置到持久化存储
+      PreferencesUtil.putSync(SettingPage.IS_DARK_MODE, checked);
+      
       // 通知系统更新颜色模式
       const context = getContext(this) as common.UIAbilityContext;
       context.getApplicationContext().setColorMode(newMode);