diff --git a/packages/go_router_builder/CHANGELOG.md b/packages/go_router_builder/CHANGELOG.md index 0ac16ec275f4..c204e83cbc3c 100644 --- a/packages/go_router_builder/CHANGELOG.md +++ b/packages/go_router_builder/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.9.1 + +- Fixes an deprecated warning for using withNullability + ## 2.9.0 - Adds support for `caseSensitive` for go routes. diff --git a/packages/go_router_builder/lib/src/go_router_generator.dart b/packages/go_router_builder/lib/src/go_router_generator.dart index e094d1f98edd..88803b29e5cc 100644 --- a/packages/go_router_builder/lib/src/go_router_generator.dart +++ b/packages/go_router_builder/lib/src/go_router_generator.dart @@ -10,6 +10,7 @@ import 'package:build/build.dart'; import 'package:source_gen/source_gen.dart'; import 'route_config.dart'; +import 'type_helpers.dart'; const String _routeDataUrl = 'package:go_router/src/route_data.dart'; @@ -79,7 +80,7 @@ ${getters.map((String e) => "$e,").join('\n')} ConstantReader annotation, ) { final String typedAnnotation = - annotation.objectValue.type!.getDisplayString(withNullability: false); + withoutNullability(annotation.objectValue.type!.getDisplayString()); final String type = typedAnnotation.substring(0, typedAnnotation.indexOf('<')); final String routeData = _annotations[type]!; diff --git a/packages/go_router_builder/lib/src/route_config.dart b/packages/go_router_builder/lib/src/route_config.dart index 44c4fd4c33b4..3e4c9175bd85 100644 --- a/packages/go_router_builder/lib/src/route_config.dart +++ b/packages/go_router_builder/lib/src/route_config.dart @@ -172,6 +172,7 @@ class StatefulShellBranchConfig extends RouteBaseConfig { @override String get factorConstructorParameters => ''; + @override String get routeConstructorParameters => '${navigatorKey == null ? '' : 'navigatorKey: $navigatorKey,'}' @@ -616,7 +617,7 @@ abstract class RouteBaseConfig { return false; } final DartType typeArgument = typeArguments.single; - if (typeArgument.getDisplayString(withNullability: false) != + if (withoutNullability(typeArgument.getDisplayString()) != 'NavigatorState') { return false; } diff --git a/packages/go_router_builder/lib/src/type_helpers.dart b/packages/go_router_builder/lib/src/type_helpers.dart index e5a0756c3468..ecf7bbd30677 100644 --- a/packages/go_router_builder/lib/src/type_helpers.dart +++ b/packages/go_router_builder/lib/src/type_helpers.dart @@ -68,7 +68,7 @@ String decodeParameter(ParameterElement element, Set pathParameters) { throw InvalidGenerationSourceError( 'The parameter type ' - '`${paramType.getDisplayString(withNullability: false)}` is not supported.', + '`${withoutNullability(paramType.getDisplayString())}` is not supported.', element: element, ); } @@ -111,7 +111,7 @@ String enumMapName(InterfaceType type) => '_\$${type.element.name}EnumMap'; String _stateValueAccess(ParameterElement element, Set pathParameters) { if (element.isExtraField) { // ignore: avoid_redundant_argument_values - return 'extra as ${element.type.getDisplayString(withNullability: true)}'; + return 'extra as ${element.type.getDisplayString()}'; } late String access; @@ -127,6 +127,16 @@ String _stateValueAccess(ParameterElement element, Set pathParameters) { return access; } +/// Returns `true` if the type string ends with a nullability marker (`?` or `*`) +bool _isNullableType(String type) { + return type.endsWith('?') || type.endsWith('*'); +} + +/// Returns the type string without a trailing nullability marker +String withoutNullability(String type) { + return _isNullableType(type) ? type.substring(0, type.length - 1) : type; +} + abstract class _TypeHelper { const _TypeHelper(); diff --git a/packages/go_router_builder/pubspec.yaml b/packages/go_router_builder/pubspec.yaml index bd3fc2836cf8..567f8f7808bf 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.9.0 +version: 2.9.1 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