diff --git a/packages/go_router_builder/CHANGELOG.md b/packages/go_router_builder/CHANGELOG.md index 9ace42f1ed7..895a4e5536a 100644 --- a/packages/go_router_builder/CHANGELOG.md +++ b/packages/go_router_builder/CHANGELOG.md @@ -1,3 +1,9 @@ +## 4.1.1 + +- Allow `analyzer: '>=7.4.0 <9.0.0'`. +- Allow `build: '>=3.0.0 <5.0.0'`. +- Allow `source_gen: '>=3.1.0 <5.0.0'`. + ## 4.1.0 - Adds support for classes that support fromJson/toJson. [#117261](https://github.com/flutter/flutter/issues/117261) diff --git a/packages/go_router_builder/lib/src/route_config.dart b/packages/go_router_builder/lib/src/route_config.dart index 24bab43cfdc..3f53838891a 100644 --- a/packages/go_router_builder/lib/src/route_config.dart +++ b/packages/go_router_builder/lib/src/route_config.dart @@ -623,7 +623,7 @@ abstract class RouteBaseConfig { }) { assert(!reader.isNull, 'reader should not be null'); final InterfaceType type = reader.objectValue.type! as InterfaceType; - final String typeName = type.element.name; + final String typeName = type.element.displayName; if (isAncestorRelative && typeName == 'TypedGoRoute') { throw InvalidGenerationSourceError( @@ -942,7 +942,7 @@ $routeDataClassName.$dataConvertionFunctionName( String _enumMapConst(InterfaceType type) { assert(type.isEnum); - final String enumName = type.element.name; + final String enumName = type.element.displayName; final StringBuffer buffer = StringBuffer('const ${enumMapName(type)} = {'); diff --git a/packages/go_router_builder/lib/src/type_helpers.dart b/packages/go_router_builder/lib/src/type_helpers.dart index ed21b1f68be..2bc4fb23eee 100644 --- a/packages/go_router_builder/lib/src/type_helpers.dart +++ b/packages/go_router_builder/lib/src/type_helpers.dart @@ -224,10 +224,11 @@ String compareField( } /// Gets the name of the `const` map generated to help encode [Enum] types. -String enumMapName(InterfaceType type) => '_\$${type.element.name}EnumMap'; +String enumMapName(InterfaceType type) => + '_\$${type.element.displayName}EnumMap'; /// Gets the name of the `const` map generated to help encode [Json] types. -String jsonMapName(InterfaceType type) => type.element.name; +String jsonMapName(InterfaceType type) => type.element.displayName; String _stateValueAccess( FormalParameterElement element, @@ -302,8 +303,10 @@ class _TypeHelperBigInt extends _TypeHelperWithHelper { ); @override - bool _matchesType(DartType type) => - const TypeChecker.fromRuntime(BigInt).isAssignableFromType(type); + bool _matchesType(DartType type) => const TypeChecker.typeNamed( + BigInt, + inSdk: true, + ).isAssignableFromType(type); } class _TypeHelperBool extends _TypeHelperWithHelper { @@ -342,8 +345,10 @@ class _TypeHelperDateTime extends _TypeHelperWithHelper { ); @override - bool _matchesType(DartType type) => - const TypeChecker.fromRuntime(DateTime).isAssignableFromType(type); + bool _matchesType(DartType type) => const TypeChecker.typeNamed( + DateTime, + inSdk: true, + ).isAssignableFromType(type); } class _TypeHelperDouble extends _TypeHelperWithHelper { @@ -472,14 +477,17 @@ class _TypeHelperExtensionType extends _TypeHelper { representationType.isDartCoreNum || representationType.isDartCoreBool || representationType.isEnum || - const TypeChecker.fromRuntime( + const TypeChecker.typeNamed( BigInt, + inSdk: true, ).isAssignableFromType(representationType) || - const TypeChecker.fromRuntime( + const TypeChecker.typeNamed( DateTime, + inSdk: true, ).isAssignableFromType(representationType) || - const TypeChecker.fromRuntime( + const TypeChecker.typeNamed( Uri, + inSdk: true, ).isAssignableFromType(representationType); } } @@ -566,7 +574,7 @@ class _TypeHelperUri extends _TypeHelperWithHelper { @override bool _matchesType(DartType type) => - const TypeChecker.fromRuntime(Uri).isAssignableFromType(type); + const TypeChecker.typeNamed(Uri, inSdk: true).isAssignableFromType(type); } class _TypeHelperIterable extends _TypeHelperWithHelper { @@ -606,16 +614,18 @@ class _TypeHelperIterable extends _TypeHelperWithHelper { // get correct type for iterable String iterableCaster = ''; String fallBack = ''; - if (const TypeChecker.fromRuntime( + if (const TypeChecker.typeNamed( List, + inSdk: true, ).isAssignableFromType(parameterElement.type)) { iterableCaster += '.toList()'; if (!parameterElement.type.isNullableType && !parameterElement.hasDefaultValue) { fallBack = '?? const []'; } - } else if (const TypeChecker.fromRuntime( + } else if (const TypeChecker.typeNamed( Set, + inSdk: true, ).isAssignableFromType(parameterElement.type)) { iterableCaster += '.toSet()'; if (!parameterElement.type.isNullableType && @@ -656,8 +666,10 @@ $fieldName$nullAwareAccess.map((e) => e.toString()).toList()'''; } @override - bool _matchesType(DartType type) => - const TypeChecker.fromRuntime(Iterable).isAssignableFromType(type); + bool _matchesType(DartType type) => const TypeChecker.typeNamed( + Iterable, + inSdk: true, + ).isAssignableFromType(type); @override String _compare(String value1, String value2) => @@ -783,10 +795,10 @@ class _TypeHelperJson extends _TypeHelperWithHelper { } final FunctionType functionType = secondParam.type as FunctionType; - if (functionType.parameters.length != 1 || + if (functionType.formalParameters.length != 1 || functionType.returnType.getDisplayString() != - type.element.typeParameters.first.getDisplayString() || - functionType.parameters[0].type.getDisplayString() != 'Object?') { + type.element.typeParameters.first.displayName || + functionType.formalParameters[0].type.getDisplayString() != 'Object?') { throw InvalidGenerationSourceError( 'The parameter type ' '`${type.getDisplayString(withNullability: false)}` not have a supported fromJson definition.', diff --git a/packages/go_router_builder/pubspec.yaml b/packages/go_router_builder/pubspec.yaml index f25a19ef95f..5665f5e9243 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: 4.1.0 +version: 4.1.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 @@ -11,14 +11,14 @@ environment: flutter: ">=3.29.0" dependencies: - analyzer: ">=7.4.0 <8.0.0" + analyzer: ">=7.4.0 <9.0.0" async: ^2.8.0 - build: ^3.0.0 + build: ">=3.0.0 <5.0.0" build_config: ^1.0.0 collection: ^1.14.0 meta: ^1.7.0 path: ^1.8.0 - source_gen: ^3.0.0 + source_gen: ">=3.1.0 <5.0.0" source_helper: ^1.3.4 dev_dependencies: