Jonatas

update to 3.25.4

  1 +## [3.25.4]
  2 +- Added logs and tests to unknownRoute
  3 +
1 ## [3.25.3] 4 ## [3.25.3]
2 - Fix bindStream error 'Object.noSuchMethod'. 5 - Fix bindStream error 'Object.noSuchMethod'.
3 6
  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