Showing
5 changed files
with
33 additions
and
5 deletions
1 | +import 'package:get/get_core/src/get_main.dart'; | ||
2 | + | ||
1 | import '../../get_navigation.dart'; | 3 | import '../../get_navigation.dart'; |
2 | import '../routes/get_route.dart'; | 4 | import '../routes/get_route.dart'; |
3 | 5 | ||
@@ -14,10 +16,15 @@ class ParseRouteTree { | @@ -14,10 +16,15 @@ class ParseRouteTree { | ||
14 | final uri = Uri.parse(name); | 16 | final uri = Uri.parse(name); |
15 | final route = _findRoute(uri.path); | 17 | final route = _findRoute(uri.path); |
16 | final params = Map<String, String>.from(uri.queryParameters); | 18 | final params = Map<String, String>.from(uri.queryParameters); |
17 | - final parsedParams = _parseParams(name, route?.path); | ||
18 | - if (parsedParams != null && parsedParams.isNotEmpty) { | ||
19 | - params.addAll(parsedParams); | 19 | + if (route != null) { |
20 | + final parsedParams = _parseParams(name, route.path); | ||
21 | + if (parsedParams != null && parsedParams.isNotEmpty) { | ||
22 | + params.addAll(parsedParams); | ||
23 | + } | ||
24 | + } else { | ||
25 | + Get.log('Route "${uri.path}" not found'); | ||
20 | } | 26 | } |
27 | + | ||
21 | return RouteDecoder(route, params); | 28 | return RouteDecoder(route, params); |
22 | } | 29 | } |
23 | 30 |
@@ -172,7 +172,7 @@ class PageRedirect { | @@ -172,7 +172,7 @@ class PageRedirect { | ||
172 | page: unknownRoute.page, | 172 | page: unknownRoute.page, |
173 | parameter: unknownRoute.parameter, | 173 | parameter: unknownRoute.parameter, |
174 | settings: RouteSettings( | 174 | settings: RouteSettings( |
175 | - name: settings.name, arguments: settings.arguments), | 175 | + name: unknownRoute.name, arguments: settings.arguments), |
176 | curve: unknownRoute.curve, | 176 | curve: unknownRoute.curve, |
177 | opaque: unknownRoute.opaque, | 177 | opaque: unknownRoute.opaque, |
178 | customTransition: unknownRoute.customTransition, | 178 | customTransition: unknownRoute.customTransition, |
1 | name: get | 1 | name: get |
2 | description: Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX. | 2 | description: Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX. |
3 | -version: 3.25.3 | 3 | +version: 3.25.4 |
4 | homepage: https://github.com/jonataslaw/getx | 4 | homepage: https://github.com/jonataslaw/getx |
5 | 5 | ||
6 | environment: | 6 | environment: |
@@ -32,6 +32,24 @@ void main() { | @@ -32,6 +32,24 @@ void main() { | ||
32 | expect(find.byType(SecondScreen), findsOneWidget); | 32 | expect(find.byType(SecondScreen), findsOneWidget); |
33 | }); | 33 | }); |
34 | 34 | ||
35 | + testWidgets("unknowroute", (tester) async { | ||
36 | + await tester.pumpWidget(GetMaterialApp( | ||
37 | + initialRoute: '/first', | ||
38 | + unknownRoute: GetPage(name: '/404', page: () => Scaffold()), | ||
39 | + getPages: [ | ||
40 | + GetPage(page: () => FirstScreen(), name: '/first'), | ||
41 | + GetPage(page: () => SecondScreen(), name: '/second'), | ||
42 | + GetPage(page: () => ThirdScreen(), name: '/third') | ||
43 | + ], | ||
44 | + )); | ||
45 | + | ||
46 | + Get.toNamed('/secondd'); | ||
47 | + | ||
48 | + await tester.pumpAndSettle(); | ||
49 | + | ||
50 | + expect(Get.currentRoute, '/404'); | ||
51 | + }); | ||
52 | + | ||
35 | testWidgets("Get.off navigates to provided route", (tester) async { | 53 | testWidgets("Get.off navigates to provided route", (tester) async { |
36 | await tester.pumpWidget(Wrapper(child: FirstScreen())); | 54 | await tester.pumpWidget(Wrapper(child: FirstScreen())); |
37 | 55 |
-
Please register or login to post a comment