mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: change theme
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,13 +1,26 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
|
||||
enum ThemeType {
|
||||
light,
|
||||
dark,
|
||||
system,
|
||||
}
|
||||
|
||||
extension ThemeTypeDesc on ThemeType {
|
||||
extension ThemeTypeExt on ThemeType {
|
||||
String get description => ['浅色', '深色', '跟随系统'][index];
|
||||
}
|
||||
|
||||
extension ThemeTypeCode on ThemeType {
|
||||
int get code => [0, 1, 2][index];
|
||||
int get code => index;
|
||||
|
||||
ThemeMode get toThemeMode => switch (this) {
|
||||
ThemeType.light => ThemeMode.light,
|
||||
ThemeType.dark => ThemeMode.dark,
|
||||
ThemeType.system => ThemeMode.system,
|
||||
};
|
||||
|
||||
IconData get iconData => switch (this) {
|
||||
ThemeType.light => MdiIcons.weatherSunny,
|
||||
ThemeType.dark => MdiIcons.weatherNight,
|
||||
ThemeType.system => MdiIcons.themeLightDark,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ class MineController extends GetxController {
|
||||
onChangeTheme() {
|
||||
themeType.value = nextThemeType;
|
||||
setting.put(SettingBoxKey.themeMode, themeType.value.code);
|
||||
Get.forceAppUpdate();
|
||||
Get.changeThemeMode(themeType.value.toThemeMode);
|
||||
}
|
||||
|
||||
pushFollow() {
|
||||
|
||||
@@ -55,33 +55,27 @@ class _MinePageState extends State<MinePage> {
|
||||
size: 24,
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
Obx(
|
||||
() {
|
||||
return IconButton(
|
||||
iconSize: 40.0,
|
||||
padding: const EdgeInsets.all(8),
|
||||
constraints: const BoxConstraints(),
|
||||
style: const ButtonStyle(
|
||||
tapTargetSize:
|
||||
MaterialTapTargetSize.shrinkWrap, // the '2023' part
|
||||
),
|
||||
tooltip: '切换至${switch (_mineController.nextThemeType) {
|
||||
ThemeType.light => '浅色',
|
||||
ThemeType.dark => '深色',
|
||||
ThemeType.system => '跟随系统',
|
||||
}}主题',
|
||||
tooltip: '切换至${_mineController.nextThemeType.description}主题',
|
||||
onPressed: _mineController.onChangeTheme,
|
||||
icon: Icon(
|
||||
switch (_mineController.themeType.value) {
|
||||
ThemeType.light => MdiIcons.weatherSunny,
|
||||
ThemeType.dark => MdiIcons.weatherNight,
|
||||
ThemeType.system => MdiIcons.themeLightDark,
|
||||
},
|
||||
_mineController.themeType.value.iconData,
|
||||
size: 24,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
iconSize: 40.0,
|
||||
padding: const EdgeInsets.all(8),
|
||||
constraints: const BoxConstraints(),
|
||||
style: const ButtonStyle(
|
||||
tapTargetSize:
|
||||
MaterialTapTargetSize.shrinkWrap, // the '2023' part
|
||||
|
||||
@@ -69,7 +69,7 @@ class _ColorSelectPageState extends State<ColorSelectPage> {
|
||||
if (result != null) {
|
||||
ctr.themeType.value = result;
|
||||
GStorage.setting.put(SettingBoxKey.themeMode, result.index);
|
||||
Get.forceAppUpdate();
|
||||
Get.changeThemeMode(result.toThemeMode);
|
||||
}
|
||||
},
|
||||
leading: Container(
|
||||
|
||||
@@ -538,7 +538,7 @@ List<SettingsModel> get styleSettings => [
|
||||
if (result != null) {
|
||||
GStorage.setting.put(SettingBoxKey.themeMode, result.index);
|
||||
Get.put(ColorSelectController()).themeType.value = result;
|
||||
Get.forceAppUpdate();
|
||||
Get.changeThemeMode(result.toThemeMode);
|
||||
}
|
||||
},
|
||||
leading: const Icon(Icons.flashlight_on_outlined),
|
||||
|
||||
Reference in New Issue
Block a user