Jonny Borges
Committed by GitHub

Merge pull request #2895 from jonataslaw/fix_duplicated_keys

Update router_outlet.dart to get a navigatorKey rather than a key to avoid errors
@@ -7,7 +7,6 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object> @@ -7,7 +7,6 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object>
7 final TDelegate routerDelegate; 7 final TDelegate routerDelegate;
8 final Widget Function(BuildContext context) builder; 8 final Widget Function(BuildContext context) builder;
9 9
10 - //keys  
11 RouterOutlet.builder({ 10 RouterOutlet.builder({
12 super.key, 11 super.key,
13 TDelegate? delegate, 12 TDelegate? delegate,
@@ -22,22 +21,20 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object> @@ -22,22 +21,20 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object>
22 BuildContext context, 21 BuildContext context,
23 TDelegate, 22 TDelegate,
24 Iterable<GetPage>? page, 23 Iterable<GetPage>? page,
25 - )  
26 - pageBuilder, 24 + ) pageBuilder,
27 }) : this.builder( 25 }) : this.builder(
28 - key: key,  
29 - builder: (context) {  
30 - final currentConfig = context.delegate.currentConfiguration as T?;  
31 - final rDelegate = context.delegate as TDelegate;  
32 - var picked =  
33 - currentConfig == null ? null : pickPages(currentConfig);  
34 - if (picked?.isEmpty ?? true) {  
35 - picked = null;  
36 - }  
37 - return pageBuilder(context, rDelegate, picked);  
38 - },  
39 - delegate: delegate,  
40 - ); 26 + builder: (context) {
  27 + final currentConfig = context.delegate.currentConfiguration as T?;
  28 + final rDelegate = context.delegate as TDelegate;
  29 + var picked =
  30 + currentConfig == null ? null : pickPages(currentConfig);
  31 + if (picked?.isEmpty ?? true) {
  32 + picked = null;
  33 + }
  34 + return pageBuilder(context, rDelegate, picked);
  35 + },
  36 + delegate: delegate,
  37 + key: key);
41 @override 38 @override
42 RouterOutletState<TDelegate, T> createState() => 39 RouterOutletState<TDelegate, T> createState() =>
43 RouterOutletState<TDelegate, T>(); 40 RouterOutletState<TDelegate, T>();
@@ -71,8 +68,6 @@ class RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object> @@ -71,8 +68,6 @@ class RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object>
71 void dispose() { 68 void dispose() {
72 super.dispose(); 69 super.dispose();
73 disposer?.call(); 70 disposer?.call();
74 - // Get.routerDelegate?.removeListener(_listener);  
75 - //_backButtonDispatcher.forget(_backButtonDispatcher)  
76 } 71 }
77 72
78 @override 73 @override
@@ -82,53 +77,12 @@ class RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object> @@ -82,53 +77,12 @@ class RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object>
82 } 77 }
83 } 78 }
84 79
85 -// class RouterOutletState<TDelegate extends RouterDelegate<T>,  
86 -//T extends Object>  
87 -// extends State<RouterOutlet<TDelegate, T>> {  
88 -// TDelegate get delegate => context.delegate as TDelegate;  
89 -// @override  
90 -// void initState() {  
91 -// super.initState();  
92 -// }  
93 -  
94 -// VoidCallback? disposer;  
95 -  
96 -// @override  
97 -// void didChangeDependencies() {  
98 -// disposer?.call();  
99 -// delegate.addListener(onRouterDelegateChanged);  
100 -// disposer = () => delegate.removeListener(onRouterDelegateChanged);  
101 -// _getCurrentRoute();  
102 -// super.didChangeDependencies();  
103 -// }  
104 -  
105 -// @override  
106 -// void dispose() {  
107 -// disposer?.call();  
108 -// super.dispose();  
109 -// }  
110 -  
111 -// T? currentRoute;  
112 -// void _getCurrentRoute() {  
113 -// currentRoute = delegate.currentConfiguration;  
114 -// }  
115 -  
116 -// void onRouterDelegateChanged() {  
117 -// setState(_getCurrentRoute);  
118 -// }  
119 -  
120 -// @override  
121 -// Widget build(BuildContext context) {  
122 -// return widget.builder(context);  
123 -// }  
124 -// }  
125 -  
126 class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { 80 class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> {
127 GetRouterOutlet({ 81 GetRouterOutlet({
  82 + Key? key,
128 String? anchorRoute, 83 String? anchorRoute,
129 required String initialRoute, 84 required String initialRoute,
130 Iterable<GetPage> Function(Iterable<GetPage> afterAnchor)? filterPages, 85 Iterable<GetPage> Function(Iterable<GetPage> afterAnchor)? filterPages,
131 - // GlobalKey<NavigatorState>? key,  
132 GetDelegate? delegate, 86 GetDelegate? delegate,
133 }) : this.pickPages( 87 }) : this.pickPages(
134 pickPages: (config) { 88 pickPages: (config) {
@@ -148,9 +102,10 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { @@ -148,9 +102,10 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> {
148 } 102 }
149 return ret; 103 return ret;
150 }, 104 },
  105 + key: key,
151 emptyPage: (delegate) => 106 emptyPage: (delegate) =>
152 delegate.matchRoute(initialRoute).route ?? delegate.notFoundRoute, 107 delegate.matchRoute(initialRoute).route ?? delegate.notFoundRoute,
153 - key: Get.nestedKey(anchorRoute)?.navigatorKey, 108 + navigatorKey: Get.nestedKey(anchorRoute)?.navigatorKey,
154 delegate: delegate, 109 delegate: delegate,
155 ); 110 );
156 GetRouterOutlet.pickPages({ 111 GetRouterOutlet.pickPages({
@@ -159,6 +114,7 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { @@ -159,6 +114,7 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> {
159 GetPage Function(GetDelegate delegate)? emptyPage, 114 GetPage Function(GetDelegate delegate)? emptyPage,
160 required Iterable<GetPage> Function(RouteDecoder currentNavStack) pickPages, 115 required Iterable<GetPage> Function(RouteDecoder currentNavStack) pickPages,
161 bool Function(Route<dynamic>, dynamic)? onPopPage, 116 bool Function(Route<dynamic>, dynamic)? onPopPage,
  117 + GlobalKey<NavigatorState>? navigatorKey,
162 GetDelegate? delegate, 118 GetDelegate? delegate,
163 }) : super( 119 }) : super(
164 pageBuilder: (context, rDelegate, pages) { 120 pageBuilder: (context, rDelegate, pages) {
@@ -178,7 +134,7 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { @@ -178,7 +134,7 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> {
178 return true; 134 return true;
179 }, 135 },
180 pages: pageRes.toList(), 136 pages: pageRes.toList(),
181 - key: key, 137 + key: navigatorKey,
182 ); 138 );
183 } 139 }
184 return (emptyWidget?.call(rDelegate) ?? const SizedBox.shrink()); 140 return (emptyWidget?.call(rDelegate) ?? const SizedBox.shrink());
@@ -191,8 +147,7 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { @@ -191,8 +147,7 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> {
191 super.key, 147 super.key,
192 required Widget Function( 148 required Widget Function(
193 BuildContext context, 149 BuildContext context,
194 - )  
195 - builder, 150 + ) builder,
196 GetDelegate? routerDelegate, 151 GetDelegate? routerDelegate,
197 }) : super.builder( 152 }) : super.builder(
198 builder: builder, 153 builder: builder,