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
Showing
1 changed file
with
19 additions
and
64 deletions
@@ -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, |
-
Please register or login to post a comment