Jonny Borges

change nav 2 api

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
1 -import 'dart:async';  
2 -  
3 import 'package:get/get.dart'; 1 import 'package:get/get.dart';
4 2
5 class HomeController extends GetxController {} 3 class HomeController extends GetxController {}
@@ -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 +// }