Showing
1 changed file
with
8 additions
and
7 deletions
| @@ -33,7 +33,7 @@ class GetDelegate extends RouterDelegate<GetPage> | @@ -33,7 +33,7 @@ class GetDelegate extends RouterDelegate<GetPage> | ||
| 33 | ); | 33 | ); | 
| 34 | } | 34 | } | 
| 35 | 35 | ||
| 36 | - final _resultCompleter = <Completer<Object>>[]; | 36 | + final _resultCompleter = <GetPage, Completer<Object?>>{}; | 
| 37 | 37 | ||
| 38 | @override | 38 | @override | 
| 39 | Future<void> setInitialRoutePath(GetPage configuration) async { | 39 | Future<void> setInitialRoutePath(GetPage configuration) async { | 
| @@ -82,14 +82,14 @@ class GetDelegate extends RouterDelegate<GetPage> | @@ -82,14 +82,14 @@ class GetDelegate extends RouterDelegate<GetPage> | ||
| 82 | ); | 82 | ); | 
| 83 | } | 83 | } | 
| 84 | 84 | ||
| 85 | - Future<T?> pushRoute<T extends Object>( | 85 | + Future<T?> pushRoute<T>( | 
| 86 | GetPage route, { | 86 | GetPage route, { | 
| 87 | bool removeUntil = false, | 87 | bool removeUntil = false, | 
| 88 | bool replaceCurrent = false, | 88 | bool replaceCurrent = false, | 
| 89 | bool rebuildStack = true, | 89 | bool rebuildStack = true, | 
| 90 | }) { | 90 | }) { | 
| 91 | - final completer = Completer<T>(); | ||
| 92 | - _resultCompleter.add(completer); | 91 | + final completer = Completer<T?>(); | 
| 92 | + _resultCompleter[route] = completer; | ||
| 93 | 93 | ||
| 94 | route = route.copy(unknownRoute: _notFound()); | 94 | route = route.copy(unknownRoute: _notFound()); | 
| 95 | assert(!(removeUntil && replaceCurrent), | 95 | assert(!(removeUntil && replaceCurrent), | 
| @@ -130,10 +130,11 @@ class GetDelegate extends RouterDelegate<GetPage> | @@ -130,10 +130,11 @@ class GetDelegate extends RouterDelegate<GetPage> | ||
| 130 | 130 | ||
| 131 | if (canPop()) { | 131 | if (canPop()) { | 
| 132 | //emulate the old pop with result | 132 | //emulate the old pop with result | 
| 133 | - final lastCompleter = _resultCompleter.removeLast(); | ||
| 134 | - lastCompleter.complete(result); | 133 | + final lastRoute = routes.last; | 
| 134 | + final lastCompleter = _resultCompleter.remove(lastRoute); | ||
| 135 | + lastCompleter?.complete(result); | ||
| 135 | //route to be removed | 136 | //route to be removed | 
| 136 | - removePage(routes.last); | 137 | + removePage(lastRoute); | 
| 137 | return Future.value(true); | 138 | return Future.value(true); | 
| 138 | } | 139 | } | 
| 139 | return Future.value(false); | 140 | return Future.value(false); | 
- 
Please register or login to post a comment