diff --git a/packages/go_router_builder/CHANGELOG.md b/packages/go_router_builder/CHANGELOG.md index 6b864002673..b9c3781092f 100644 --- a/packages/go_router_builder/CHANGELOG.md +++ b/packages/go_router_builder/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.8.2 + +- Fixes an issue when enum params are not required + ## 2.8.1 - Fixes an issue when navigate to router with invalid params diff --git a/packages/go_router_builder/example/lib/all_types.g.dart b/packages/go_router_builder/example/lib/all_types.g.dart index a30f03f62c6..581814d47c2 100644 --- a/packages/go_router_builder/example/lib/all_types.g.dart +++ b/packages/go_router_builder/example/lib/all_types.g.dart @@ -716,7 +716,7 @@ bool _$boolConverter(String value) { } extension on Map { - T? _$fromName(String value) => + T? _$fromName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; } diff --git a/packages/go_router_builder/example/lib/main.g.dart b/packages/go_router_builder/example/lib/main.g.dart index e489f48ad7d..ab4cbdb3540 100644 --- a/packages/go_router_builder/example/lib/main.g.dart +++ b/packages/go_router_builder/example/lib/main.g.dart @@ -147,7 +147,7 @@ extension $FamilyCountRouteExtension on FamilyCountRoute { } extension on Map { - T? _$fromName(String value) => + T? _$fromName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; } diff --git a/packages/go_router_builder/example/lib/stateful_shell_route_initial_location_example.g.dart b/packages/go_router_builder/example/lib/stateful_shell_route_initial_location_example.g.dart index 11aa3efae3c..f86f360772d 100644 --- a/packages/go_router_builder/example/lib/stateful_shell_route_initial_location_example.g.dart +++ b/packages/go_router_builder/example/lib/stateful_shell_route_initial_location_example.g.dart @@ -111,6 +111,6 @@ extension $OrdersRouteDataExtension on OrdersRouteData { } extension on Map { - T? _$fromName(String value) => + T? _$fromName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; } diff --git a/packages/go_router_builder/lib/src/route_config.dart b/packages/go_router_builder/lib/src/route_config.dart index d272335db28..fe60df748c3 100644 --- a/packages/go_router_builder/lib/src/route_config.dart +++ b/packages/go_router_builder/lib/src/route_config.dart @@ -775,7 +775,7 @@ bool $boolConverterHelperName(String value) { const String _enumConverterHelper = ''' extension on Map { - T? $enumExtensionHelperName(String value) => + T? $enumExtensionHelperName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; }'''; diff --git a/packages/go_router_builder/lib/src/type_helpers.dart b/packages/go_router_builder/lib/src/type_helpers.dart index 6a13c146930..e5a0756c346 100644 --- a/packages/go_router_builder/lib/src/type_helpers.dart +++ b/packages/go_router_builder/lib/src/type_helpers.dart @@ -115,11 +115,13 @@ String _stateValueAccess(ParameterElement element, Set pathParameters) { } late String access; + final String suffix = + !element.type.isNullableType && !element.hasDefaultValue ? '!' : ''; if (pathParameters.contains(element.name)) { - access = - 'pathParameters[${escapeDartString(element.name)}]${element.isRequired ? '!' : ''}'; + access = 'pathParameters[${escapeDartString(element.name)}]$suffix'; } else { - access = 'uri.queryParameters[${escapeDartString(element.name.kebab)}]'; + access = + 'uri.queryParameters[${escapeDartString(element.name.kebab)}]$suffix'; } return access; diff --git a/packages/go_router_builder/pubspec.yaml b/packages/go_router_builder/pubspec.yaml index 6ef52a5819b..14312ddf005 100644 --- a/packages/go_router_builder/pubspec.yaml +++ b/packages/go_router_builder/pubspec.yaml @@ -2,7 +2,7 @@ name: go_router_builder description: >- A builder that supports generated strongly-typed route helpers for package:go_router -version: 2.8.1 +version: 2.8.2 repository: https://github.com/flutter/packages/tree/main/packages/go_router_builder issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+go_router_builder%22 diff --git a/packages/go_router_builder/test_inputs/enum_parameter.dart.expect b/packages/go_router_builder/test_inputs/enum_parameter.dart.expect index 97c63224b35..42d27809f85 100644 --- a/packages/go_router_builder/test_inputs/enum_parameter.dart.expect +++ b/packages/go_router_builder/test_inputs/enum_parameter.dart.expect @@ -29,6 +29,6 @@ const _$EnumTestEnumMap = { }; extension on Map { - T? _$fromName(String value) => + T? _$fromName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; } diff --git a/packages/go_router_builder/test_inputs/iterable_with_enum.dart.expect b/packages/go_router_builder/test_inputs/iterable_with_enum.dart.expect index 8d20676242f..88a9f97dc27 100644 --- a/packages/go_router_builder/test_inputs/iterable_with_enum.dart.expect +++ b/packages/go_router_builder/test_inputs/iterable_with_enum.dart.expect @@ -38,6 +38,6 @@ const _$EnumOnlyUsedInIterableEnumMap = { }; extension on Map { - T? _$fromName(String value) => + T? _$fromName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; } diff --git a/packages/go_router_builder/test_inputs/required_query_parameter.dart.expect b/packages/go_router_builder/test_inputs/required_query_parameter.dart.expect index 1b62bee0e52..aac229ed118 100644 --- a/packages/go_router_builder/test_inputs/required_query_parameter.dart.expect +++ b/packages/go_router_builder/test_inputs/required_query_parameter.dart.expect @@ -7,7 +7,7 @@ extension $NonNullableRequiredParamNotInPathExtension on NonNullableRequiredParamNotInPath { static NonNullableRequiredParamNotInPath _fromState(GoRouterState state) => NonNullableRequiredParamNotInPath( - id: int.parse(state.uri.queryParameters['id'])!, + id: int.parse(state.uri.queryParameters['id']!)!, ); String get location => GoRouteData.$location(