feat: pure dark mode

This commit is contained in:
guozhigq
2024-11-18 19:32:15 +08:00
parent 3fda360739
commit 8c8c862095
3 changed files with 34 additions and 3 deletions

View File

@ -214,6 +214,27 @@ 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,
primary: Colors.white,
secondary: Colors.white,
error: Colors.red,
onPrimary: Colors.black,
onSecondary: Colors.black,
onSurface: Colors.white,
onBackground: Colors.white,
onError: Colors.white,
);
}
final SnackBarThemeData snackBarTheme = SnackBarThemeData(
actionTextColor: lightColorScheme.primary,
backgroundColor: lightColorScheme.secondaryContainer,
@ -253,13 +274,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,

View File

@ -249,6 +249,15 @@ class _StyleSettingState extends State<StyleSetting> {
'当前模式:${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),

View File

@ -133,7 +133,8 @@ class SettingBoxKey {
enableGradientBg = 'enableGradientBg',
enableDynamicSwitch = 'enableDynamicSwitch',
navBarSort = 'navBarSort',
actionTypeSort = 'actionTypeSort';
actionTypeSort = 'actionTypeSort',
enablePureBlack = 'enablePureBlack';
}
class LocalCacheKey {