Committed by
GitHub
Merge pull request #1641 from Bdaya-Dev/nav2_fixes
minor improvements and bug fixes
Showing
16 changed files
with
138 additions
and
100 deletions
1 | import 'package:get/get.dart'; | 1 | import 'package:get/get.dart'; |
2 | 2 | ||
3 | -class LoginController extends GetxController { | ||
4 | - //TODO: Implement LoginController | ||
5 | - | ||
6 | - final count = 0.obs; | ||
7 | - @override | ||
8 | - void onInit() { | ||
9 | - super.onInit(); | ||
10 | - } | ||
11 | - | ||
12 | - @override | ||
13 | - void onReady() { | ||
14 | - super.onReady(); | ||
15 | - } | ||
16 | - | ||
17 | - @override | ||
18 | - void onClose() {} | ||
19 | - void increment() => count.value++; | ||
20 | -} | 3 | +class LoginController extends GetxController {} |
@@ -33,7 +33,7 @@ class LoginView extends GetView<LoginController> { | @@ -33,7 +33,7 @@ class LoginView extends GetView<LoginController> { | ||
33 | AuthService.to.login(); | 33 | AuthService.to.login(); |
34 | final thenTo = Get.rootDelegate.currentConfiguration! | 34 | final thenTo = Get.rootDelegate.currentConfiguration! |
35 | .currentPage!.parameter?['then']; | 35 | .currentPage!.parameter?['then']; |
36 | - Get.rootDelegate.toNamed(thenTo ?? Routes.HOME); | 36 | + Get.rootDelegate.offNamed(thenTo ?? Routes.HOME); |
37 | }, | 37 | }, |
38 | ), | 38 | ), |
39 | ], | 39 | ], |
@@ -4,4 +4,15 @@ class ProductDetailsController extends GetxController { | @@ -4,4 +4,15 @@ class ProductDetailsController extends GetxController { | ||
4 | final String productId; | 4 | final String productId; |
5 | 5 | ||
6 | ProductDetailsController(this.productId); | 6 | ProductDetailsController(this.productId); |
7 | + @override | ||
8 | + void onInit() { | ||
9 | + super.onInit(); | ||
10 | + Get.log('ProductDetailsController created with id: $productId'); | ||
11 | + } | ||
12 | + | ||
13 | + @override | ||
14 | + void onClose() { | ||
15 | + Get.log('ProductDetailsController close with id: $productId'); | ||
16 | + super.onClose(); | ||
17 | + } | ||
7 | } | 18 | } |
@@ -10,9 +10,23 @@ class ProfileView extends GetView<ProfileController> { | @@ -10,9 +10,23 @@ class ProfileView extends GetView<ProfileController> { | ||
10 | return Scaffold( | 10 | return Scaffold( |
11 | backgroundColor: Colors.amber, | 11 | backgroundColor: Colors.amber, |
12 | body: Center( | 12 | body: Center( |
13 | - child: Text( | ||
14 | - 'ProfileView is working', | ||
15 | - style: TextStyle(fontSize: 20), | 13 | + child: Column( |
14 | + children: [ | ||
15 | + Text( | ||
16 | + 'ProfileView is working', | ||
17 | + style: TextStyle(fontSize: 20), | ||
18 | + ), | ||
19 | + MaterialButton( | ||
20 | + child: Text('Show a test dialog'), | ||
21 | + onPressed: () { | ||
22 | + //shows a dialog | ||
23 | + Get.defaultDialog( | ||
24 | + title: 'Test Dialog !!', | ||
25 | + barrierDismissible: true, | ||
26 | + ); | ||
27 | + }, | ||
28 | + ) | ||
29 | + ], | ||
16 | ), | 30 | ), |
17 | ), | 31 | ), |
18 | ); | 32 | ); |
@@ -18,7 +18,7 @@ class RootView extends GetView<RootController> { | @@ -18,7 +18,7 @@ class RootView extends GetView<RootController> { | ||
18 | centerTitle: true, | 18 | centerTitle: true, |
19 | ), | 19 | ), |
20 | body: GetRouterOutlet( | 20 | body: GetRouterOutlet( |
21 | - name: '/', | 21 | + name: 'rootView', |
22 | emptyPage: (delegate) => | 22 | emptyPage: (delegate) => |
23 | Get.routeTree.matchRoute(Routes.HOME).route!, | 23 | Get.routeTree.matchRoute(Routes.HOME).route!, |
24 | pickPages: (currentNavStack) { | 24 | pickPages: (currentNavStack) { |
@@ -31,18 +31,21 @@ class AppPages { | @@ -31,18 +31,21 @@ class AppPages { | ||
31 | page: () => RootView(), | 31 | page: () => RootView(), |
32 | binding: RootBinding(), | 32 | binding: RootBinding(), |
33 | participatesInRootNavigator: true, | 33 | participatesInRootNavigator: true, |
34 | + preventDuplicates: true, | ||
34 | children: [ | 35 | children: [ |
35 | GetPage( | 36 | GetPage( |
36 | middlewares: [ | 37 | middlewares: [ |
37 | //only enter this route when not authed | 38 | //only enter this route when not authed |
38 | EnsureNotAuthedMiddleware(), | 39 | EnsureNotAuthedMiddleware(), |
39 | ], | 40 | ], |
41 | + participatesInRootNavigator: false, | ||
40 | name: _Paths.LOGIN, | 42 | name: _Paths.LOGIN, |
41 | page: () => LoginView(), | 43 | page: () => LoginView(), |
42 | binding: LoginBinding(), | 44 | binding: LoginBinding(), |
43 | ), | 45 | ), |
44 | GetPage( | 46 | GetPage( |
45 | - participatesInRootNavigator: true, | 47 | + participatesInRootNavigator: false, |
48 | + preventDuplicates: true, | ||
46 | name: _Paths.HOME, | 49 | name: _Paths.HOME, |
47 | page: () => HomeView(), | 50 | page: () => HomeView(), |
48 | bindings: [ | 51 | bindings: [ |
@@ -16,14 +16,14 @@ void main() { | @@ -16,14 +16,14 @@ void main() { | ||
16 | }, | 16 | }, |
17 | ), | 17 | ), |
18 | getPages: AppPages.routes, | 18 | getPages: AppPages.routes, |
19 | - routeInformationParser: GetInformationParser( | ||
20 | - // initialRoute: Routes.HOME, | ||
21 | - ), | ||
22 | - routerDelegate: GetDelegate( | ||
23 | - backButtonPopMode: PopMode.History, | ||
24 | - preventDuplicateHandlingMode: | ||
25 | - PreventDuplicateHandlingMode.ReorderRoutes, | ||
26 | - ), | 19 | + // routeInformationParser: GetInformationParser( |
20 | + // // initialRoute: Routes.HOME, | ||
21 | + // ), | ||
22 | + // routerDelegate: GetDelegate( | ||
23 | + // backButtonPopMode: PopMode.History, | ||
24 | + // preventDuplicateHandlingMode: | ||
25 | + // PreventDuplicateHandlingMode.ReorderRoutes, | ||
26 | + // ), | ||
27 | ), | 27 | ), |
28 | ); | 28 | ); |
29 | } | 29 | } |
@@ -8,6 +8,7 @@ import 'smart_management.dart'; | @@ -8,6 +8,7 @@ import 'smart_management.dart'; | ||
8 | abstract class GetInterface { | 8 | abstract class GetInterface { |
9 | SmartManagement smartManagement = SmartManagement.full; | 9 | SmartManagement smartManagement = SmartManagement.full; |
10 | RouterDelegate? routerDelegate; | 10 | RouterDelegate? routerDelegate; |
11 | + RouteInformationParser? routeInformationParser; | ||
11 | String? reference; | 12 | String? reference; |
12 | bool isLogEnable = true; | 13 | bool isLogEnable = true; |
13 | LogWriterCallback log = defaultLogWriterCallback; | 14 | LogWriterCallback log = defaultLogWriterCallback; |
@@ -1016,7 +1016,12 @@ you can only use widgets and widget functions here'''; | @@ -1016,7 +1016,12 @@ you can only use widgets and widget functions here'''; | ||
1016 | } | 1016 | } |
1017 | 1017 | ||
1018 | GlobalKey<NavigatorState>? nestedKey(dynamic key) { | 1018 | GlobalKey<NavigatorState>? nestedKey(dynamic key) { |
1019 | - keys.putIfAbsent(key, () => GlobalKey<NavigatorState>()); | 1019 | + keys.putIfAbsent( |
1020 | + key, | ||
1021 | + () => GlobalKey<NavigatorState>( | ||
1022 | + debugLabel: 'Getx nested key: ${key.toString()}', | ||
1023 | + ), | ||
1024 | + ); | ||
1020 | return keys[key]; | 1025 | return keys[key]; |
1021 | } | 1026 | } |
1022 | 1027 | ||
@@ -1207,9 +1212,7 @@ extension NavTwoExt on GetInterface { | @@ -1207,9 +1212,7 @@ extension NavTwoExt on GetInterface { | ||
1207 | 1212 | ||
1208 | /// Casts the stored router delegate to a desired type | 1213 | /// Casts the stored router delegate to a desired type |
1209 | TDelegate? delegate<TDelegate extends RouterDelegate<TPage>, TPage>() => | 1214 | TDelegate? delegate<TDelegate extends RouterDelegate<TPage>, TPage>() => |
1210 | - _routerDelegate as TDelegate?; | ||
1211 | - | ||
1212 | - static GetDelegate? _routerDelegate; | 1215 | + routerDelegate as TDelegate?; |
1213 | 1216 | ||
1214 | // // ignore: use_setters_to_change_properties | 1217 | // // ignore: use_setters_to_change_properties |
1215 | // void setDefaultDelegate(RouterDelegate? delegate) { | 1218 | // void setDefaultDelegate(RouterDelegate? delegate) { |
@@ -1218,31 +1221,39 @@ extension NavTwoExt on GetInterface { | @@ -1218,31 +1221,39 @@ extension NavTwoExt on GetInterface { | ||
1218 | 1221 | ||
1219 | // GetDelegate? getDelegate() => delegate<GetDelegate, GetNavConfig>(); | 1222 | // GetDelegate? getDelegate() => delegate<GetDelegate, GetNavConfig>(); |
1220 | 1223 | ||
1221 | - static GetInformationParser? _informationParser; | ||
1222 | - | ||
1223 | GetInformationParser createInformationParser({String initialRoute = '/'}) { | 1224 | GetInformationParser createInformationParser({String initialRoute = '/'}) { |
1224 | - return _informationParser ??= | ||
1225 | - GetInformationParser(initialRoute: initialRoute); | 1225 | + if (routeInformationParser == null) { |
1226 | + return routeInformationParser = GetInformationParser( | ||
1227 | + initialRoute: initialRoute, | ||
1228 | + ); | ||
1229 | + } else { | ||
1230 | + return routerDelegate as GetInformationParser; | ||
1231 | + } | ||
1226 | } | 1232 | } |
1227 | 1233 | ||
1228 | // static GetDelegate? _delegate; | 1234 | // static GetDelegate? _delegate; |
1229 | 1235 | ||
1230 | GetDelegate get rootDelegate => createDelegate(); | 1236 | GetDelegate get rootDelegate => createDelegate(); |
1231 | 1237 | ||
1232 | - GetDelegate createDelegate( | ||
1233 | - {GetPage<dynamic>? notFoundRoute, | ||
1234 | - List<NavigatorObserver>? navigatorObservers, | ||
1235 | - TransitionDelegate<dynamic>? transitionDelegate, | ||
1236 | - PopMode backButtonPopMode = PopMode.History, | ||
1237 | - PreventDuplicateHandlingMode preventDuplicateHandlingMode = | ||
1238 | - PreventDuplicateHandlingMode.ReorderRoutes}) { | ||
1239 | - return _routerDelegate ??= GetDelegate( | ||
1240 | - notFoundRoute: notFoundRoute, | ||
1241 | - navigatorObservers: navigatorObservers, | ||
1242 | - transitionDelegate: transitionDelegate, | ||
1243 | - backButtonPopMode: backButtonPopMode, | ||
1244 | - preventDuplicateHandlingMode: preventDuplicateHandlingMode, | ||
1245 | - ); | 1238 | + GetDelegate createDelegate({ |
1239 | + GetPage<dynamic>? notFoundRoute, | ||
1240 | + List<NavigatorObserver>? navigatorObservers, | ||
1241 | + TransitionDelegate<dynamic>? transitionDelegate, | ||
1242 | + PopMode backButtonPopMode = PopMode.History, | ||
1243 | + PreventDuplicateHandlingMode preventDuplicateHandlingMode = | ||
1244 | + PreventDuplicateHandlingMode.ReorderRoutes, | ||
1245 | + }) { | ||
1246 | + if (routerDelegate == null) { | ||
1247 | + return routerDelegate = GetDelegate( | ||
1248 | + notFoundRoute: notFoundRoute, | ||
1249 | + navigatorObservers: navigatorObservers, | ||
1250 | + transitionDelegate: transitionDelegate, | ||
1251 | + backButtonPopMode: backButtonPopMode, | ||
1252 | + preventDuplicateHandlingMode: preventDuplicateHandlingMode, | ||
1253 | + ); | ||
1254 | + } else { | ||
1255 | + return routerDelegate as GetDelegate; | ||
1256 | + } | ||
1246 | } | 1257 | } |
1247 | } | 1258 | } |
1248 | 1259 |
@@ -7,7 +7,9 @@ class GetInformationParser extends RouteInformationParser<GetNavConfig> { | @@ -7,7 +7,9 @@ class GetInformationParser extends RouteInformationParser<GetNavConfig> { | ||
7 | 7 | ||
8 | GetInformationParser({ | 8 | GetInformationParser({ |
9 | this.initialRoute = '/', | 9 | this.initialRoute = '/', |
10 | - }); | 10 | + }) { |
11 | + Get.log('GetInformationParser is created !'); | ||
12 | + } | ||
11 | @override | 13 | @override |
12 | SynchronousFuture<GetNavConfig> parseRouteInformation( | 14 | SynchronousFuture<GetNavConfig> parseRouteInformation( |
13 | RouteInformation routeInformation, | 15 | RouteInformation routeInformation, |
@@ -46,7 +46,7 @@ enum PreventDuplicateHandlingMode { | @@ -46,7 +46,7 @@ enum PreventDuplicateHandlingMode { | ||
46 | ReorderRoutes | 46 | ReorderRoutes |
47 | } | 47 | } |
48 | 48 | ||
49 | -class GetDelegate<T> extends RouterDelegate<GetNavConfig> | 49 | +class GetDelegate extends RouterDelegate<GetNavConfig> |
50 | with ListenableMixin, ListNotifierMixin { | 50 | with ListenableMixin, ListNotifierMixin { |
51 | final List<GetNavConfig> history = <GetNavConfig>[]; | 51 | final List<GetNavConfig> history = <GetNavConfig>[]; |
52 | final PopMode backButtonPopMode; | 52 | final PopMode backButtonPopMode; |
@@ -68,7 +68,9 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | @@ -68,7 +68,9 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | ||
68 | this.backButtonPopMode = PopMode.History, | 68 | this.backButtonPopMode = PopMode.History, |
69 | this.preventDuplicateHandlingMode = | 69 | this.preventDuplicateHandlingMode = |
70 | PreventDuplicateHandlingMode.ReorderRoutes, | 70 | PreventDuplicateHandlingMode.ReorderRoutes, |
71 | - }); | 71 | + }) { |
72 | + Get.log('GetDelegate is created !'); | ||
73 | + } | ||
72 | 74 | ||
73 | GetNavConfig? runMiddleware(GetNavConfig config) { | 75 | GetNavConfig? runMiddleware(GetNavConfig config) { |
74 | final middlewares = config.currentTreeBranch.last.middlewares ?? []; | 76 | final middlewares = config.currentTreeBranch.last.middlewares ?? []; |
@@ -93,7 +95,7 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | @@ -93,7 +95,7 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | ||
93 | } | 95 | } |
94 | 96 | ||
95 | GetNavConfig? _unsafeHistoryRemoveAt(int index) { | 97 | GetNavConfig? _unsafeHistoryRemoveAt(int index) { |
96 | - if (index == history.length - 1) { | 98 | + if (index == history.length - 1 && history.length > 1) { |
97 | //removing WILL update the current route | 99 | //removing WILL update the current route |
98 | final toCheck = history[history.length - 2]; | 100 | final toCheck = history[history.length - 2]; |
99 | final resMiddleware = runMiddleware(toCheck); | 101 | final resMiddleware = runMiddleware(toCheck); |
@@ -290,8 +292,9 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | @@ -290,8 +292,9 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | ||
290 | 292 | ||
291 | @override | 293 | @override |
292 | Future<void> setInitialRoutePath(GetNavConfig configuration) async { | 294 | Future<void> setInitialRoutePath(GetNavConfig configuration) async { |
293 | - _unsafeHistoryClear(); | ||
294 | - _resultCompleter.clear(); | 295 | + //no need to clear history with Reorder route strategy |
296 | + // _unsafeHistoryClear(); | ||
297 | + // _resultCompleter.clear(); | ||
295 | await pushHistory(configuration); | 298 | await pushHistory(configuration); |
296 | } | 299 | } |
297 | 300 | ||
@@ -318,6 +321,11 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | @@ -318,6 +321,11 @@ class GetDelegate<T> extends RouterDelegate<GetNavConfig> | ||
318 | ); | 321 | ); |
319 | } | 322 | } |
320 | 323 | ||
324 | + Future<T?> offNamed<T>(String fullRoute) async { | ||
325 | + await popHistory(); | ||
326 | + return await toNamed(fullRoute); | ||
327 | + } | ||
328 | + | ||
321 | /// Removes routes according to [PopMode] | 329 | /// Removes routes according to [PopMode] |
322 | /// until it reaches the specifc [fullRoute], | 330 | /// until it reaches the specifc [fullRoute], |
323 | /// DOES NOT remove the [fullRoute] | 331 | /// DOES NOT remove the [fullRoute] |
@@ -25,17 +25,17 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object> | @@ -25,17 +25,17 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object> | ||
25 | required Widget Function( | 25 | required Widget Function( |
26 | BuildContext context, | 26 | BuildContext context, |
27 | TDelegate, | 27 | TDelegate, |
28 | - GetPage? page, | 28 | + List<GetPage>? page, |
29 | ) | 29 | ) |
30 | pageBuilder, | 30 | pageBuilder, |
31 | }) : this.builder( | 31 | }) : this.builder( |
32 | builder: (context, rDelegate, currentConfig) { | 32 | builder: (context, rDelegate, currentConfig) { |
33 | - final picked = | ||
34 | - currentConfig == null ? <GetPage>[] : pickPages(currentConfig); | ||
35 | - if (picked.length == 0) { | ||
36 | - return pageBuilder(context, rDelegate, null); | 33 | + var picked = |
34 | + currentConfig == null ? null : pickPages(currentConfig); | ||
35 | + if (picked?.length == 0) { | ||
36 | + picked = null; | ||
37 | } | 37 | } |
38 | - return pageBuilder(context, rDelegate, picked.last); | 38 | + return pageBuilder(context, rDelegate, picked); |
39 | }, | 39 | }, |
40 | delegate: delegate, | 40 | delegate: delegate, |
41 | ); | 41 | ); |
@@ -101,15 +101,25 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { | @@ -101,15 +101,25 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { | ||
101 | (emptyPage == null && emptyWidget != null), | 101 | (emptyPage == null && emptyWidget != null), |
102 | 'Either use emptyPage or emptyWidget'), | 102 | 'Either use emptyPage or emptyWidget'), |
103 | super( | 103 | super( |
104 | - pageBuilder: (context, rDelegate, page) { | ||
105 | - var pageRes = page ?? emptyPage?.call(rDelegate); | ||
106 | - if (pageRes != null) { | 104 | + pageBuilder: (context, rDelegate, pages) { |
105 | + final pageRes = | ||
106 | + (pages ?? <GetPage<dynamic>?>[emptyPage?.call(rDelegate)]) | ||
107 | + .whereType<GetPage<dynamic>>() | ||
108 | + .toList(); | ||
109 | + | ||
110 | + final badPages = pageRes.where( | ||
111 | + (element) => element.participatesInRootNavigator == true); | ||
112 | + if (badPages.length > 0) { | ||
113 | + throw """Pages in a router outlet shouldn't participate in the root navigator | ||
114 | + $badPages"""; | ||
115 | + } | ||
116 | + if (pageRes.length > 0) { | ||
107 | return GetNavigator( | 117 | return GetNavigator( |
108 | onPopPage: onPopPage ?? | 118 | onPopPage: onPopPage ?? |
109 | (a, c) { | 119 | (a, c) { |
110 | return true; | 120 | return true; |
111 | }, | 121 | }, |
112 | - pages: [pageRes], | 122 | + pages: pageRes, |
113 | name: name, | 123 | name: name, |
114 | ); | 124 | ); |
115 | } | 125 | } |
@@ -163,11 +163,13 @@ class GetCupertinoApp extends StatelessWidget { | @@ -163,11 +163,13 @@ class GetCupertinoApp extends StatelessWidget { | ||
163 | this.defaultGlobalState, | 163 | this.defaultGlobalState, |
164 | this.getPages, | 164 | this.getPages, |
165 | this.unknownRoute, | 165 | this.unknownRoute, |
166 | - }) : routerDelegate = routerDelegate ?? Get.createDelegate(), | ||
167 | - routeInformationParser = routeInformationParser ?? | ||
168 | - Get.createInformationParser( | ||
169 | - initialRoute: getPages?.first.name ?? '/', | ||
170 | - ), | 166 | + }) : routerDelegate = routerDelegate ??= Get.createDelegate( |
167 | + notFoundRoute: unknownRoute, | ||
168 | + ), | ||
169 | + routeInformationParser = | ||
170 | + routeInformationParser ??= Get.createInformationParser( | ||
171 | + initialRoute: getPages?.first.name ?? '/', | ||
172 | + ), | ||
171 | navigatorObservers = null, | 173 | navigatorObservers = null, |
172 | navigatorKey = null, | 174 | navigatorKey = null, |
173 | onGenerateRoute = null, | 175 | onGenerateRoute = null, |
@@ -176,7 +178,10 @@ class GetCupertinoApp extends StatelessWidget { | @@ -176,7 +178,10 @@ class GetCupertinoApp extends StatelessWidget { | ||
176 | onUnknownRoute = null, | 178 | onUnknownRoute = null, |
177 | routes = null, | 179 | routes = null, |
178 | initialRoute = null, | 180 | initialRoute = null, |
179 | - super(key: key); | 181 | + super(key: key) { |
182 | + Get.routerDelegate = routerDelegate; | ||
183 | + Get.routeInformationParser = routeInformationParser; | ||
184 | + } | ||
180 | 185 | ||
181 | Route<dynamic> generator(RouteSettings settings) { | 186 | Route<dynamic> generator(RouteSettings settings) { |
182 | return PageRedirect(settings: settings, unknownRoute: unknownRoute).page(); | 187 | return PageRedirect(settings: settings, unknownRoute: unknownRoute).page(); |
@@ -173,11 +173,13 @@ class GetMaterialApp extends StatelessWidget { | @@ -173,11 +173,13 @@ class GetMaterialApp extends StatelessWidget { | ||
173 | this.defaultGlobalState, | 173 | this.defaultGlobalState, |
174 | this.getPages, | 174 | this.getPages, |
175 | this.unknownRoute, | 175 | this.unknownRoute, |
176 | - }) : routerDelegate = routerDelegate ?? Get.createDelegate(), | ||
177 | - routeInformationParser = routeInformationParser ?? | ||
178 | - Get.createInformationParser( | ||
179 | - initialRoute: getPages?.first.name ?? '/', | ||
180 | - ), | 176 | + }) : routerDelegate = routerDelegate ??= Get.createDelegate( |
177 | + notFoundRoute: unknownRoute, | ||
178 | + ), | ||
179 | + routeInformationParser = | ||
180 | + routeInformationParser ??= Get.createInformationParser( | ||
181 | + initialRoute: getPages?.first.name ?? '/', | ||
182 | + ), | ||
181 | navigatorObservers = null, | 183 | navigatorObservers = null, |
182 | navigatorKey = null, | 184 | navigatorKey = null, |
183 | onGenerateRoute = null, | 185 | onGenerateRoute = null, |
@@ -186,7 +188,10 @@ class GetMaterialApp extends StatelessWidget { | @@ -186,7 +188,10 @@ class GetMaterialApp extends StatelessWidget { | ||
186 | onUnknownRoute = null, | 188 | onUnknownRoute = null, |
187 | routes = null, | 189 | routes = null, |
188 | initialRoute = null, | 190 | initialRoute = null, |
189 | - super(key: key); | 191 | + super(key: key) { |
192 | + Get.routerDelegate = routerDelegate; | ||
193 | + Get.routeInformationParser = routeInformationParser; | ||
194 | + } | ||
190 | 195 | ||
191 | Route<dynamic> generator(RouteSettings settings) { | 196 | Route<dynamic> generator(RouteSettings settings) { |
192 | return PageRedirect(settings: settings, unknownRoute: unknownRoute).page(); | 197 | return PageRedirect(settings: settings, unknownRoute: unknownRoute).page(); |
@@ -128,24 +128,9 @@ class ParseRouteTree { | @@ -128,24 +128,9 @@ class ParseRouteTree { | ||
128 | /// Change the Path for a [GetPage] | 128 | /// Change the Path for a [GetPage] |
129 | GetPage _addChild( | 129 | GetPage _addChild( |
130 | GetPage origin, String parentPath, List<GetMiddleware> middlewares) => | 130 | GetPage origin, String parentPath, List<GetMiddleware> middlewares) => |
131 | - GetPage( | ||
132 | - name: (parentPath + origin.name).replaceAll(r'//', '/'), | ||
133 | - page: origin.page, | ||
134 | - title: origin.title, | ||
135 | - alignment: origin.alignment, | ||
136 | - transition: origin.transition, | ||
137 | - binding: origin.binding, | ||
138 | - bindings: origin.bindings, | ||
139 | - curve: origin.curve, | ||
140 | - customTransition: origin.customTransition, | ||
141 | - fullscreenDialog: origin.fullscreenDialog, | ||
142 | - maintainState: origin.maintainState, | ||
143 | - opaque: origin.opaque, | ||
144 | - parameter: origin.parameter, | ||
145 | - popGesture: origin.popGesture, | ||
146 | - preventDuplicates: origin.preventDuplicates, | ||
147 | - transitionDuration: origin.transitionDuration, | 131 | + origin.copy( |
148 | middlewares: middlewares, | 132 | middlewares: middlewares, |
133 | + name: (parentPath + origin.name).replaceAll(r'//', '/'), | ||
149 | ); | 134 | ); |
150 | 135 | ||
151 | GetPage? _findRoute(String name) { | 136 | GetPage? _findRoute(String name) { |
@@ -29,7 +29,7 @@ class GetMaterialController extends GetxController { | @@ -29,7 +29,7 @@ class GetMaterialController extends GetxController { | ||
29 | 29 | ||
30 | CustomTransition? customTransition; | 30 | CustomTransition? customTransition; |
31 | 31 | ||
32 | - GlobalKey<NavigatorState> key = GlobalKey<NavigatorState>(); | 32 | + var key = GlobalKey<NavigatorState>(debugLabel: 'Key Created by default'); |
33 | 33 | ||
34 | Map<dynamic, GlobalKey<NavigatorState>> keys = {}; | 34 | Map<dynamic, GlobalKey<NavigatorState>> keys = {}; |
35 | 35 |
-
Please register or login to post a comment