Skip to content

Commit 22e4c06

Browse files
committed
Update Example
1 parent 99720af commit 22e4c06

File tree

3 files changed

+45
-19
lines changed

3 files changed

+45
-19
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Update ArnaTextButton
1919
- Update ArnaListTile
2020
- Update ArnaPopupMenuButton
21+
- [Example] Update Example
2122

2223
## 0.4.7
2324

example/lib/main.dart

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ class MyApp extends ConsumerWidget {
1414

1515
@override
1616
Widget build(BuildContext context, WidgetRef ref) {
17-
final Theme theme = ref.watch(themeProvider);
17+
final ArnaThemeMode theme = ref.watch(themeProvider);
1818
final Color accentColor = ref.watch(accentProvider);
1919
Brightness? brightness;
2020

2121
switch (theme) {
22-
case Theme.dark:
22+
case ArnaThemeMode.dark:
2323
brightness = Brightness.dark;
2424
break;
25-
case Theme.light:
25+
case ArnaThemeMode.light:
2626
brightness = Brightness.light;
2727
break;
28-
case Theme.system:
28+
case ArnaThemeMode.system:
2929
brightness = null;
3030
}
3131

@@ -49,7 +49,6 @@ class Home extends ConsumerStatefulWidget {
4949

5050
class _HomeState extends ConsumerState<Home> {
5151
Uri url = Uri(scheme: 'https', host: 'github.com', path: 'MahanRahmati/Arna');
52-
bool showMaster = false;
5352

5453
@override
5554
Widget build(BuildContext context) {
@@ -98,7 +97,7 @@ class _HomeState extends ConsumerState<Home> {
9897
],
9998
);
10099

101-
return showMaster
100+
return ref.watch(masterProvider)
102101
? ArnaMasterDetailScaffold(
103102
title: 'Arna Demo',
104103
actions: <Widget>[

example/lib/screens/settings.dart

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

83109
final AutoDisposeStateProvider<Color> accentProvider = StateProvider.autoDispose<Color>(

0 commit comments

Comments
 (0)