11import 'package:flutter/material.dart' ;
22import 'package:freezed_annotation/freezed_annotation.dart' ;
3-
4- import 'package:maple_file/app/i18n.dart' ;
3+ import 'package:flex_color_scheme/flex_color_scheme.dart' ;
54
65import 'setting.dart' ;
76
87part 'setting_appearance.freezed.dart' ;
98part 'setting_appearance.g.dart' ;
109
11- class ThemeModel {
12- final String name;
13- final Color color;
14-
15- const ThemeModel ({
16- required this .name,
17- required this .color,
18- });
19-
20- // static const defaultColor = Color.fromRGBO(32, 82, 67, 1);
21- static const defaultColor = Color .fromRGBO (244 , 63 , 94 , 0.2 );
22-
23- static final defaultTheme = ThemeModel (
24- name: '默认' .tr (),
25- color: defaultColor,
26- );
10+ const defaultFlexScheme = FlexScheme .redM3;
2711
28- static final themes = [
29- defaultTheme,
30- const ThemeModel (
31- name: 'Blue' ,
32- color: Colors .blue,
33- ),
34- const ThemeModel (
35- name: 'Red' ,
36- color: Colors .red,
37- ),
38- const ThemeModel (
39- name: 'Pink' ,
40- color: Colors .pink,
41- ),
42- const ThemeModel (
43- name: 'Purple' ,
44- color: Colors .purple,
45- ),
46- const ThemeModel (
47- name: 'DeepPurple' ,
48- color: Colors .deepPurple,
49- ),
50- const ThemeModel (
51- name: 'Indigo' ,
52- color: Colors .indigo,
53- ),
54- const ThemeModel (
55- name: 'LightBlue' ,
56- color: Colors .lightBlue,
57- ),
58- const ThemeModel (
59- name: 'Cyan' ,
60- color: Colors .cyan,
61- ),
62- const ThemeModel (
63- name: 'Teal' ,
64- color: Colors .teal,
65- ),
66- const ThemeModel (
67- name: 'LightGreen' ,
68- color: Colors .lightGreen,
69- ),
70- const ThemeModel (
71- name: 'Lime' ,
72- color: Colors .lime,
73- ),
74- const ThemeModel (
75- name: 'Yellow' ,
76- color: Colors .yellow,
77- ),
78- const ThemeModel (
79- name: 'Amber' ,
80- color: Colors .amber,
81- ),
82- const ThemeModel (
83- name: 'Orange' ,
84- color: Colors .orange,
85- ),
86- const ThemeModel (
87- name: 'DeepOrange' ,
88- color: Colors .deepOrange,
89- ),
90- const ThemeModel (
91- name: 'Brown' ,
92- color: Colors .brown,
93- ),
94- const ThemeModel (
95- name: 'Grey' ,
96- color: Colors .grey,
97- ),
98- const ThemeModel (
99- name: 'BlueGrey' ,
100- color: Colors .blueGrey,
101- ),
102- ];
12+ extension FlexSchemeExtension on FlexScheme {
13+ Color primaryColor (BuildContext context) {
14+ switch (MediaQuery .of (context).platformBrightness) {
15+ case Brightness .light:
16+ return colors (Brightness .light).primary;
17+ case Brightness .dark:
18+ return colors (Brightness .dark).primary;
19+ }
20+ }
10321}
10422
10523@freezed
@@ -115,16 +33,10 @@ class AppearanceSetting with _$AppearanceSetting {
11533 factory AppearanceSetting .fromJson (Map <String , Object ?> json) =>
11634 _$AppearanceSettingFromJson (json);
11735
118- Color get color => ThemeModel .themes
119- .firstWhere (
36+ FlexScheme get scheme => FlexScheme .values.firstWhere (
12037 (item) => item.name == themeColor,
121- orElse: () => ThemeModel .defaultTheme,
122- )
123- .color;
124-
125- bool isDefaultColor () {
126- return color == ThemeModel .defaultColor;
127- }
38+ orElse: () => defaultFlexScheme,
39+ );
12840}
12941
13042final appearanceProvider = newSettingNotifier (
0 commit comments