diff --git a/packages/go_router_builder/CHANGELOG.md b/packages/go_router_builder/CHANGELOG.md index 2afdfb41d0f..1a647649152 100644 --- a/packages/go_router_builder/CHANGELOG.md +++ b/packages/go_router_builder/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.3.4 + +* Fixes a bug of typeArguments losing NullabilitySuffix + ## 2.3.3 * Adds `initialLocation` for `StatefulShellBranchConfig` diff --git a/packages/go_router_builder/lib/src/type_helpers.dart b/packages/go_router_builder/lib/src/type_helpers.dart index bd8cc7f31d1..b17e88b2d52 100644 --- a/packages/go_router_builder/lib/src/type_helpers.dart +++ b/packages/go_router_builder/lib/src/type_helpers.dart @@ -94,7 +94,7 @@ String enumMapName(InterfaceType type) => '_\$${type.element.name}EnumMap'; String _stateValueAccess(ParameterElement element, Set pathParameters) { if (element.isExtraField) { - return 'extra as ${element.type.getDisplayString(withNullability: element.isOptional)}'; + return 'extra as ${element.type.getDisplayString(withNullability: true)}'; } late String access; diff --git a/packages/go_router_builder/pubspec.yaml b/packages/go_router_builder/pubspec.yaml index cf48de720f0..b53161dfc35 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.3.3 +version: 2.3.4 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_nullable_type_arguments_extra_value.dart b/packages/go_router_builder/test_inputs/required_nullable_type_arguments_extra_value.dart new file mode 100644 index 00000000000..2d7f8a17ac0 --- /dev/null +++ b/packages/go_router_builder/test_inputs/required_nullable_type_arguments_extra_value.dart @@ -0,0 +1,12 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:go_router/go_router.dart'; + +@TypedGoRoute( + path: '/default-value-route') +class RequiredNullableTypeArgumentsExtraValueRoute extends GoRouteData { + RequiredNullableTypeArgumentsExtraValueRoute({required this.$extra}); + final List $extra; +} diff --git a/packages/go_router_builder/test_inputs/required_nullable_type_arguments_extra_value.dart.expect b/packages/go_router_builder/test_inputs/required_nullable_type_arguments_extra_value.dart.expect new file mode 100644 index 00000000000..9877d353f4d --- /dev/null +++ b/packages/go_router_builder/test_inputs/required_nullable_type_arguments_extra_value.dart.expect @@ -0,0 +1,30 @@ +RouteBase get $requiredNullableTypeArgumentsExtraValueRoute => + GoRouteData.$route( + path: '/default-value-route', + factory: + $RequiredNullableTypeArgumentsExtraValueRouteExtension._fromState, + ); + +extension $RequiredNullableTypeArgumentsExtraValueRouteExtension + on RequiredNullableTypeArgumentsExtraValueRoute { + static RequiredNullableTypeArgumentsExtraValueRoute _fromState( + GoRouterState state) => + RequiredNullableTypeArgumentsExtraValueRoute( + $extra: state.extra as List, + ); + + String get location => GoRouteData.$location( + '/default-value-route', + ); + + void go(BuildContext context) => context.go(location, extra: $extra); + + Future push(BuildContext context) => + context.push(location, extra: $extra); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location, extra: $extra); + + void replace(BuildContext context) => + context.replace(location, extra: $extra); +}