Jonny Borges

add arguments and parameters to getdelegate

@@ -16,6 +16,15 @@ class HomeController extends SuperController<CasesModel> { @@ -16,6 +16,15 @@ class HomeController extends SuperController<CasesModel> {
16 append(() => homeRepository.getCases); 16 append(() => homeRepository.getCases);
17 } 17 }
18 18
  19 + Country getCountryById(String id) {
  20 + final index = int.tryParse(id);
  21 + if (index != null) {
  22 + return state!.countries[index];
  23 + }
  24 +
  25 + return state!.countries.first;
  26 + }
  27 +
19 @override 28 @override
20 void onReady() { 29 void onReady() {
21 print('The build method is done. ' 30 print('The build method is done. '
@@ -34,8 +34,8 @@ class CountryView extends GetView<HomeController> { @@ -34,8 +34,8 @@ class CountryView extends GetView<HomeController> {
34 return ListTile( 34 return ListTile(
35 onTap: () { 35 onTap: () {
36 //Get.rootDelegate.toNamed('/home/country'); 36 //Get.rootDelegate.toNamed('/home/country');
37 - Get.rootDelegate.toNamed('/home/country/details',  
38 - arguments: country); 37 + Get.rootDelegate
  38 + .offNamed('/home/country/details?id=$index');
39 }, 39 },
40 trailing: CircleAvatar( 40 trailing: CircleAvatar(
41 backgroundImage: NetworkImage( 41 backgroundImage: NetworkImage(
@@ -2,13 +2,13 @@ import 'dart:ui'; @@ -2,13 +2,13 @@ import 'dart:ui';
2 2
3 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
4 import 'package:get/get.dart'; 4 import 'package:get/get.dart';
  5 +import '../controllers/home_controller.dart';
5 6
6 -import '../../domain/entity/cases_model.dart';  
7 -  
8 -class DetailsView extends StatelessWidget { 7 +class DetailsView extends GetView<HomeController> {
9 @override 8 @override
10 Widget build(BuildContext context) { 9 Widget build(BuildContext context) {
11 - final country = Get.rootDelegate.arguments<Country>(); 10 + final parameter = Get.rootDelegate.parameters;
  11 + final country = controller.getCountryById(parameter['id'] ?? '');
12 return Container( 12 return Container(
13 decoration: BoxDecoration( 13 decoration: BoxDecoration(
14 image: DecorationImage( 14 image: DecorationImage(
@@ -32,7 +32,7 @@ class LoginView extends GetView<LoginController> { @@ -32,7 +32,7 @@ class LoginView extends GetView<LoginController> {
32 onPressed: () { 32 onPressed: () {
33 AuthService.to.login(); 33 AuthService.to.login();
34 final thenTo = Get.rootDelegate.currentConfiguration! 34 final thenTo = Get.rootDelegate.currentConfiguration!
35 - .currentPage!.parameter?['then']; 35 + .currentPage!.parameters?['then'];
36 Get.rootDelegate.offNamed(thenTo ?? Routes.HOME); 36 Get.rootDelegate.offNamed(thenTo ?? Routes.HOME);
37 }, 37 },
38 ), 38 ),
@@ -112,6 +112,10 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -112,6 +112,10 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
112 return currentConfiguration?.currentPage?.arguments as T; 112 return currentConfiguration?.currentPage?.arguments as T;
113 } 113 }
114 114
  115 + Map<String, String> get parameters {
  116 + return currentConfiguration?.currentPage?.parameters ?? {};
  117 + }
  118 +
115 // void _unsafeHistoryClear() { 119 // void _unsafeHistoryClear() {
116 // history.clear(); 120 // history.clear();
117 // } 121 // }
@@ -144,7 +148,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -144,7 +148,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
144 if (originalEntryIndex >= 0) { 148 if (originalEntryIndex >= 0) {
145 switch (preventDuplicateHandlingMode) { 149 switch (preventDuplicateHandlingMode) {
146 case PreventDuplicateHandlingMode.PopUntilOriginalRoute: 150 case PreventDuplicateHandlingMode.PopUntilOriginalRoute:
147 - until(config.location!, popMode: PopMode.Page); 151 + backUntil(config.location!, popMode: PopMode.Page);
148 break; 152 break;
149 case PreventDuplicateHandlingMode.ReorderRoutes: 153 case PreventDuplicateHandlingMode.ReorderRoutes:
150 _unsafeHistoryRemoveAt(originalEntryIndex); 154 _unsafeHistoryRemoveAt(originalEntryIndex);
@@ -231,7 +235,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -231,7 +235,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
231 } 235 }
232 236
233 bool _canPopHistory() { 237 bool _canPopHistory() {
234 - return history.length > 1; 238 + return history.length > 0;
235 } 239 }
236 240
237 Future<bool> canPopHistory() { 241 Future<bool> canPopHistory() {
@@ -324,7 +328,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -324,7 +328,6 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
324 } 328 }
325 329
326 final decoder = Get.routeTree.matchRoute(page, arguments: arguments); 330 final decoder = Get.routeTree.matchRoute(page, arguments: arguments);
327 - Get.parameters = decoder.parameters;  
328 decoder.replaceArguments(arguments); 331 decoder.replaceArguments(arguments);
329 332
330 return pushHistory<T>( 333 return pushHistory<T>(
@@ -345,7 +348,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig> @@ -345,7 +348,7 @@ class GetDelegate extends RouterDelegate<GetNavConfig>
345 /// Removes routes according to [PopMode] 348 /// Removes routes according to [PopMode]
346 /// until it reaches the specifc [fullRoute], 349 /// until it reaches the specifc [fullRoute],
347 /// DOES NOT remove the [fullRoute] 350 /// DOES NOT remove the [fullRoute]
348 - void until( 351 + void backUntil(
349 String fullRoute, { 352 String fullRoute, {
350 PopMode popMode = PopMode.Page, 353 PopMode popMode = PopMode.Page,
351 }) { 354 }) {
@@ -18,6 +18,14 @@ class RouteDecoder { @@ -18,6 +18,14 @@ class RouteDecoder {
18 treeBranch[index] = _route.copy(arguments: arguments); 18 treeBranch[index] = _route.copy(arguments: arguments);
19 } 19 }
20 } 20 }
  21 +
  22 + void replaceParameters(Object? arguments) {
  23 + final _route = route;
  24 + if (_route != null) {
  25 + final index = treeBranch.indexOf(_route);
  26 + treeBranch[index] = _route.copy(parameters: parameters);
  27 + }
  28 + }
21 } 29 }
22 30
23 class ParseRouteTree { 31 class ParseRouteTree {
@@ -62,8 +70,8 @@ class ParseRouteTree { @@ -62,8 +70,8 @@ class ParseRouteTree {
62 final mappedTreeBranch = treeBranch 70 final mappedTreeBranch = treeBranch
63 .map( 71 .map(
64 (e) => e.value.copy( 72 (e) => e.value.copy(
65 - parameter: {  
66 - if (e.value.parameter != null) ...e.value.parameter!, 73 + parameters: {
  74 + if (e.value.parameters != null) ...e.value.parameters!,
67 ...params, 75 ...params,
68 }, 76 },
69 name: e.key, 77 name: e.key,
@@ -30,7 +30,7 @@ class PathDecoded { @@ -30,7 +30,7 @@ class PathDecoded {
30 class GetPage<T> extends Page<T> { 30 class GetPage<T> extends Page<T> {
31 final GetPageBuilder page; 31 final GetPageBuilder page;
32 final bool? popGesture; 32 final bool? popGesture;
33 - final Map<String, String>? parameter; 33 + final Map<String, String>? parameters;
34 final String? title; 34 final String? title;
35 final Transition? transition; 35 final Transition? transition;
36 final Curve curve; 36 final Curve curve;
@@ -72,7 +72,7 @@ class GetPage<T> extends Page<T> { @@ -72,7 +72,7 @@ class GetPage<T> extends Page<T> {
72 this.maintainState = true, 72 this.maintainState = true,
73 this.curve = Curves.linear, 73 this.curve = Curves.linear,
74 this.alignment, 74 this.alignment,
75 - this.parameter, 75 + this.parameters,
76 this.opaque = true, 76 this.opaque = true,
77 this.transitionDuration, 77 this.transitionDuration,
78 this.popGesture, 78 this.popGesture,
@@ -119,7 +119,7 @@ class GetPage<T> extends Page<T> { @@ -119,7 +119,7 @@ class GetPage<T> extends Page<T> {
119 String? name, 119 String? name,
120 GetPageBuilder? page, 120 GetPageBuilder? page,
121 bool? popGesture, 121 bool? popGesture,
122 - Map<String, String>? parameter, 122 + Map<String, String>? parameters,
123 String? title, 123 String? title,
124 Transition? transition, 124 Transition? transition,
125 Curve? curve, 125 Curve? curve,
@@ -147,7 +147,7 @@ class GetPage<T> extends Page<T> { @@ -147,7 +147,7 @@ class GetPage<T> extends Page<T> {
147 name: name ?? this.name, 147 name: name ?? this.name,
148 page: page ?? this.page, 148 page: page ?? this.page,
149 popGesture: popGesture ?? this.popGesture, 149 popGesture: popGesture ?? this.popGesture,
150 - parameter: parameter ?? this.parameter, 150 + parameters: parameters ?? this.parameters,
151 title: title ?? this.title, 151 title: title ?? this.title,
152 transition: transition ?? this.transition, 152 transition: transition ?? this.transition,
153 curve: curve ?? this.curve, 153 curve: curve ?? this.curve,
@@ -196,7 +196,6 @@ class GetObserver extends NavigatorObserver { @@ -196,7 +196,6 @@ class GetObserver extends NavigatorObserver {
196 value.isDialog = currentRoute.isDialog ? false : value.isDialog; 196 value.isDialog = currentRoute.isDialog ? false : value.isDialog;
197 }); 197 });
198 if (oldRoute is GetPageRoute) { 198 if (oldRoute is GetPageRoute) {
199 - print(oldRoute.reference);  
200 GetInstance().reloadDependencyByRoute(oldRoute.reference); 199 GetInstance().reloadDependencyByRoute(oldRoute.reference);
201 } 200 }
202 201
@@ -223,7 +222,6 @@ class GetObserver extends NavigatorObserver { @@ -223,7 +222,6 @@ class GetObserver extends NavigatorObserver {
223 }); 222 });
224 223
225 if (route is GetPageRoute) { 224 if (route is GetPageRoute) {
226 - print(route.reference);  
227 GetInstance().reloadDependencyByRoute(route.reference); 225 GetInstance().reloadDependencyByRoute(route.reference);
228 } 226 }
229 routing?.call(_routeSend); 227 routing?.call(_routeSend);
@@ -196,7 +196,7 @@ class PageRedirect { @@ -196,7 +196,7 @@ class PageRedirect {
196 final _r = (isUnknown ? unknownRoute : route)!; 196 final _r = (isUnknown ? unknownRoute : route)!;
197 return GetPageRoute<T>( 197 return GetPageRoute<T>(
198 page: _r.page, 198 page: _r.page,
199 - parameter: _r.parameter, 199 + parameter: _r.parameters,
200 settings: isUnknown 200 settings: isUnknown
201 ? RouteSettings( 201 ? RouteSettings(
202 name: _r.name, 202 name: _r.name,
@@ -225,7 +225,7 @@ class PageRedirect { @@ -225,7 +225,7 @@ class PageRedirect {
225 225
226 return GetPageRoute<T>( 226 return GetPageRoute<T>(
227 page: _r.page, 227 page: _r.page,
228 - parameter: _r.parameter, 228 + parameter: _r.parameters,
229 alignment: _r.alignment, 229 alignment: _r.alignment,
230 title: _r.title, 230 title: _r.title,
231 maintainState: _r.maintainState, 231 maintainState: _r.maintainState,
@@ -277,10 +277,10 @@ class PageRedirect { @@ -277,10 +277,10 @@ class PageRedirect {
277 } 277 }
278 278
279 void addPageParameter(GetPage route) { 279 void addPageParameter(GetPage route) {
280 - if (route.parameter == null) return; 280 + if (route.parameters == null) return;
281 281
282 final parameters = Get.parameters; 282 final parameters = Get.parameters;
283 - parameters.addEntries(route.parameter!.entries); 283 + parameters.addEntries(route.parameters!.entries);
284 Get.parameters = parameters; 284 Get.parameters = parameters;
285 } 285 }
286 } 286 }
@@ -25,7 +25,7 @@ void main() { @@ -25,7 +25,7 @@ void main() {
25 GetPage( 25 GetPage(
26 name: '/pen', 26 name: '/pen',
27 page: () => Container(), 27 page: () => Container(),
28 - parameter: testParams, 28 + parameters: testParams,
29 ), 29 ),
30 GetPage(name: '/paper', page: () => Container()), 30 GetPage(name: '/paper', page: () => Container()),
31 ], 31 ],
@@ -48,7 +48,7 @@ void main() { @@ -48,7 +48,7 @@ void main() {
48 final match = tree.matchRoute(searchRoute); 48 final match = tree.matchRoute(searchRoute);
49 expect(match, isNotNull); 49 expect(match, isNotNull);
50 expect(match.route!.name, searchRoute); 50 expect(match.route!.name, searchRoute);
51 - final testRouteParam = match.route!.parameter!; 51 + final testRouteParam = match.route!.parameters!;
52 for (final tParam in testParams.entries) { 52 for (final tParam in testParams.entries) {
53 expect(testRouteParam[tParam.key], tParam.value); 53 expect(testRouteParam[tParam.key], tParam.value);
54 } 54 }