@@ -2,23 +2,23 @@ import 'dart:async';
22
33import 'package:flutter/material.dart' ;
44import 'package:flutter_localizations/flutter_localizations.dart' ;
5+ import 'package:flutter_redux/flutter_redux.dart' ;
56import 'package:fluttertoast/fluttertoast.dart' ;
67import 'package:gsy_github_app_flutter/common/event/http_error_event.dart' ;
78import 'package:gsy_github_app_flutter/common/event/index.dart' ;
89import 'package:gsy_github_app_flutter/common/localization/default_localizations.dart' ;
910import 'package:gsy_github_app_flutter/common/localization/gsy_localizations_delegate.dart' ;
10- import 'package:gsy_github_app_flutter/page/debug/debug_label.dart' ;
11- import 'package:gsy_github_app_flutter/page/photoview_page.dart' ;
12- import 'package:gsy_github_app_flutter/redux/gsy_state.dart' ;
13- import 'package:gsy_github_app_flutter/model/User.dart' ;
11+ import 'package:gsy_github_app_flutter/common/net/code.dart' ;
1412import 'package:gsy_github_app_flutter/common/style/gsy_style.dart' ;
1513import 'package:gsy_github_app_flutter/common/utils/common_utils.dart' ;
14+ import 'package:gsy_github_app_flutter/model/User.dart' ;
15+ import 'package:gsy_github_app_flutter/page/debug/debug_label.dart' ;
1616import 'package:gsy_github_app_flutter/page/home/home_page.dart' ;
1717import 'package:gsy_github_app_flutter/page/login/login_page.dart' ;
18+ import 'package:gsy_github_app_flutter/page/photoview_page.dart' ;
1819import 'package:gsy_github_app_flutter/page/welcome_page.dart' ;
19- import 'package:flutter_redux/flutter_redux .dart' ;
20+ import 'package:gsy_github_app_flutter/redux/gsy_state .dart' ;
2021import 'package:redux/redux.dart' ;
21- import 'package:gsy_github_app_flutter/common/net/code.dart' ;
2222
2323import 'common/utils/navigator_utils.dart' ;
2424
@@ -28,7 +28,7 @@ class FlutterReduxApp extends StatefulWidget {
2828}
2929
3030class _FlutterReduxAppState extends State <FlutterReduxApp >
31- with HttpErrorListener , NavigatorObserver {
31+ with HttpErrorListener {
3232 /// 创建Store,引用 GSYState 中的 appReducer 实现 Reducer 方法
3333 /// initialState 初始化 State
3434 final store = new Store <GSYState >(
@@ -53,6 +53,7 @@ class _FlutterReduxAppState extends State<FlutterReduxApp>
5353 ]);
5454
5555
56+ NavigatorObserver navigatorObserver = NavigatorObserver ();
5657
5758
5859 @override
@@ -63,8 +64,8 @@ class _FlutterReduxAppState extends State<FlutterReduxApp>
6364 /// MaterialApp 和 StoreProvider 的 context
6465 /// 还可以获取到 navigator;
6566 /// 比如在这里增加一个监听,如果 token 失效就退回登陆页。
66- navigator! .context;
67- navigator;
67+ navigatorObserver. navigator! .context;
68+ navigatorObserver. navigator;
6869 });
6970 }
7071
@@ -76,7 +77,7 @@ class _FlutterReduxAppState extends State<FlutterReduxApp>
7677 store: store,
7778 child: new StoreBuilder <GSYState >(builder: (context, store) {
7879 ///使用 StoreBuilder 获取 store 中的 theme 、locale
79- store.state.platformLocale = WidgetsBinding .instance.window .locale;
80+ store.state.platformLocale = WidgetsBinding .instance.platformDispatcher .locale;
8081 Widget app = new MaterialApp (
8182 navigatorKey: navKey,
8283 ///多语言实现代理
@@ -91,7 +92,7 @@ class _FlutterReduxAppState extends State<FlutterReduxApp>
9192 ],
9293 locale: store.state.locale,
9394 theme: store.state.themeData,
94- navigatorObservers: [this ],
95+ navigatorObservers: [navigatorObserver ],
9596
9697 ///命名式路由
9798 /// "/" 和 MaterialApp 的 home 参数一个效果
@@ -104,16 +105,13 @@ class _FlutterReduxAppState extends State<FlutterReduxApp>
104105 ///⚠️ 这个是我故意的,如果不需要,可以去掉 pageContainer 或者不要用这里的 context
105106 routes: {
106107 WelcomePage .sName: (context) {
107- _context = context;
108108 DebugLabel .showDebugLabel (context);
109109 return WelcomePage ();
110110 },
111111 HomePage .sName: (context) {
112- _context = context;
113112 return NavigatorUtils .pageContainer (new HomePage (), context);
114113 },
115114 LoginPage .sName: (context) {
116- _context = context;
117115 return NavigatorUtils .pageContainer (new LoginPage (), context);
118116 },
119117
@@ -138,16 +136,12 @@ class _FlutterReduxAppState extends State<FlutterReduxApp>
138136 }),
139137 );
140138 }
139+
141140}
142141
143142mixin HttpErrorListener on State <FlutterReduxApp > {
144143 StreamSubscription ? stream;
145144
146- ///这里为什么用 _context 你理解吗?
147- ///因为此时 State 的 context 是 FlutterReduxApp 而不是 MaterialApp
148- ///所以如果直接用 context 是会获取不到 MaterialApp 的 Localizations 哦。
149- late BuildContext _context;
150-
151145 GlobalKey <NavigatorState > navKey = GlobalKey ();
152146
153147 @override
@@ -211,3 +205,4 @@ mixin HttpErrorListener on State<FlutterReduxApp> {
211205 toastLength: Toast .LENGTH_LONG );
212206 }
213207}
208+
0 commit comments