Showing
12 changed files
with
43 additions
and
149 deletions
| 1 | -import 'package:example_nav2/services/auth_service.dart'; | ||
| 2 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
| 3 | import 'package:get/get.dart'; | 2 | import 'package:get/get.dart'; |
| 4 | 3 | ||
| 4 | +import '../../../../services/auth_service.dart'; | ||
| 5 | import '../../../routes/app_pages.dart'; | 5 | import '../../../routes/app_pages.dart'; |
| 6 | 6 | ||
| 7 | class DrawerWidget extends StatelessWidget { | 7 | class DrawerWidget extends StatelessWidget { |
| 1 | -import 'package:example_nav2/app/middleware/auth_middleware.dart'; | ||
| 2 | import 'package:get/get.dart'; | 1 | import 'package:get/get.dart'; |
| 3 | -import 'package:get/get_navigation/src/nav2/router_outlet.dart'; | ||
| 4 | - | ||
| 5 | -import 'package:example_nav2/app/modules/login/bindings/login_binding.dart'; | ||
| 6 | -import 'package:example_nav2/app/modules/login/views/login_view.dart'; | ||
| 7 | 2 | ||
| 3 | +import '../middleware/auth_middleware.dart'; | ||
| 8 | import '../modules/home/bindings/home_binding.dart'; | 4 | import '../modules/home/bindings/home_binding.dart'; |
| 9 | import '../modules/home/views/home_view.dart'; | 5 | import '../modules/home/views/home_view.dart'; |
| 6 | +import '../modules/login/bindings/login_binding.dart'; | ||
| 7 | +import '../modules/login/views/login_view.dart'; | ||
| 10 | import '../modules/product_details/bindings/product_details_binding.dart'; | 8 | import '../modules/product_details/bindings/product_details_binding.dart'; |
| 11 | import '../modules/product_details/views/product_details_view.dart'; | 9 | import '../modules/product_details/views/product_details_view.dart'; |
| 12 | import '../modules/products/bindings/products_binding.dart'; | 10 | import '../modules/products/bindings/products_binding.dart'; |
| 1 | -import 'package:example_nav2/services/auth_service.dart'; | ||
| 2 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
| 3 | - | ||
| 4 | import 'package:get/get.dart'; | 2 | import 'package:get/get.dart'; |
| 5 | -import 'package:get/get_navigation/src/nav2/get_router_delegate.dart'; | ||
| 6 | 3 | ||
| 7 | import 'app/routes/app_pages.dart'; | 4 | import 'app/routes/app_pages.dart'; |
| 5 | +import 'services/auth_service.dart'; | ||
| 8 | 6 | ||
| 9 | void main() { | 7 | void main() { |
| 10 | runApp( | 8 | runApp( |
| @@ -1011,8 +1011,7 @@ you can only use widgets and widget functions here'''; | @@ -1011,8 +1011,7 @@ you can only use widgets and widget functions here'''; | ||
| 1011 | } | 1011 | } |
| 1012 | 1012 | ||
| 1013 | GlobalKey<NavigatorState>? addKey(GlobalKey<NavigatorState> newKey) { | 1013 | GlobalKey<NavigatorState>? addKey(GlobalKey<NavigatorState> newKey) { |
| 1014 | - getxController.key = newKey; | ||
| 1015 | - return key; | 1014 | + return getxController.addKey(newKey); |
| 1016 | } | 1015 | } |
| 1017 | 1016 | ||
| 1018 | GlobalKey<NavigatorState>? nestedKey(dynamic key) { | 1017 | GlobalKey<NavigatorState>? nestedKey(dynamic key) { |
| @@ -73,7 +73,10 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | @@ -73,7 +73,10 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | ||
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | GetNavConfig? runMiddleware(GetNavConfig config) { | 75 | GetNavConfig? runMiddleware(GetNavConfig config) { |
| 76 | - final middlewares = config.currentTreeBranch.last.middlewares ?? []; | 76 | + final middlewares = config.currentTreeBranch.last.middlewares; |
| 77 | + if (middlewares == null) { | ||
| 78 | + return config; | ||
| 79 | + } | ||
| 77 | var iterator = config; | 80 | var iterator = config; |
| 78 | for (var item in middlewares) { | 81 | for (var item in middlewares) { |
| 79 | var redirectRes = item.redirectDelegate(iterator); | 82 | var redirectRes = item.redirectDelegate(iterator); |
| @@ -105,9 +108,9 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | @@ -105,9 +108,9 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | ||
| 105 | return history.removeAt(index); | 108 | return history.removeAt(index); |
| 106 | } | 109 | } |
| 107 | 110 | ||
| 108 | - void _unsafeHistoryClear() { | ||
| 109 | - history.clear(); | ||
| 110 | - } | 111 | + // void _unsafeHistoryClear() { |
| 112 | + // history.clear(); | ||
| 113 | + // } | ||
| 111 | 114 | ||
| 112 | /// Adds a new history entry and waits for the result | 115 | /// Adds a new history entry and waits for the result |
| 113 | Future<T?> pushHistory<T>( | 116 | Future<T?> pushHistory<T>( |
| @@ -260,7 +263,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | @@ -260,7 +263,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | ||
| 260 | if (currentHistory == null) return <GetPage>[]; | 263 | if (currentHistory == null) return <GetPage>[]; |
| 261 | 264 | ||
| 262 | final res = currentHistory.currentTreeBranch | 265 | final res = currentHistory.currentTreeBranch |
| 263 | - .where((r) => r.participatesInRootNavigator != null); | 266 | + .where((r) => r.participatesInRootNavigator); |
| 264 | if (res.length == 0) { | 267 | if (res.length == 0) { |
| 265 | //default behavoir, all routes participate in root navigator | 268 | //default behavoir, all routes participate in root navigator |
| 266 | return currentHistory.currentTreeBranch; | 269 | return currentHistory.currentTreeBranch; |
| @@ -312,6 +315,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | @@ -312,6 +315,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | ||
| 312 | 315 | ||
| 313 | Future<T?> toNamed<T>(String fullRoute) { | 316 | Future<T?> toNamed<T>(String fullRoute) { |
| 314 | final decoder = Get.routeTree.matchRoute(fullRoute); | 317 | final decoder = Get.routeTree.matchRoute(fullRoute); |
| 318 | + | ||
| 315 | return pushHistory<T>( | 319 | return pushHistory<T>( |
| 316 | GetNavConfig( | 320 | GetNavConfig( |
| 317 | currentTreeBranch: decoder.treeBranch, | 321 | currentTreeBranch: decoder.treeBranch, |
| @@ -421,7 +425,14 @@ class GetNavigator extends Navigator { | @@ -421,7 +425,14 @@ class GetNavigator extends Navigator { | ||
| 421 | 'GetNavigator should either have a key or a name set'), | 425 | 'GetNavigator should either have a key or a name set'), |
| 422 | super( | 426 | super( |
| 423 | key: key ?? Get.nestedKey(name), | 427 | key: key ?? Get.nestedKey(name), |
| 424 | - onPopPage: onPopPage, | 428 | + onPopPage: onPopPage ?? |
| 429 | + (route, result) { | ||
| 430 | + final didPop = route.didPop(result); | ||
| 431 | + if (!didPop) { | ||
| 432 | + return false; | ||
| 433 | + } | ||
| 434 | + return true; | ||
| 435 | + }, | ||
| 425 | reportsRouteUpdateToEngine: reportsRouteUpdateToEngine, | 436 | reportsRouteUpdateToEngine: reportsRouteUpdateToEngine, |
| 426 | pages: pages, | 437 | pages: pages, |
| 427 | observers: [ | 438 | observers: [ |
| @@ -116,7 +116,11 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { | @@ -116,7 +116,11 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { | ||
| 116 | if (pageRes.length > 0) { | 116 | if (pageRes.length > 0) { |
| 117 | return GetNavigator( | 117 | return GetNavigator( |
| 118 | onPopPage: onPopPage ?? | 118 | onPopPage: onPopPage ?? |
| 119 | - (a, c) { | 119 | + (route, result) { |
| 120 | + final didPop = route.didPop(result); | ||
| 121 | + if (!didPop) { | ||
| 122 | + return false; | ||
| 123 | + } | ||
| 120 | return true; | 124 | return true; |
| 121 | }, | 125 | }, |
| 122 | pages: pageRes, | 126 | pages: pageRes, |
| @@ -91,12 +91,12 @@ class ParseRouteTree { | @@ -91,12 +91,12 @@ class ParseRouteTree { | ||
| 91 | 91 | ||
| 92 | List<GetPage> _flattenPage(GetPage route) { | 92 | List<GetPage> _flattenPage(GetPage route) { |
| 93 | final result = <GetPage>[]; | 93 | final result = <GetPage>[]; |
| 94 | - if (route.children == null || route.children!.isEmpty) { | 94 | + if (route.children.isEmpty) { |
| 95 | return result; | 95 | return result; |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | final parentPath = route.name; | 98 | final parentPath = route.name; |
| 99 | - for (var page in route.children!) { | 99 | + for (var page in route.children) { |
| 100 | // Add Parent middlewares to children | 100 | // Add Parent middlewares to children |
| 101 | final parentMiddlewares = [ | 101 | final parentMiddlewares = [ |
| 102 | if (page.middlewares != null) ...page.middlewares!, | 102 | if (page.middlewares != null) ...page.middlewares!, |
| @@ -29,7 +29,14 @@ class GetMaterialController extends GetxController { | @@ -29,7 +29,14 @@ class GetMaterialController extends GetxController { | ||
| 29 | 29 | ||
| 30 | CustomTransition? customTransition; | 30 | CustomTransition? customTransition; |
| 31 | 31 | ||
| 32 | - var key = GlobalKey<NavigatorState>(debugLabel: 'Key Created by default'); | 32 | + var _key = GlobalKey<NavigatorState>(debugLabel: 'Key Created by default'); |
| 33 | + | ||
| 34 | + GlobalKey<NavigatorState> get key => _key; | ||
| 35 | + | ||
| 36 | + GlobalKey<NavigatorState>? addKey(GlobalKey<NavigatorState> newKey) { | ||
| 37 | + _key = newKey; | ||
| 38 | + return key; | ||
| 39 | + } | ||
| 33 | 40 | ||
| 34 | Map<dynamic, GlobalKey<NavigatorState>> keys = {}; | 41 | Map<dynamic, GlobalKey<NavigatorState>> keys = {}; |
| 35 | 42 |
| 1 | -// import 'package:flutter/material.dart'; | ||
| 2 | - | ||
| 3 | -// import '../../../get.dart'; | ||
| 4 | -// import 'custom_transition.dart'; | ||
| 5 | -// import 'get_transition_mixin.dart'; | ||
| 6 | -// import 'route_middleware.dart'; | ||
| 7 | -// import 'transitions_type.dart'; | ||
| 8 | - | ||
| 9 | -// class GetPageRoute<T> extends PageRoute<T> | ||
| 10 | -// with GetPageRouteTransitionMixin<T> { | ||
| 11 | -// /// Creates a page route for use in an iOS designed app. | ||
| 12 | -// /// | ||
| 13 | -// /// The [builder], [maintainState], and [fullscreenDialog] arguments must not | ||
| 14 | -// /// be null. | ||
| 15 | -// GetPageRoute({ | ||
| 16 | -// RouteSettings? settings, | ||
| 17 | -// this.transitionDuration = const Duration(milliseconds: 300), | ||
| 18 | -// this.opaque = true, | ||
| 19 | -// this.parameter, | ||
| 20 | -// this.curve, | ||
| 21 | -// this.alignment, | ||
| 22 | -// this.transition, | ||
| 23 | -// this.popGesture, | ||
| 24 | -// this.customTransition, | ||
| 25 | -// this.barrierDismissible = false, | ||
| 26 | -// this.barrierColor, | ||
| 27 | -// this.binding, | ||
| 28 | -// this.bindings, | ||
| 29 | -// this.routeName, | ||
| 30 | -// this.page, | ||
| 31 | -// this.title, | ||
| 32 | -// this.barrierLabel, | ||
| 33 | -// this.maintainState = true, | ||
| 34 | -// bool fullscreenDialog = false, | ||
| 35 | -// this.middlewares, | ||
| 36 | -// }) : reference = "$routeName: ${settings?.hashCode ?? page.hashCode}", | ||
| 37 | -// super(settings: settings, fullscreenDialog: fullscreenDialog); | ||
| 38 | - | ||
| 39 | -// @override | ||
| 40 | -// final Duration transitionDuration; | ||
| 41 | -// final GetPageBuilder? page; | ||
| 42 | -// final String? routeName; | ||
| 43 | -// final String reference; | ||
| 44 | -// final CustomTransition? customTransition; | ||
| 45 | -// final Bindings? binding; | ||
| 46 | -// final Map<String, String>? parameter; | ||
| 47 | -// final List<Bindings>? bindings; | ||
| 48 | - | ||
| 49 | -// @override | ||
| 50 | -// final bool opaque; | ||
| 51 | -// final bool? popGesture; | ||
| 52 | - | ||
| 53 | -// @override | ||
| 54 | -// final bool barrierDismissible; | ||
| 55 | -// final Transition? transition; | ||
| 56 | -// final Curve? curve; | ||
| 57 | -// final Alignment? alignment; | ||
| 58 | -// final List<GetMiddleware>? middlewares; | ||
| 59 | - | ||
| 60 | -// @override | ||
| 61 | -// final Color? barrierColor; | ||
| 62 | - | ||
| 63 | -// @override | ||
| 64 | -// final String? barrierLabel; | ||
| 65 | - | ||
| 66 | -// @override | ||
| 67 | -// final bool maintainState; | ||
| 68 | - | ||
| 69 | -// @override | ||
| 70 | -// void dispose() { | ||
| 71 | -// super.dispose(); | ||
| 72 | -// if (Get.smartManagement != SmartManagement.onlyBuilder) { | ||
| 73 | -// WidgetsBinding.instance!.addPostFrameCallback((_) { | ||
| 74 | -// if (Get.reference != reference) { | ||
| 75 | -// GetInstance().removeDependencyByRoute("$reference"); | ||
| 76 | -// } | ||
| 77 | -// }); | ||
| 78 | -// } | ||
| 79 | - | ||
| 80 | -// // if (Get.smartManagement != SmartManagement.onlyBuilder) { | ||
| 81 | -// // GetInstance().removeDependencyByRoute("$reference"); | ||
| 82 | -// // } | ||
| 83 | - | ||
| 84 | -// final middlewareRunner = MiddlewareRunner(middlewares); | ||
| 85 | -// middlewareRunner.runOnPageDispose(); | ||
| 86 | -// } | ||
| 87 | - | ||
| 88 | -// @override | ||
| 89 | -// Widget buildContent(BuildContext context) { | ||
| 90 | -// Get.reference = reference; | ||
| 91 | -// final middlewareRunner = MiddlewareRunner(middlewares); | ||
| 92 | -// final bindingsToBind = middlewareRunner.runOnBindingsStart(bindings); | ||
| 93 | - | ||
| 94 | -// binding?.dependencies(); | ||
| 95 | -// if (bindingsToBind != null) { | ||
| 96 | -// for (final binding in bindingsToBind) { | ||
| 97 | -// binding.dependencies(); | ||
| 98 | -// } | ||
| 99 | -// } | ||
| 100 | - | ||
| 101 | -// final pageToBuild = middlewareRunner.runOnPageBuildStart(page)!; | ||
| 102 | -// return middlewareRunner.runOnPageBuilt(pageToBuild()); | ||
| 103 | -// } | ||
| 104 | - | ||
| 105 | -// @override | ||
| 106 | -// final String? title; | ||
| 107 | - | ||
| 108 | -// @override | ||
| 109 | -// String get debugLabel => '${super.debugLabel}(${settings.name})'; | ||
| 110 | -// } |
| @@ -34,7 +34,7 @@ class GetPage<T> extends Page<T> { | @@ -34,7 +34,7 @@ class GetPage<T> extends Page<T> { | ||
| 34 | final String? title; | 34 | final String? title; |
| 35 | final Transition? transition; | 35 | final Transition? transition; |
| 36 | final Curve curve; | 36 | final Curve curve; |
| 37 | - final bool? participatesInRootNavigator; | 37 | + final bool participatesInRootNavigator; |
| 38 | final Alignment? alignment; | 38 | final Alignment? alignment; |
| 39 | final bool maintainState; | 39 | final bool maintainState; |
| 40 | final bool opaque; | 40 | final bool opaque; |
| @@ -57,7 +57,7 @@ class GetPage<T> extends Page<T> { | @@ -57,7 +57,7 @@ class GetPage<T> extends Page<T> { | ||
| 57 | @override | 57 | @override |
| 58 | final String name; | 58 | final String name; |
| 59 | 59 | ||
| 60 | - final List<GetPage>? children; | 60 | + final List<GetPage> children; |
| 61 | final List<GetMiddleware>? middlewares; | 61 | final List<GetMiddleware>? middlewares; |
| 62 | final PathDecoded path; | 62 | final PathDecoded path; |
| 63 | final GetPage? unknownRoute; | 63 | final GetPage? unknownRoute; |
| @@ -66,7 +66,7 @@ class GetPage<T> extends Page<T> { | @@ -66,7 +66,7 @@ class GetPage<T> extends Page<T> { | ||
| 66 | required this.name, | 66 | required this.name, |
| 67 | required this.page, | 67 | required this.page, |
| 68 | this.title, | 68 | this.title, |
| 69 | - this.participatesInRootNavigator, | 69 | + this.participatesInRootNavigator = true, |
| 70 | this.gestureWidth = 20, | 70 | this.gestureWidth = 20, |
| 71 | // RouteSettings settings, | 71 | // RouteSettings settings, |
| 72 | this.maintainState = true, | 72 | this.maintainState = true, |
| @@ -81,7 +81,7 @@ class GetPage<T> extends Page<T> { | @@ -81,7 +81,7 @@ class GetPage<T> extends Page<T> { | ||
| 81 | this.transition, | 81 | this.transition, |
| 82 | this.customTransition, | 82 | this.customTransition, |
| 83 | this.fullscreenDialog = false, | 83 | this.fullscreenDialog = false, |
| 84 | - this.children, | 84 | + this.children = const <GetPage>[], |
| 85 | this.middlewares, | 85 | this.middlewares, |
| 86 | this.unknownRoute, | 86 | this.unknownRoute, |
| 87 | this.preventDuplicates = true, | 87 | this.preventDuplicates = true, |
| 1 | -import 'package:flutter/widgets.dart'; | ||
| 2 | - | ||
| 3 | -class TransitionComponent { | ||
| 4 | - Widget buildChildWithTransition( | ||
| 5 | - BuildContext context, | ||
| 6 | - Curve curve, | ||
| 7 | - Alignment alignment, | ||
| 8 | - Animation<double> animation, | ||
| 9 | - Animation<double> secondaryAnimation, | ||
| 10 | - Widget child) { | ||
| 11 | - return child; | ||
| 12 | - } | ||
| 13 | -} |
| @@ -4,7 +4,7 @@ export 'duration_extensions.dart'; | @@ -4,7 +4,7 @@ export 'duration_extensions.dart'; | ||
| 4 | export 'dynamic_extensions.dart'; | 4 | export 'dynamic_extensions.dart'; |
| 5 | export 'event_loop_extensions.dart'; | 5 | export 'event_loop_extensions.dart'; |
| 6 | export 'internacionalization.dart'; | 6 | export 'internacionalization.dart'; |
| 7 | +export 'iterable_extensions.dart'; | ||
| 7 | export 'num_extensions.dart'; | 8 | export 'num_extensions.dart'; |
| 8 | export 'string_extensions.dart'; | 9 | export 'string_extensions.dart'; |
| 9 | export 'widget_extensions.dart'; | 10 | export 'widget_extensions.dart'; |
| 10 | -export 'iterable_extensions.dart'; |
-
Please register or login to post a comment