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