@@ -6,7 +6,8 @@ class Settings extends ConsumerWidget {
66
77 @override
88 Widget build (BuildContext context, WidgetRef ref) {
9- final Theme themeMode = ref.watch (themeProvider);
9+ final ArnaThemeMode themeMode = ref.watch (themeProvider);
10+ final bool masterMode = ref.watch (masterProvider);
1011 final Color accentColor = ref.watch (accentProvider);
1112 return SingleChildScrollView (
1213 child: Column (
@@ -16,23 +17,34 @@ class Settings extends ConsumerWidget {
1617 showDividers: true ,
1718 showBackground: true ,
1819 children: < Widget > [
19- ArnaRadioListTile <Theme >(
20- value: Theme .system,
20+ ArnaRadioListTile <ArnaThemeMode >(
21+ value: ArnaThemeMode .system,
2122 groupValue: themeMode,
2223 title: 'System' ,
23- onChanged: (_) => ref.read (themeProvider.notifier).state = Theme .system,
24+ onChanged: (_) => ref.read (themeProvider.notifier).state = ArnaThemeMode .system,
2425 ),
25- ArnaRadioListTile <Theme >(
26- value: Theme .dark,
26+ ArnaRadioListTile <ArnaThemeMode >(
27+ value: ArnaThemeMode .dark,
2728 groupValue: themeMode,
2829 title: 'Dark' ,
29- onChanged: (_) => ref.read (themeProvider.notifier).state = Theme .dark,
30+ onChanged: (_) => ref.read (themeProvider.notifier).state = ArnaThemeMode .dark,
3031 ),
31- ArnaRadioListTile <Theme >(
32- value: Theme .light,
32+ ArnaRadioListTile <ArnaThemeMode >(
33+ value: ArnaThemeMode .light,
3334 groupValue: themeMode,
3435 title: 'Light' ,
35- onChanged: (_) => ref.read (themeProvider.notifier).state = Theme .light,
36+ onChanged: (_) => ref.read (themeProvider.notifier).state = ArnaThemeMode .light,
37+ ),
38+ ],
39+ ),
40+ ArnaList (
41+ title: 'Scaffold' ,
42+ showBackground: true ,
43+ children: < Widget > [
44+ ArnaSwitchListTile (
45+ value: masterMode,
46+ title: 'Use Master-Detail' ,
47+ onChanged: (_) => ref.read (masterProvider.notifier).state = ! masterMode,
3648 ),
3749 ],
3850 ),
@@ -74,10 +86,24 @@ class Settings extends ConsumerWidget {
7486 }
7587}
7688
77- enum Theme { system, dark, light }
89+ /// Describes which theme will be used by.
90+ enum ArnaThemeMode {
91+ /// Use either the light or dark theme based on what the user has selected in the system settings.
92+ system,
93+
94+ /// Always use the dark mode regardless of system preference.
95+ dark,
96+
97+ /// Always use the light mode regardless of system preference.
98+ light,
99+ }
100+
101+ final AutoDisposeStateProvider <ArnaThemeMode > themeProvider = StateProvider .autoDispose <ArnaThemeMode >(
102+ (AutoDisposeStateProviderRef <ArnaThemeMode > ref) => ArnaThemeMode .system,
103+ );
78104
79- final AutoDisposeStateProvider <Theme > themeProvider = StateProvider .autoDispose <Theme >(
80- (AutoDisposeStateProviderRef <Theme > ref) => Theme .system ,
105+ final AutoDisposeStateProvider <bool > masterProvider = StateProvider .autoDispose <bool >(
106+ (AutoDisposeStateProviderRef <bool > ref) => false ,
81107);
82108
83109final AutoDisposeStateProvider <Color > accentProvider = StateProvider .autoDispose <Color >(
0 commit comments