Ahmed Fwela

WIP added router outlet class

@@ -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);