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