Showing
8 changed files
with
55 additions
and
73 deletions
1 | -import 'package:example_nav2/app/modules/dashboard/controllers/dashboard_controller.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 | ||
5 | -import '../../home/controllers/home_controller.dart'; | 4 | +import '../controllers/dashboard_controller.dart'; |
5 | + | ||
6 | 6 | ||
7 | class DashboardView extends GetView<DashboardController> { | 7 | class DashboardView extends GetView<DashboardController> { |
8 | @override | 8 | @override |
@@ -3,7 +3,6 @@ import 'package:get/get.dart'; | @@ -3,7 +3,6 @@ import 'package:get/get.dart'; | ||
3 | 3 | ||
4 | import '../../../routes/app_pages.dart'; | 4 | import '../../../routes/app_pages.dart'; |
5 | import '../controllers/home_controller.dart'; | 5 | import '../controllers/home_controller.dart'; |
6 | -import '../../dashboard/views/dashboard_view.dart'; | ||
7 | 6 | ||
8 | class HomeView extends GetView<HomeController> { | 7 | class HomeView extends GetView<HomeController> { |
9 | @override | 8 | @override |
@@ -21,18 +20,11 @@ class HomeView extends GetView<HomeController> { | @@ -21,18 +20,11 @@ class HomeView extends GetView<HomeController> { | ||
21 | } | 20 | } |
22 | return Scaffold( | 21 | return Scaffold( |
23 | body: GetRouterOutlet( | 22 | body: GetRouterOutlet( |
24 | - name: Routes.HOME, | 23 | + initialRoute: Routes.DASHBOARD, |
24 | + // name: Routes.HOME, | ||
25 | //It's preferable to use emptyPage instead of emptyWidget | 25 | //It's preferable to use emptyPage instead of emptyWidget |
26 | - emptyPage: (delegate) => | ||
27 | - Get.routeTree.matchRoute(Routes.DASHBOARD).route!, | ||
28 | - pickPages: (currentNavStack) { | ||
29 | - print('Home RouterOutlet: $currentNavStack'); | ||
30 | - | ||
31 | - // will take any route after home | ||
32 | - final res = | ||
33 | - currentNavStack.currentTreeBranch.pickAfterRoute(Routes.HOME); | ||
34 | - return res; | ||
35 | - }, | 26 | + // emptyPage: (delegate) => |
27 | + // Get.routeTree.matchRoute(Routes.DASHBOARD).route!, | ||
36 | ), | 28 | ), |
37 | bottomNavigationBar: BottomNavigationBar( | 29 | bottomNavigationBar: BottomNavigationBar( |
38 | currentIndex: currentIndex, | 30 | currentIndex: currentIndex, |
1 | -import 'package:example_nav2/app/routes/app_pages.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 | 3 | ||
4 | +import '../../../routes/app_pages.dart'; | ||
6 | import '../controllers/profile_controller.dart'; | 5 | import '../controllers/profile_controller.dart'; |
7 | 6 | ||
8 | class ProfileView extends GetView<ProfileController> { | 7 | class ProfileView extends GetView<ProfileController> { |
@@ -18,14 +18,7 @@ class RootView extends GetView<RootController> { | @@ -18,14 +18,7 @@ class RootView extends GetView<RootController> { | ||
18 | centerTitle: true, | 18 | centerTitle: true, |
19 | ), | 19 | ), |
20 | body: GetRouterOutlet( | 20 | body: GetRouterOutlet( |
21 | - name: 'rootView', | ||
22 | - emptyPage: (delegate) => | ||
23 | - Get.routeTree.matchRoute(Routes.HOME).route!, | ||
24 | - pickPages: (currentNavStack) { | ||
25 | - //show all routes here except the root view | ||
26 | - print('Root RouterOutlet: $currentNavStack'); | ||
27 | - return currentNavStack.currentTreeBranch.skip(1).take(1).toList(); | ||
28 | - }, | 21 | + initialRoute: Routes.HOME, |
29 | ), | 22 | ), |
30 | ); | 23 | ); |
31 | }, | 24 | }, |
1 | import 'package:get/get.dart'; | 1 | import 'package:get/get.dart'; |
2 | 2 | ||
3 | -import 'package:example_nav2/app/modules/dashboard/bindings/dashboard_binding.dart'; | ||
4 | -import 'package:example_nav2/app/modules/dashboard/views/dashboard_view.dart'; | ||
5 | - | ||
6 | import '../middleware/auth_middleware.dart'; | 3 | import '../middleware/auth_middleware.dart'; |
4 | +import '../modules/dashboard/bindings/dashboard_binding.dart'; | ||
5 | +import '../modules/dashboard/views/dashboard_view.dart'; | ||
7 | import '../modules/home/bindings/home_binding.dart'; | 6 | import '../modules/home/bindings/home_binding.dart'; |
8 | import '../modules/home/views/home_view.dart'; | 7 | import '../modules/home/views/home_view.dart'; |
9 | import '../modules/login/bindings/login_binding.dart'; | 8 | import '../modules/login/bindings/login_binding.dart'; |
@@ -44,6 +43,7 @@ class AppPages { | @@ -44,6 +43,7 @@ class AppPages { | ||
44 | binding: LoginBinding(), | 43 | binding: LoginBinding(), |
45 | ), | 44 | ), |
46 | GetPage( | 45 | GetPage( |
46 | + participatesInRootNavigator: false, | ||
47 | preventDuplicates: true, | 47 | preventDuplicates: true, |
48 | name: _Paths.HOME, | 48 | name: _Paths.HOME, |
49 | page: () => HomeView(), | 49 | page: () => HomeView(), |
@@ -280,7 +280,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | @@ -280,7 +280,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig> | ||
280 | final pages = getVisualPages(); | 280 | final pages = getVisualPages(); |
281 | final extraObservers = navigatorObservers; | 281 | final extraObservers = navigatorObservers; |
282 | return GetNavigator( | 282 | return GetNavigator( |
283 | - name: 'root', | ||
284 | key: navigatorKey, | 283 | key: navigatorKey, |
285 | onPopPage: _onPopVisualRoute, | 284 | onPopPage: _onPopVisualRoute, |
286 | pages: pages, | 285 | pages: pages, |
@@ -420,14 +419,15 @@ class GetNavigator extends Navigator { | @@ -420,14 +419,15 @@ class GetNavigator extends Navigator { | ||
420 | List<NavigatorObserver>? observers, | 419 | List<NavigatorObserver>? observers, |
421 | bool reportsRouteUpdateToEngine = false, | 420 | bool reportsRouteUpdateToEngine = false, |
422 | TransitionDelegate? transitionDelegate, | 421 | TransitionDelegate? transitionDelegate, |
423 | - String? name, | 422 | + // String? name, |
424 | }) : super( | 423 | }) : super( |
425 | //keys should be optional | 424 | //keys should be optional |
426 | - key: key != null | ||
427 | - ? key | ||
428 | - : name != null | ||
429 | - ? Get.nestedKey(name) | ||
430 | - : null, | 425 | + key: key, |
426 | + // key != null | ||
427 | + // ? key | ||
428 | + // : name != null | ||
429 | + // ? Get.nestedKey(name) | ||
430 | + // : null, | ||
431 | onPopPage: onPopPage ?? | 431 | onPopPage: onPopPage ?? |
432 | (route, result) { | 432 | (route, result) { |
433 | final didPop = route.didPop(result); | 433 | final didPop = route.didPop(result); |
@@ -439,7 +439,7 @@ class GetNavigator extends Navigator { | @@ -439,7 +439,7 @@ class GetNavigator extends Navigator { | ||
439 | reportsRouteUpdateToEngine: reportsRouteUpdateToEngine, | 439 | reportsRouteUpdateToEngine: reportsRouteUpdateToEngine, |
440 | pages: pages, | 440 | pages: pages, |
441 | observers: [ | 441 | observers: [ |
442 | - GetObserver(), | 442 | + // GetObserver(), |
443 | if (observers != null) ...observers, | 443 | if (observers != null) ...observers, |
444 | ], | 444 | ], |
445 | transitionDelegate: | 445 | transitionDelegate: |
@@ -76,36 +76,17 @@ class _RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object> | @@ -76,36 +76,17 @@ class _RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object> | ||
76 | } | 76 | } |
77 | 77 | ||
78 | class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { | 78 | class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { |
79 | - GetRouterOutlet.builder({ | ||
80 | - required Widget Function( | ||
81 | - BuildContext context, | ||
82 | - GetDelegate delegate, | ||
83 | - GetNavConfig? currentRoute, | ||
84 | - ) | ||
85 | - builder, | ||
86 | - GetDelegate? routerDelegate, | ||
87 | - }) : super.builder( | ||
88 | - builder: builder, | ||
89 | - delegate: routerDelegate, | ||
90 | - ); | ||
91 | - | ||
92 | GetRouterOutlet({ | 79 | GetRouterOutlet({ |
80 | + required String initialRoute, | ||
93 | Widget Function(GetDelegate delegate)? emptyWidget, | 81 | Widget Function(GetDelegate delegate)? emptyWidget, |
94 | - GetPage Function(GetDelegate delegate)? emptyPage, | ||
95 | - required List<GetPage> Function(GetNavConfig currentNavStack) pickPages, | ||
96 | bool Function(Route<dynamic>, dynamic)? onPopPage, | 82 | bool Function(Route<dynamic>, dynamic)? onPopPage, |
97 | - String? name, | ||
98 | - }) : assert( | ||
99 | - (emptyPage == null && emptyWidget == null) || | ||
100 | - (emptyPage != null && emptyWidget == null) || | ||
101 | - (emptyPage == null && emptyWidget != null), | ||
102 | - 'Either use emptyPage or emptyWidget'), | ||
103 | - super( | 83 | + // String? name, |
84 | + }) : super( | ||
104 | pageBuilder: (context, rDelegate, pages) { | 85 | pageBuilder: (context, rDelegate, pages) { |
105 | - final pageRes = | ||
106 | - (pages ?? <GetPage<dynamic>?>[emptyPage?.call(rDelegate)]) | ||
107 | - .whereType<GetPage<dynamic>>() | ||
108 | - .toList(); | 86 | + final route = Get.routeTree.matchRoute(initialRoute); |
87 | + final pageRes = (pages ?? <GetPage<dynamic>?>[route.route]) | ||
88 | + .whereType<GetPage<dynamic>>() | ||
89 | + .toList(); | ||
109 | if (pageRes.length > 0) { | 90 | if (pageRes.length > 0) { |
110 | return GetNavigator( | 91 | return GetNavigator( |
111 | onPopPage: onPopPage ?? | 92 | onPopPage: onPopPage ?? |
@@ -117,22 +98,41 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { | @@ -117,22 +98,41 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, GetNavConfig> { | ||
117 | return true; | 98 | return true; |
118 | }, | 99 | }, |
119 | pages: pageRes, | 100 | pages: pageRes, |
120 | - name: name, | 101 | + //name: name, |
121 | ); | 102 | ); |
122 | } | 103 | } |
123 | return (emptyWidget?.call(rDelegate) ?? SizedBox.shrink()); | 104 | return (emptyWidget?.call(rDelegate) ?? SizedBox.shrink()); |
124 | }, | 105 | }, |
125 | - pickPages: pickPages, | 106 | + pickPages: (currentNavStack) { |
107 | + final length = Uri.parse(initialRoute).pathSegments.length; | ||
108 | + return currentNavStack.currentTreeBranch | ||
109 | + .skip(length) | ||
110 | + .take(length) | ||
111 | + .toList(); | ||
112 | + }, | ||
126 | delegate: Get.rootDelegate, | 113 | delegate: Get.rootDelegate, |
127 | ); | 114 | ); |
115 | + | ||
116 | + GetRouterOutlet.builder({ | ||
117 | + required Widget Function( | ||
118 | + BuildContext context, | ||
119 | + GetDelegate delegate, | ||
120 | + GetNavConfig? currentRoute, | ||
121 | + ) | ||
122 | + builder, | ||
123 | + GetDelegate? routerDelegate, | ||
124 | + }) : super.builder( | ||
125 | + builder: builder, | ||
126 | + delegate: routerDelegate, | ||
127 | + ); | ||
128 | } | 128 | } |
129 | 129 | ||
130 | -extension PagesListExt on List<GetPage> { | ||
131 | - List<GetPage> pickAtRoute(String route) { | ||
132 | - return skipWhile((value) => value.name != route).toList(); | ||
133 | - } | 130 | +// extension PagesListExt on List<GetPage> { |
131 | +// List<GetPage> pickAtRoute(String route) { | ||
132 | +// return skipWhile((value) => value.name != route).toList(); | ||
133 | +// } | ||
134 | 134 | ||
135 | - List<GetPage> pickAfterRoute(String route) { | ||
136 | - return skipWhile((value) => value.name != route).skip(1).toList(); | ||
137 | - } | ||
138 | -} | 135 | +// List<GetPage> pickAfterRoute(String route) { |
136 | +// return skipWhile((value) => value.name != route).skip(1).toList(); | ||
137 | +// } | ||
138 | +// } |
-
Please register or login to post a comment