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