@@ -40,26 +40,17 @@ class _ColorSchemeExampleState extends State<ColorSchemeExample> {
40
40
seedColor: selectedColor,
41
41
brightness: selectedBrightness,
42
42
contrastLevel: selectedContrast,
43
- )
43
+ ),
44
44
),
45
45
home: Scaffold (
46
46
appBar: AppBar (
47
47
title: const Text ('ColorScheme' ),
48
48
actions: < Widget > [
49
- IconButton (
50
- icon: const Icon (Icons .settings),
51
- onPressed: () {
52
- showModalBottomSheet <void >(
53
- barrierColor: Colors .transparent,
54
- context: context,
55
- builder: (BuildContext context) => Settings (
56
- selectedColor: selectedColor,
57
- selectedBrightness: selectedBrightness,
58
- selectedContrast: selectedContrast,
59
- updateTheme: updateTheme
60
- )
61
- );
62
- },
49
+ SettingsButton (
50
+ selectedColor: selectedColor,
51
+ selectedBrightness: selectedBrightness,
52
+ selectedContrast: selectedContrast,
53
+ updateTheme: updateTheme,
63
54
),
64
55
],
65
56
),
@@ -118,7 +109,8 @@ class _SettingsState extends State<Settings> {
118
109
@override
119
110
Widget build (BuildContext context) {
120
111
return Theme (
121
- data: Theme .of (context).copyWith (colorScheme: ColorScheme .fromSeed (
112
+ data: Theme .of (context).copyWith (
113
+ colorScheme: ColorScheme .fromSeed (
122
114
seedColor: selectedColor,
123
115
contrastLevel: selectedContrast,
124
116
brightness: selectedBrightness,
@@ -139,31 +131,31 @@ class _SettingsState extends State<Settings> {
139
131
setState (() {
140
132
selectedBrightness = value ? Brightness .light : Brightness .dark;
141
133
});
142
- widget.updateTheme. call (selectedBrightness, selectedColor, selectedContrast);
134
+ widget.updateTheme (selectedBrightness, selectedColor, selectedContrast);
143
135
},
144
136
)
145
137
],
146
138
),
147
- Wrap (
148
- crossAxisAlignment : WrapCrossAlignment .center ,
149
- children : < Widget > [
150
- const Text ( 'Seed color: ' ) ,
151
- ... List < Widget >. generate ( ColorSeed .values.length, (int index) {
139
+ Wrap (crossAxisAlignment : WrapCrossAlignment .center, children : < Widget > [
140
+ const Text ( 'Seed color: ' ) ,
141
+ ... List <Widget >. generate (
142
+ ColorSeed .values.length ,
143
+ (int index) {
152
144
final Color itemColor = ColorSeed .values[index].color;
153
145
return IconButton (
154
146
icon: selectedColor == ColorSeed .values[index].color
155
- ? Icon (Icons .circle, color: itemColor)
156
- : Icon (Icons .circle_outlined, color: itemColor),
147
+ ? Icon (Icons .circle, color: itemColor)
148
+ : Icon (Icons .circle_outlined, color: itemColor),
157
149
onPressed: () {
158
150
setState (() {
159
151
selectedColor = itemColor;
160
152
});
161
- widget.updateTheme. call (selectedBrightness, selectedColor, selectedContrast);
153
+ widget.updateTheme (selectedBrightness, selectedColor, selectedContrast);
162
154
},
163
155
);
164
- }) ,
165
- ]
166
- ),
156
+ },
157
+ ),
158
+ ] ),
167
159
Row (
168
160
children: < Widget > [
169
161
const Text ('Contrast level: ' ),
@@ -177,7 +169,7 @@ class _SettingsState extends State<Settings> {
177
169
setState (() {
178
170
selectedContrast = value;
179
171
});
180
- widget.updateTheme. call (selectedBrightness, selectedColor, selectedContrast);
172
+ widget.updateTheme (selectedBrightness, selectedColor, selectedContrast);
181
173
},
182
174
),
183
175
),
@@ -230,7 +222,7 @@ class ColorSchemeVariantColumn extends StatelessWidget {
230
222
),
231
223
),
232
224
],
233
- )
225
+ ),
234
226
);
235
227
}
236
228
}
@@ -418,11 +410,47 @@ enum ColorSeed {
418
410
orange ('Orange' , Colors .orange),
419
411
deepOrange ('Deep Orange' , Colors .deepOrange),
420
412
pink ('Pink' , Colors .pink),
421
- brightBlue ('Bright Blue' , Color (0xFF0000FF )),
422
- brightGreen ('Bright Green' , Color (0xFF00FF00 )),
423
- brightRed ('Bright Red' , Color (0xFFFF0000 ));
413
+ brightBlue ('Bright Blue' , Color (0xFF0000FF )),
414
+ brightGreen ('Bright Green' , Color (0xFF00FF00 )),
415
+ brightRed ('Bright Red' , Color (0xFFFF0000 ));
424
416
425
417
const ColorSeed (this .label, this .color);
426
418
final String label;
427
419
final Color color;
428
420
}
421
+
422
+ class SettingsButton extends StatelessWidget {
423
+ const SettingsButton ({
424
+ super .key,
425
+ required this .updateTheme,
426
+ required this .selectedBrightness,
427
+ required this .selectedContrast,
428
+ required this .selectedColor,
429
+ });
430
+
431
+ final Brightness selectedBrightness;
432
+ final double selectedContrast;
433
+ final Color selectedColor;
434
+
435
+ final void Function (Brightness , Color , double ) updateTheme;
436
+
437
+ @override
438
+ Widget build (BuildContext context) {
439
+ return IconButton (
440
+ icon: const Icon (Icons .settings),
441
+ onPressed: () {
442
+ showModalBottomSheet <void >(
443
+ barrierColor: Colors .transparent,
444
+ context: context,
445
+ builder: (BuildContext context) {
446
+ return Settings (
447
+ selectedColor: selectedColor,
448
+ selectedBrightness: selectedBrightness,
449
+ selectedContrast: selectedContrast,
450
+ updateTheme: updateTheme);
451
+ },
452
+ );
453
+ },
454
+ );
455
+ }
456
+ }
0 commit comments