Jonatas

added parameters to all named navigation methods

@@ -541,24 +541,22 @@ extension GetNavigation on GetInterface { @@ -541,24 +541,22 @@ extension GetNavigation on GetInterface {
541 String page, { 541 String page, {
542 dynamic arguments, 542 dynamic arguments,
543 int id, 543 int id,
544 - Map<String, String> parameters,  
545 bool preventDuplicates = true, 544 bool preventDuplicates = true,
  545 + Map<String, String> parameters,
546 }) { 546 }) {
547 - Get.parameters = ({});  
548 - if (parameters != null) {  
549 - for (var item in parameters.keys) {  
550 - if (page.contains('?')) {  
551 - page += "&$item=${parameters[item]}";  
552 - } else {  
553 - page += "?$item=${parameters[item]}";  
554 - }  
555 - }  
556 - }  
557 -  
558 if (preventDuplicates && page == currentRoute) { 547 if (preventDuplicates && page == currentRoute) {
559 return null; 548 return null;
560 } 549 }
561 - return global(id)?.currentState?.pushNamed<T>(page, arguments: arguments); 550 +
  551 + if (parameters != null) {
  552 + final uri = Uri(path: page, queryParameters: parameters);
  553 + page = uri.toString();
  554 + }
  555 +
  556 + return global(id)?.currentState?.pushNamed<T>(
  557 + page,
  558 + arguments: arguments,
  559 + );
562 } 560 }
563 561
564 /// **Navigation.pushReplacementNamed()** shortcut.<br><br> 562 /// **Navigation.pushReplacementNamed()** shortcut.<br><br>
@@ -582,13 +580,20 @@ extension GetNavigation on GetInterface { @@ -582,13 +580,20 @@ extension GetNavigation on GetInterface {
582 dynamic arguments, 580 dynamic arguments,
583 int id, 581 int id,
584 bool preventDuplicates = true, 582 bool preventDuplicates = true,
  583 + Map<String, String> parameters,
585 }) { 584 }) {
586 if (preventDuplicates && page == currentRoute) { 585 if (preventDuplicates && page == currentRoute) {
587 return null; 586 return null;
588 } 587 }
589 - return global(id)  
590 - ?.currentState  
591 - ?.pushReplacementNamed(page, arguments: arguments); 588 +
  589 + if (parameters != null) {
  590 + final uri = Uri(path: page, queryParameters: parameters);
  591 + page = uri.toString();
  592 + }
  593 + return global(id)?.currentState?.pushReplacementNamed(
  594 + page,
  595 + arguments: arguments,
  596 + );
592 } 597 }
593 598
594 /// **Navigation.popUntil()** shortcut.<br><br> 599 /// **Navigation.popUntil()** shortcut.<br><br>
@@ -657,10 +662,18 @@ extension GetNavigation on GetInterface { @@ -657,10 +662,18 @@ extension GetNavigation on GetInterface {
657 RoutePredicate predicate, { 662 RoutePredicate predicate, {
658 int id, 663 int id,
659 dynamic arguments, 664 dynamic arguments,
  665 + Map<String, String> parameters,
660 }) { 666 }) {
661 - return global(id)  
662 - ?.currentState  
663 - ?.pushNamedAndRemoveUntil<T>(page, predicate, arguments: arguments); 667 + if (parameters != null) {
  668 + final uri = Uri(path: page, queryParameters: parameters);
  669 + page = uri.toString();
  670 + }
  671 +
  672 + return global(id)?.currentState?.pushNamedAndRemoveUntil<T>(
  673 + page,
  674 + predicate,
  675 + arguments: arguments,
  676 + );
664 } 677 }
665 678
666 /// **Navigation.popAndPushNamed()** shortcut.<br><br> 679 /// **Navigation.popAndPushNamed()** shortcut.<br><br>
@@ -679,10 +692,17 @@ extension GetNavigation on GetInterface { @@ -679,10 +692,17 @@ extension GetNavigation on GetInterface {
679 dynamic arguments, 692 dynamic arguments,
680 int id, 693 int id,
681 dynamic result, 694 dynamic result,
  695 + Map<String, String> parameters,
682 }) { 696 }) {
683 - return global(id)  
684 - ?.currentState  
685 - ?.popAndPushNamed(page, arguments: arguments, result: result); 697 + if (parameters != null) {
  698 + final uri = Uri(path: page, queryParameters: parameters);
  699 + page = uri.toString();
  700 + }
  701 + return global(id)?.currentState?.popAndPushNamed(
  702 + page,
  703 + arguments: arguments,
  704 + result: result,
  705 + );
686 } 706 }
687 707
688 /// **Navigation.removeRoute()** shortcut.<br><br> 708 /// **Navigation.removeRoute()** shortcut.<br><br>
@@ -720,7 +740,13 @@ extension GetNavigation on GetInterface { @@ -720,7 +740,13 @@ extension GetNavigation on GetInterface {
720 RoutePredicate predicate, 740 RoutePredicate predicate,
721 dynamic arguments, 741 dynamic arguments,
722 int id, 742 int id,
  743 + Map<String, String> parameters,
723 }) { 744 }) {
  745 + if (parameters != null) {
  746 + final uri = Uri(path: newRouteName, queryParameters: parameters);
  747 + newRouteName = uri.toString();
  748 + }
  749 +
724 return global(id)?.currentState?.pushNamedAndRemoveUntil<T>( 750 return global(id)?.currentState?.pushNamedAndRemoveUntil<T>(
725 newRouteName, 751 newRouteName,
726 predicate ?? (_) => false, 752 predicate ?? (_) => false,
@@ -95,7 +95,7 @@ void main() { @@ -95,7 +95,7 @@ void main() {
95 await tester.pumpWidget(GetMaterialApp( 95 await tester.pumpWidget(GetMaterialApp(
96 initialRoute: '/first/juan', 96 initialRoute: '/first/juan',
97 getPages: [ 97 getPages: [
98 - GetPage(page: () => Container(), name: '/buda'), 98 + GetPage(page: () => Container(), name: '/first/:name'),
99 GetPage(page: () => Container(), name: '/italy'), 99 GetPage(page: () => Container(), name: '/italy'),
100 ], 100 ],
101 )); 101 ));
@@ -107,20 +107,13 @@ void main() { @@ -107,20 +107,13 @@ void main() {
107 }; 107 };
108 // print("Get.parameters: ${Get.parameters}"); 108 // print("Get.parameters: ${Get.parameters}");
109 parameters.addAll({"a": "b", "c": "d"}); 109 parameters.addAll({"a": "b", "c": "d"});
110 - Get.toNamed("/buda", parameters: parameters); 110 + Get.toNamed("/italy", parameters: parameters);
111 111
112 await tester.pumpAndSettle(); 112 await tester.pumpAndSettle();
113 expect(Get.parameters['varginias'], 'varginia'); 113 expect(Get.parameters['varginias'], 'varginia');
114 expect(Get.parameters['vinis'], 'viniiss'); 114 expect(Get.parameters['vinis'], 'viniiss');
115 expect(Get.parameters['a'], 'b'); 115 expect(Get.parameters['a'], 'b');
116 expect(Get.parameters['c'], 'd'); 116 expect(Get.parameters['c'], 'd');
117 -  
118 - Map<String, String> italyParameters;  
119 - italyParameters = {"ja": "ca", "que": "i"};  
120 - Get.toNamed("/italy", parameters: italyParameters);  
121 - await tester.pumpAndSettle();  
122 - expect(Get.parameters['ja'], 'ca');  
123 - expect(Get.parameters['que'], 'i');  
124 }, 117 },
125 ); 118 );
126 } 119 }