From 5f7553a01e3111c620657db727ca04c0dce0caa8 Mon Sep 17 00:00:00 2001 From: Karibash Date: Fri, 28 Feb 2025 11:55:21 +0900 Subject: [PATCH] [go_router_builder] Fixes issue when using query parameters that caused a nullable error --- packages/go_router_builder/CHANGELOG.md | 4 ++++ packages/go_router_builder/lib/src/type_helpers.dart | 8 +++++--- packages/go_router_builder/pubspec.yaml | 2 +- .../test_inputs/required_query_parameter.dart.expect | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/go_router_builder/CHANGELOG.md b/packages/go_router_builder/CHANGELOG.md index 6b8640026730..71f07f919198 100644 --- a/packages/go_router_builder/CHANGELOG.md +++ b/packages/go_router_builder/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.8.2 + +- Fixes issue when using query parameters that caused a nullable error + ## 2.8.1 - Fixes an issue when navigate to router with invalid params diff --git a/packages/go_router_builder/lib/src/type_helpers.dart b/packages/go_router_builder/lib/src/type_helpers.dart index 6a13c1469301..e5a0756c3468 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 6ef52a5819b2..14312ddf0058 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/required_query_parameter.dart.expect b/packages/go_router_builder/test_inputs/required_query_parameter.dart.expect index 1b62bee0e525..aac229ed1180 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(