diff --git a/lib/main.dart b/lib/main.dart index e5166a4c..6c43a139 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -216,6 +216,21 @@ class BuildMainApp extends StatelessWidget { @override Widget build(BuildContext context) { + Box setting = GStorage.setting; + + /// 纯黑模式主题配置 + ColorScheme? pureDarkColorScheme; + final bool enablePureBlack = + setting.get(SettingBoxKey.enablePureBlack, defaultValue: false); + if (enablePureBlack) { + pureDarkColorScheme = darkColorScheme.copyWith( + background: Colors.black, + surface: Colors.black, + onPrimary: Colors.black, + onSecondary: Colors.black, + ); + } + final SnackBarThemeData snackBarTheme = SnackBarThemeData( actionTextColor: lightColorScheme.primary, backgroundColor: lightColorScheme.secondaryContainer, @@ -255,13 +270,13 @@ class BuildMainApp extends StatelessWidget { title: 'PiliPala', theme: buildThemeData( currentThemeValue == ThemeType.dark - ? darkColorScheme + ? pureDarkColorScheme ?? darkColorScheme : lightColorScheme, ), darkTheme: buildThemeData( currentThemeValue == ThemeType.light ? lightColorScheme - : darkColorScheme, + : pureDarkColorScheme ?? darkColorScheme, ), localizationsDelegates: const [ GlobalCupertinoLocalizations.delegate, diff --git a/lib/pages/setting/style_setting.dart b/lib/pages/setting/style_setting.dart index 54b97ea5..323f8458 100644 --- a/lib/pages/setting/style_setting.dart +++ b/lib/pages/setting/style_setting.dart @@ -249,6 +249,15 @@ class _StyleSettingState extends State { '当前模式:${settingController.themeType.value.description}', style: subTitleStyle)), ), + SetSwitchItem( + title: '纯黑模式', + subTitle: '深色模式时使用纯黑色背景,适用于OLED屏幕', + setKey: SettingBoxKey.enablePureBlack, + defaultVal: false, + callFn: (bool val) => { + if (val && Get.isDarkMode) {Get.appUpdate()} + }, + ), ListTile( dense: false, onTap: () => settingController.setDynamicBadgeMode(context), diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index defe21ed..29b7f202 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -137,7 +137,8 @@ class SettingBoxKey { enableGradientBg = 'enableGradientBg', enableDynamicSwitch = 'enableDynamicSwitch', navBarSort = 'navBarSort', - actionTypeSort = 'actionTypeSort'; + actionTypeSort = 'actionTypeSort', + enablePureBlack = 'enablePureBlack'; } class LocalCacheKey {