@@ -6,19 +6,30 @@ import 'package:flutter_localized_locales/flutter_localized_locales.dart';
6
6
7
7
const _restorationScopeId = 'rootVoices' ;
8
8
9
- final class AppContent extends StatelessWidget {
9
+ final class AppContent extends StatefulWidget {
10
10
final RouterConfig <Object > routerConfig;
11
11
12
12
const AppContent ({
13
13
super .key,
14
14
required this .routerConfig,
15
15
});
16
16
17
- List <LocalizationsDelegate <dynamic >> get _localizationsDelegates {
18
- return const [
19
- ...VoicesLocalizations .localizationsDelegates,
20
- LocaleNamesLocalizationsDelegate (),
21
- ];
17
+ @override
18
+ State <AppContent > createState () => AppContentState ();
19
+
20
+ /// Returns the state associated with the [AppContent] .
21
+ static AppContentState of (BuildContext context) {
22
+ return context.findAncestorStateOfType <AppContentState >()! ;
23
+ }
24
+ }
25
+
26
+ class AppContentState extends State <AppContent > {
27
+ ThemeMode _themeMode = ThemeMode .light;
28
+
29
+ void updateThemeMode (ThemeMode themeMode) {
30
+ setState (() {
31
+ _themeMode = themeMode;
32
+ });
22
33
}
23
34
24
35
@override
@@ -28,9 +39,8 @@ final class AppContent extends StatelessWidget {
28
39
localizationsDelegates: _localizationsDelegates,
29
40
supportedLocales: VoicesLocalizations .supportedLocales,
30
41
localeListResolutionCallback: basicLocaleListResolution,
31
- routerConfig: routerConfig,
32
- // Light mode is "go to" for now.
33
- themeMode: ThemeMode .light,
42
+ routerConfig: widget.routerConfig,
43
+ themeMode: _themeMode,
34
44
theme: ThemeBuilder .buildTheme (
35
45
brand: Brand .catalyst,
36
46
brightness: Brightness .light,
@@ -46,4 +56,11 @@ final class AppContent extends StatelessWidget {
46
56
},
47
57
);
48
58
}
59
+
60
+ List <LocalizationsDelegate <dynamic >> get _localizationsDelegates {
61
+ return const [
62
+ ...VoicesLocalizations .localizationsDelegates,
63
+ LocaleNamesLocalizationsDelegate (),
64
+ ];
65
+ }
49
66
}
0 commit comments