Showing
6 changed files
with
48 additions
and
17 deletions
@@ -8,7 +8,7 @@ FLUTTER_BUILD_NAME=1.0.0 | @@ -8,7 +8,7 @@ FLUTTER_BUILD_NAME=1.0.0 | ||
8 | FLUTTER_BUILD_NUMBER=1 | 8 | FLUTTER_BUILD_NUMBER=1 |
9 | EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386 | 9 | EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386 |
10 | EXCLUDED_ARCHS[sdk=iphoneos*]=armv7 | 10 | EXCLUDED_ARCHS[sdk=iphoneos*]=armv7 |
11 | -DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9iMjAxODNlMDQwOTYwOTRiY2MzN2Q5Y2RlMmE0Yjk2ZjVjYzY4NGNmLw== | 11 | +DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9iOGQzNTgxMGU5MWFiOGZjMzliYTVlN2E0MWJmZjZmNjk3ZThlM2E4Lw== |
12 | DART_OBFUSCATION=false | 12 | DART_OBFUSCATION=false |
13 | TRACK_WIDGET_CREATION=true | 13 | TRACK_WIDGET_CREATION=true |
14 | TREE_SHAKE_ICONS=false | 14 | TREE_SHAKE_ICONS=false |
@@ -7,7 +7,7 @@ export "FLUTTER_TARGET=/Users/jonatasborges/getx5/getx/example_nav2/lib/main.dar | @@ -7,7 +7,7 @@ export "FLUTTER_TARGET=/Users/jonatasborges/getx5/getx/example_nav2/lib/main.dar | ||
7 | export "FLUTTER_BUILD_DIR=build" | 7 | export "FLUTTER_BUILD_DIR=build" |
8 | export "FLUTTER_BUILD_NAME=1.0.0" | 8 | export "FLUTTER_BUILD_NAME=1.0.0" |
9 | export "FLUTTER_BUILD_NUMBER=1" | 9 | export "FLUTTER_BUILD_NUMBER=1" |
10 | -export "DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9iMjAxODNlMDQwOTYwOTRiY2MzN2Q5Y2RlMmE0Yjk2ZjVjYzY4NGNmLw==" | 10 | +export "DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9iOGQzNTgxMGU5MWFiOGZjMzliYTVlN2E0MWJmZjZmNjk3ZThlM2E4Lw==" |
11 | export "DART_OBFUSCATION=false" | 11 | export "DART_OBFUSCATION=false" |
12 | export "TRACK_WIDGET_CREATION=true" | 12 | export "TRACK_WIDGET_CREATION=true" |
13 | export "TREE_SHAKE_ICONS=false" | 13 | export "TREE_SHAKE_ICONS=false" |
@@ -37,7 +37,6 @@ class ProfileView extends GetView<ProfileController> { | @@ -37,7 +37,6 @@ class ProfileView extends GetView<ProfileController> { | ||
37 | child: const Text('Show a test dialog in Home router outlet'), | 37 | child: const Text('Show a test dialog in Home router outlet'), |
38 | onPressed: () { | 38 | onPressed: () { |
39 | //shows a dialog | 39 | //shows a dialog |
40 | - | ||
41 | Get.defaultDialog( | 40 | Get.defaultDialog( |
42 | title: 'Test Dialog In Home Outlet !!', | 41 | title: 'Test Dialog In Home Outlet !!', |
43 | barrierDismissible: true, | 42 | barrierDismissible: true, |
@@ -75,6 +75,10 @@ class RouteDecoder { | @@ -75,6 +75,10 @@ class RouteDecoder { | ||
75 | 75 | ||
76 | @override | 76 | @override |
77 | int get hashCode => currentTreeBranch.hashCode ^ pageSettings.hashCode; | 77 | int get hashCode => currentTreeBranch.hashCode ^ pageSettings.hashCode; |
78 | + | ||
79 | + @override | ||
80 | + String toString() => | ||
81 | + 'RouteDecoder(currentTreeBranch: $currentTreeBranch, pageSettings: $pageSettings)'; | ||
78 | } | 82 | } |
79 | 83 | ||
80 | class ParseRouteTree { | 84 | class ParseRouteTree { |
@@ -127,18 +127,22 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { | @@ -127,18 +127,22 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { | ||
127 | ].whereType<GetPage>(); | 127 | ].whereType<GetPage>(); |
128 | 128 | ||
129 | if (pageRes.isNotEmpty) { | 129 | if (pageRes.isNotEmpty) { |
130 | - return GetNavigator( | ||
131 | - restorationScopeId: restorationScopeId, | ||
132 | - onPopPage: onPopPage ?? | ||
133 | - (route, result) { | ||
134 | - final didPop = route.didPop(result); | ||
135 | - if (!didPop) { | ||
136 | - return false; | ||
137 | - } | ||
138 | - return true; | ||
139 | - }, | ||
140 | - pages: pageRes.toList(), | ||
141 | - key: navigatorKey, | 130 | + return InheritedNavigator( |
131 | + navigatorKey: navigatorKey ?? | ||
132 | + Get.rootController.rootDelegate.navigatorKey, | ||
133 | + child: GetNavigator( | ||
134 | + restorationScopeId: restorationScopeId, | ||
135 | + onPopPage: onPopPage ?? | ||
136 | + (route, result) { | ||
137 | + final didPop = route.didPop(result); | ||
138 | + if (!didPop) { | ||
139 | + return false; | ||
140 | + } | ||
141 | + return true; | ||
142 | + }, | ||
143 | + pages: pageRes.toList(), | ||
144 | + key: navigatorKey, | ||
145 | + ), | ||
142 | ); | 146 | ); |
143 | } | 147 | } |
144 | return (emptyWidget?.call(rDelegate) ?? const SizedBox.shrink()); | 148 | return (emptyWidget?.call(rDelegate) ?? const SizedBox.shrink()); |
@@ -163,6 +167,30 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { | @@ -163,6 +167,30 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { | ||
163 | ); | 167 | ); |
164 | } | 168 | } |
165 | 169 | ||
170 | +class InheritedNavigator extends InheritedWidget { | ||
171 | + const InheritedNavigator({ | ||
172 | + super.key, | ||
173 | + required super.child, | ||
174 | + required this.navigatorKey, | ||
175 | + }); | ||
176 | + final GlobalKey<NavigatorState> navigatorKey; | ||
177 | + | ||
178 | + static InheritedNavigator? of(BuildContext context) { | ||
179 | + return context.dependOnInheritedWidgetOfExactType<InheritedNavigator>(); | ||
180 | + } | ||
181 | + | ||
182 | + @override | ||
183 | + bool updateShouldNotify(InheritedNavigator oldWidget) { | ||
184 | + return true; | ||
185 | + } | ||
186 | +} | ||
187 | + | ||
188 | +extension NavKeyExt on BuildContext { | ||
189 | + GlobalKey<NavigatorState>? get parentNavigatorKey { | ||
190 | + return InheritedNavigator.of(this)?.navigatorKey; | ||
191 | + } | ||
192 | +} | ||
193 | + | ||
166 | extension PagesListExt on List<GetPage> { | 194 | extension PagesListExt on List<GetPage> { |
167 | /// Returns the route and all following routes after the given route. | 195 | /// Returns the route and all following routes after the given route. |
168 | Iterable<GetPage> pickFromRoute(String route) { | 196 | Iterable<GetPage> pickFromRoute(String route) { |
@@ -225,7 +253,8 @@ mixin RouterListenerMixin<T extends StatefulWidget> on State<T> { | @@ -225,7 +253,8 @@ mixin RouterListenerMixin<T extends StatefulWidget> on State<T> { | ||
225 | super.didChangeDependencies(); | 253 | super.didChangeDependencies(); |
226 | disposer?.call(); | 254 | disposer?.call(); |
227 | final router = Router.of(context); | 255 | final router = Router.of(context); |
228 | - delegate ??= router.routerDelegate; | 256 | + delegate ??= router.routerDelegate as GetDelegate; |
257 | + | ||
229 | delegate?.addListener(_listener); | 258 | delegate?.addListener(_listener); |
230 | disposer = () => delegate?.removeListener(_listener); | 259 | disposer = () => delegate?.removeListener(_listener); |
231 | } | 260 | } |
-
Please register or login to post a comment