Ahmed Fwela

added PageBindings that references GetPageRoute in [dependencies] method

  1 +import '../../get_navigation/src/routes/default_route.dart';
  2 +
1 import 'get_instance.dart'; 3 import 'get_instance.dart';
2 4
3 /// [Bindings] should be extended or implemented. 5 /// [Bindings] should be extended or implemented.
@@ -10,6 +12,11 @@ abstract class Bindings { @@ -10,6 +12,11 @@ abstract class Bindings {
10 void dependencies(); 12 void dependencies();
11 } 13 }
12 14
  15 +abstract class PageBindings extends Bindings {
  16 + @override
  17 + void dependencies([GetPageRoute? page]);
  18 +}
  19 +
13 /// Simplifies Bindings generation from a single callback. 20 /// Simplifies Bindings generation from a single callback.
14 /// To avoid the creation of a custom Binding instance per route. 21 /// To avoid the creation of a custom Binding instance per route.
15 /// 22 ///
@@ -299,14 +299,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -299,14 +299,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
299 ); 299 );
300 } 300 }
301 301
302 - // @override  
303 - // Future<void> setInitialRoutePath(GetNavConfig configuration) async {  
304 - // //no need to clear history with Reorder route strategy  
305 - // // _unsafeHistoryClear();  
306 - // // _resultCompleter.clear();  
307 - // await pushHistory(configuration);  
308 - // }  
309 -  
310 @override 302 @override
311 Future<void> setNewRoutePath(GetNavConfig configuration) async { 303 Future<void> setNewRoutePath(GetNavConfig configuration) async {
312 await pushHistory(configuration); 304 await pushHistory(configuration);
@@ -89,11 +89,15 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> { @@ -89,11 +89,15 @@ class GetPageRoute<T> extends PageRoute<T> with GetPageRouteTransitionMixin<T> {
89 Widget buildContent(BuildContext context) { 89 Widget buildContent(BuildContext context) {
90 final middlewareRunner = MiddlewareRunner(middlewares); 90 final middlewareRunner = MiddlewareRunner(middlewares);
91 final bindingsToBind = middlewareRunner.runOnBindingsStart(bindings); 91 final bindingsToBind = middlewareRunner.runOnBindingsStart(bindings);
92 -  
93 - binding?.dependencies();  
94 - if (bindingsToBind != null) {  
95 - for (final binding in bindingsToBind) {  
96 - binding.dependencies(); 92 + final _bindingList = [
  93 + if (binding != null) binding!,
  94 + ...?bindingsToBind,
  95 + ];
  96 + for (var _b in _bindingList) {
  97 + if (_b is PageBindings) {
  98 + _b.dependencies(this);
  99 + } else {
  100 + _b.dependencies();
97 } 101 }
98 } 102 }
99 103