Showing
5 changed files
with
31 additions
and
3 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); | 19 | + if (route != null) { | 
| 20 | + final parsedParams = _parseParams(name, route.path); | ||
| 18 | if (parsedParams != null && parsedParams.isNotEmpty) { | 21 | if (parsedParams != null && parsedParams.isNotEmpty) { | 
| 19 | params.addAll(parsedParams); | 22 | params.addAll(parsedParams); | 
| 20 | } | 23 | } | 
| 24 | + } else { | ||
| 25 | + Get.log('Route "${uri.path}" not found'); | ||
| 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