From 245d7ccd5735411e307ddec47acf644416a5e838 Mon Sep 17 00:00:00 2001 From: rajumuliyashiya <24muliyashiya@gmail.com> Date: Sat, 26 Apr 2025 14:23:54 +0530 Subject: [PATCH] [go_router_builder] Fixes an deprecated warning for using withNullability --- packages/go_router_builder/CHANGELOG.md | 4 ++++ .../lib/src/go_router_generator.dart | 3 ++- .../go_router_builder/lib/src/route_config.dart | 3 ++- .../go_router_builder/lib/src/type_helpers.dart | 15 +++++++++++++-- packages/go_router_builder/pubspec.yaml | 2 +- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/go_router_builder/CHANGELOG.md b/packages/go_router_builder/CHANGELOG.md index b9c3781092fc..c7b1954818f0 100644 --- a/packages/go_router_builder/CHANGELOG.md +++ b/packages/go_router_builder/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.8.3 + +- Fixes an deprecated warning for using withNullability + ## 2.8.2 - Fixes an issue when enum params are not required 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..e194762f36ac 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); + annotation.objectValue.type!.getDisplayString().withoutNullability; 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 fe60df748c38..e0ef036b5b33 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,'}' @@ -609,7 +610,7 @@ abstract class RouteBaseConfig { return false; } final DartType typeArgument = typeArguments.single; - if (typeArgument.getDisplayString(withNullability: false) != + if (typeArgument.getDisplayString().withoutNullability != '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..f1cf62f2e054 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.', + '`${paramType.getDisplayString().withoutNullability}` 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; @@ -438,6 +438,17 @@ extension ParameterElementExtension on ParameterElement { bool get isExtraField => name == extraFieldName; } +/// Extension helpers on [String] for nullability check. +extension TypeStringExtensions on String { + /// Returns `true` if the type string ends with a nullability marker (`?` or `*`) + bool get _isNullableType => endsWith('?') || endsWith('*'); + + /// Returns the type string without a trailing nullability marker + String get withoutNullability { + return _isNullableType ? substring(0, length - 1) : this; + } +} + /// An error thrown when a default value is used with a nullable type. class NullableDefaultValueError extends InvalidGenerationSourceError { /// An error thrown when a default value is used with a nullable type. diff --git a/packages/go_router_builder/pubspec.yaml b/packages/go_router_builder/pubspec.yaml index 14312ddf0058..f6cc3f4765fc 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.2 +version: 2.8.3 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