From fdad1bb692726526c829131a6351b4865b065640 Mon Sep 17 00:00:00 2001 From: Sailesh Dahal Date: Tue, 8 Jul 2025 13:13:24 +0545 Subject: [PATCH 1/4] chore(deps): update dependencies and improve code formatting - Updated various dependencies in pubspec.yaml to their latest versions. - Refactored field configuration classes to use `super.name` for cleaner code. - Enhanced DartFormatter usage to specify language version 2.19.0 in multiple files. - Adjusted test cases to use async/await for better handling of asynchronous operations. --- lib/src/generators/forms/field_config.dart | 11 +++-- .../router/generator/router_generator.dart | 4 +- .../route_config/route_config_factory.dart | 4 +- .../router_2/auto_route_generator.dart | 2 +- .../code_builder/library_builder.dart | 4 +- .../resolvers/type_resolver.dart | 6 +-- pubspec.yaml | 41 ++++++++++--------- .../bottomsheet_class_generator_test.dart | 16 ++++---- test/dialogs/dialog_class_generator_test.dart | 16 ++++---- test/helpers/class_extension.dart | 10 +++-- 10 files changed, 61 insertions(+), 53 deletions(-) diff --git a/lib/src/generators/forms/field_config.dart b/lib/src/generators/forms/field_config.dart index 9a88adb..e21e506 100644 --- a/lib/src/generators/forms/field_config.dart +++ b/lib/src/generators/forms/field_config.dart @@ -17,21 +17,20 @@ class TextFieldConfig extends FieldConfig { final ExecutableElementData? validatorFunction; final ExecutableElementData? customTextEditingController; const TextFieldConfig({ - required String name, + required super.name, this.initialValue, this.validatorFunction, this.customTextEditingController, - }) : super(name: name); + }); } class DateFieldConfig extends FieldConfig { - const DateFieldConfig({required String name}) : super(name: name); + const DateFieldConfig({required super.name}); } class DropdownFieldConfig extends FieldConfig { final List items; - const DropdownFieldConfig({required String name, required this.items}) - : super(name: name); + const DropdownFieldConfig({required super.name, required this.items}); } class DropdownFieldItem { @@ -83,5 +82,5 @@ extension ExecutableElementDataExtension on ExecutableElement? { ? '$enclosingElementName.${this?.name}' : this?.name; bool get hasEnclosingElementName => enclosingElementName != null; - String? get enclosingElementName => this?.enclosingElement.name; + String? get enclosingElementName => this?.enclosingElement3.name; } diff --git a/lib/src/generators/router/generator/router_generator.dart b/lib/src/generators/router/generator/router_generator.dart index 6fccc29..8757981 100644 --- a/lib/src/generators/router/generator/router_generator.dart +++ b/lib/src/generators/router/generator/router_generator.dart @@ -1,5 +1,6 @@ import 'package:code_builder/code_builder.dart'; import 'package:dart_style/dart_style.dart'; +import 'package:pub_semver/pub_semver.dart'; import 'package:stacked_generator/src/generators/base_generator.dart'; import 'package:stacked_generator/src/generators/extensions/routes_extension.dart'; import 'package:stacked_generator/src/generators/router/generator/routes_class/routes_class_builder.dart'; @@ -62,7 +63,8 @@ class RouterGenerator implements BaseGenerator { ..body.addAll([...parsedClasses, navigationExtensionClassBuilder]), ); - return DartFormatter().format('${library.accept(emitter)}'); + return DartFormatter(languageVersion: Version.parse('2.19.0')) + .format('${library.accept(emitter)}'); } /// The classes are: diff --git a/lib/src/generators/router/route_config/route_config_factory.dart b/lib/src/generators/router/route_config/route_config_factory.dart index 69a58f9..7089513 100644 --- a/lib/src/generators/router/route_config/route_config_factory.dart +++ b/lib/src/generators/router/route_config/route_config_factory.dart @@ -1,7 +1,7 @@ import 'package:source_gen/source_gen.dart'; -import 'package:stacked_shared/stacked_shared.dart'; import 'package:stacked_generator/src/generators/router_common/models/importable_type.dart'; import 'package:stacked_generator/src/generators/router_common/models/route_config.dart'; +import 'package:stacked_shared/stacked_shared.dart'; import '../../router_common/models/route_parameter_config.dart'; import 'adaptive_route_config.dart'; @@ -80,7 +80,7 @@ class RouteConfigFactory { if (function != null) { final displayName = function.displayName.replaceFirst(RegExp('^_'), ''); final functionName = function.isStatic - ? '${function.enclosingElement.displayName}.$displayName' + ? '${function.enclosingElement3.displayName}.$displayName' : displayName; customTransitionBuilder = ResolvedType( diff --git a/lib/src/generators/router_2/auto_route_generator.dart b/lib/src/generators/router_2/auto_route_generator.dart index 4a33122..8b89653 100644 --- a/lib/src/generators/router_2/auto_route_generator.dart +++ b/lib/src/generators/router_2/auto_route_generator.dart @@ -75,7 +75,7 @@ class StackedRouterGenerator extends Generator { '.dart', '.gr.dart', ); - return clazz.library.parts.any( + return clazz.library.units.any( (e) => e.toString().endsWith(part), ); } diff --git a/lib/src/generators/router_2/code_builder/library_builder.dart b/lib/src/generators/router_2/code_builder/library_builder.dart index 4bd2dd2..66410f7 100644 --- a/lib/src/generators/router_2/code_builder/library_builder.dart +++ b/lib/src/generators/router_2/code_builder/library_builder.dart @@ -1,5 +1,6 @@ import 'package:code_builder/code_builder.dart'; import 'package:dart_style/dart_style.dart'; +import 'package:pub_semver/pub_semver.dart'; import 'package:stacked_generator/src/generators/router/generator/route_allocator.dart'; import 'package:stacked_generator/src/generators/router_2/router_extension_builder/router_extension_builder.dart'; import 'package:stacked_generator/src/generators/router_common/models/importable_type.dart'; @@ -115,5 +116,6 @@ String generateLibrary( ]), ); - return DartFormatter().format(library.accept(emitter).toString()); + return DartFormatter(languageVersion: Version.parse('2.19.0')) + .format(library.accept(emitter).toString()); } diff --git a/lib/src/generators/router_common/resolvers/type_resolver.dart b/lib/src/generators/router_common/resolvers/type_resolver.dart index 24411c0..399c458 100644 --- a/lib/src/generators/router_common/resolvers/type_resolver.dart +++ b/lib/src/generators/router_common/resolvers/type_resolver.dart @@ -77,9 +77,9 @@ class TypeResolver { final displayName = function.displayName.replaceFirst(RegExp('^_'), ''); var functionName = displayName; Element elementToImport = function; - if (function.enclosingElement is ClassElement) { - functionName = '${function.enclosingElement.displayName}.$displayName'; - elementToImport = function.enclosingElement; + if (function.enclosingElement3 is ClassElement) { + functionName = '${function.enclosingElement3.displayName}.$displayName'; + elementToImport = function.enclosingElement3; } return ResolvedType( name: functionName, diff --git a/pubspec.yaml b/pubspec.yaml index 9793d57..2e7eea7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,27 +7,28 @@ environment: sdk: ">=2.17.0 <3.0.0" dependencies: - build: ^2.2.1 - path: ^1.8.0 - recase: ^4.0.0 + build: ^2.5.4 + path: ^1.9.1 + recase: ^4.1.0 source_gen: ^2.0.0 - meta: ^1.10.0 - logger: ^1.1.0 - stacked_shared: ^1.3.0 + meta: ^1.16.0 + logger: ^2.6.0 + stacked_shared: ^1.4.2 # Removing this will cause issues when publish the package - analyzer: ^6.3.0 - dart_style: ^2.3.4 - code_builder: ^4.3.0 - collection: ^1.16.0 - freezed_annotation: ^2.2.0 - json_annotation: ^4.8.0 - xdg_directories: ^1.0.4 + analyzer: ^7.5.5 + dart_style: ^3.1.0 + code_builder: ^4.10.1 + collection: ^1.19.1 + freezed_annotation: ^3.1.0 + json_annotation: ^4.9.0 + xdg_directories: ^1.1.0 + pub_semver: ^2.2.0 dev_dependencies: - build_runner: ^2.0.6 - test: ^1.20.1 - build_test: ^2.1.5 - flutter_lints: ^3.0.1 - freezed: ^2.3.2 - json_serializable: ^6.6.1 - mockito: ^5.4.4 + build_runner: ^2.5.4 + test: ^1.26.2 + build_test: ^3.2.1 + flutter_lints: ^6.0.0 + freezed: ^3.1.0 + json_serializable: ^6.9.5 + mockito: ^5.4.6 diff --git a/test/bottomsheets/bottomsheet_class_generator_test.dart b/test/bottomsheets/bottomsheet_class_generator_test.dart index 61c34dd..bcb2440 100644 --- a/test/bottomsheets/bottomsheet_class_generator_test.dart +++ b/test/bottomsheets/bottomsheet_class_generator_test.dart @@ -7,23 +7,23 @@ import '../helpers/test_constants/bottomsheets_constants.dart'; void main() { group('BottomsheetClassGeneratorTest -', () { group('generate -', () { - test('When empty', () { + test('When empty', () async { final generator = BottomsheetClassGenerator([]); - expect(generator.generate(), kBottomsheetsEmpty); + expect(await generator.generate(), kBottomsheetsEmpty); }); - test('When change locator name', () { + test('When change locator name', () async { final generator = BottomsheetClassGenerator([], locatorName: 'customLocator'); - expect(generator.generate(), kBottomsheetsWithCustomNamedLocator); + expect(await generator.generate(), kBottomsheetsWithCustomNamedLocator); }); - test('One bottomsheet', () { + test('One bottomsheet', () async { final generator = BottomsheetClassGenerator([ const BottomsheetConfig( import: 'one.dart', bottomsheetClassName: 'BasicBottomsheet') ]); - expect(generator.generate(), kOneBottomsheet); + expect(await generator.generate(), kOneBottomsheet); }); - test('Two bottomsheets', () { + test('Two bottomsheets', () async { final generator = BottomsheetClassGenerator([ const BottomsheetConfig( import: 'one.dart', bottomsheetClassName: 'BasicBottomsheet'), @@ -31,7 +31,7 @@ void main() { import: 'two.dart', bottomsheetClassName: 'ComplexBottomsheet') ]); - expect(generator.generate(), kTwoBottomsheets); + expect(await generator.generate(), kTwoBottomsheets); }); }); }); diff --git a/test/dialogs/dialog_class_generator_test.dart b/test/dialogs/dialog_class_generator_test.dart index f6a7a4d..3f7c652 100644 --- a/test/dialogs/dialog_class_generator_test.dart +++ b/test/dialogs/dialog_class_generator_test.dart @@ -7,22 +7,22 @@ import '../helpers/test_constants/dialog_constant.dart'; void main() { group('DialogClassGeneratorTest -', () { group('generate -', () { - test('When empty', () { + test('When empty', () async { final generator = DialogClassGenerator([]); - expect(generator.generate(), kDialogsEmpty); + expect(await generator.generate(), kDialogsEmpty); }); - test('When change locator name', () { + test('When change locator name', () async { final generator = DialogClassGenerator([], locatorName: 'customLocator'); - expect(generator.generate(), kDialogsWithCustomNamedLocator); + expect(await generator.generate(), kDialogsWithCustomNamedLocator); }); - test('One dialog', () { + test('One dialog', () async { final generator = DialogClassGenerator([ const DialogConfig(import: 'one.dart', dialogClassName: 'BasicDialog') ]); - expect(generator.generate(), kOneDialog); + expect(await generator.generate(), kOneDialog); }); - test('Two dialogs', () { + test('Two dialogs', () async { final generator = DialogClassGenerator([ const DialogConfig( import: 'one.dart', dialogClassName: 'BasicDialog'), @@ -30,7 +30,7 @@ void main() { import: 'two.dart', dialogClassName: 'ComplexDialog') ]); - expect(generator.generate(), kTwoDialogs); + expect(await generator.generate(), kTwoDialogs); }); }); }); diff --git a/test/helpers/class_extension.dart b/test/helpers/class_extension.dart index d3f04ad..841abc3 100644 --- a/test/helpers/class_extension.dart +++ b/test/helpers/class_extension.dart @@ -1,12 +1,14 @@ import 'package:code_builder/code_builder.dart'; import 'package:dart_style/dart_style.dart'; +import 'package:pub_semver/pub_semver.dart'; extension SpecExtension on Spec { String get buildLibraryForClass { final library = Library((b) => b..body.add(this)); final emitter = DartEmitter.scoped(); - final result = DartFormatter().format('${library.accept(emitter)}'); + final result = DartFormatter(languageVersion: Version.parse('2.19.0')) + .format('${library.accept(emitter)}'); //print(result); return result; } @@ -17,7 +19,8 @@ extension SpecsExtension on Iterable { final library = Library((b) => b..body.addAll(this)); final emitter = DartEmitter.scoped(); - final result = DartFormatter().format('${library.accept(emitter)}'); + final result = DartFormatter(languageVersion: Version.parse('2.19.0')) + .format('${library.accept(emitter)}'); return result; } @@ -28,7 +31,8 @@ extension ListExpressionExtension on Iterable { final library = Library((b) => b..body.addAll(this)); final emitter = DartEmitter.scoped(); - final result = DartFormatter().format('${library.accept(emitter)}'); + final result = DartFormatter(languageVersion: Version.parse('2.19.0')) + .format('${library.accept(emitter)}'); return result; } From d0d69ca422ff4e3d6f4cbfd6bc2adc9ecc766954 Mon Sep 17 00:00:00 2001 From: Sailesh Dahal Date: Tue, 8 Jul 2025 13:29:37 +0545 Subject: [PATCH 2/4] chore(release): 1.7.0 [skip ci] ## [1.7.0](https://github.com/Stacked-Org/generator/compare/v1.6.1...v1.7.0) (2025-07-08) * Bump version to 1.7.0 and update dependencies to latest versions. --- CHANGELOG.md | 3 +++ pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89a6b0b..cd0e4f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# [1.7.0](https://github.com/Stacked-Org/generator/compare/v1.6.1...v1.7.0) (2025-07-08) +* Update dependencies to latest versions + ## [1.6.1](https://github.com/Stacked-Org/generator/compare/v1.6.0...v1.6.1) (2024-07-09) diff --git a/pubspec.yaml b/pubspec.yaml index 2e7eea7..e3843d9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: stacked_generator description: Stacked Generator is a package dedicated to reduce the boilerplate required to setup a stacked application -version: 1.6.1 +version: 1.7.0 homepage: https://github.com/FilledStacks/stacked/tree/master/packages/stacked_generator environment: From af8101d6b8deb4cbd7b30cbee43dc37e3bc12cad Mon Sep 17 00:00:00 2001 From: Sailesh Dahal Date: Tue, 8 Jul 2025 14:06:05 +0545 Subject: [PATCH 3/4] refactor(logging): update log color and emoji retrieval in SimpleLogPrinter - Changed the way colors and emojis are accessed in the SimpleLogPrinter class by instantiating PrettyPrinter to ensure proper null safety. - Cleaned up unnecessary whitespace in logger constants. --- lib/src/generators/logging/logger_class_content.dart | 5 +++-- test/helpers/test_constants/logger_constants.dart | 11 ++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/src/generators/logging/logger_class_content.dart b/lib/src/generators/logging/logger_class_content.dart index 60ab44c..641ddc8 100644 --- a/lib/src/generators/logging/logger_class_content.dart +++ b/lib/src/generators/logging/logger_class_content.dart @@ -32,8 +32,9 @@ class SimpleLogPrinter extends LogPrinter { @override List log(LogEvent event) { - var color = PrettyPrinter.levelColors[event.level]; - var emoji = PrettyPrinter.levelEmojis[event.level]; + var printer = PrettyPrinter(); + var color = printer.levelColors?[event.level]; + var emoji = printer.levelEmojis?[event.level]; var methodName = _getMethodName(); var methodNameSection = diff --git a/test/helpers/test_constants/logger_constants.dart b/test/helpers/test_constants/logger_constants.dart index 7f0d70b..91091d2 100644 --- a/test/helpers/test_constants/logger_constants.dart +++ b/test/helpers/test_constants/logger_constants.dart @@ -30,8 +30,9 @@ class SimpleLogPrinter extends LogPrinter { @override List log(LogEvent event) { - var color = PrettyPrinter.levelColors[event.level]; - var emoji = PrettyPrinter.levelEmojis[event.level]; + var printer = PrettyPrinter(); + var color = printer.levelColors?[event.level]; + var emoji = printer.levelEmojis?[event.level]; var methodName = _getMethodName(); var methodNameSection = @@ -315,7 +316,7 @@ Logger ebraLogger( exludeLogsFromClasses: exludeLogsFromClasses, ), output: MultiOutput([ - + ConsoleOutput(), if(kReleaseMode) outputOne(), if(kReleaseMode) outputTwo(), ]), @@ -368,7 +369,7 @@ Logger ebraLogger( exludeLogsFromClasses: exludeLogsFromClasses, ), output: MultipleLoggerOutput([ - + ConsoleOutput(), if(kReleaseMode) outputOne(), if(kReleaseMode) outputTwo(), ]), @@ -409,7 +410,7 @@ Logger getLogger( output: MultiOutput([ if(!kReleaseMode) ConsoleOutput(), - + ]), ); } From 1540dc97b608920bc578de11291155f9ee5c4bf4 Mon Sep 17 00:00:00 2001 From: Sailesh Dahal Date: Tue, 8 Jul 2025 14:14:28 +0545 Subject: [PATCH 4/4] refactor(logging): streamline log handling in SimpleLogPrinter - Refactored the instantiation of PrettyPrinter in SimpleLogPrinter to enhance null safety and maintainability. - Improved code readability by cleaning up whitespace and formatting in logger constants. - Ensured consistent log exclusion logic with clearer conditional statements. --- .../generators/logging/logger_class_content.dart | 14 ++++++++++---- test/helpers/test_constants/logger_constants.dart | 15 +++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/src/generators/logging/logger_class_content.dart b/lib/src/generators/logging/logger_class_content.dart index 641ddc8..d5c6969 100644 --- a/lib/src/generators/logging/logger_class_content.dart +++ b/lib/src/generators/logging/logger_class_content.dart @@ -30,9 +30,12 @@ class SimpleLogPrinter extends LogPrinter { this.showOnlyClass, }); + final printer = PrettyPrinter( + levelColors: PrettyPrinter.defaultLevelColors, + levelEmojis: PrettyPrinter.defaultLevelEmojis, + ); @override List log(LogEvent event) { - var printer = PrettyPrinter(); var color = printer.levelColors?[event.level]; var emoji = printer.levelEmojis?[event.level]; var methodName = _getMethodName(); @@ -43,9 +46,12 @@ class SimpleLogPrinter extends LogPrinter { var output = '\$emoji \$className\$methodNameSection - \${event.message}\${event.error != null ? '\\nERROR: \${event.error}\\n' : ''}\${printCallStack ? '\\nSTACKTRACE:\\n\$stackLog' : ''}'; - if (exludeLogsFromClasses - .any((excludeClass) => className == excludeClass) || - (showOnlyClass != null && className != showOnlyClass)) return []; + if (exludeLogsFromClasses.any( + (excludeClass) => className == excludeClass, + ) || + (showOnlyClass != null && className != showOnlyClass)) { + return []; + } final pattern = RegExp('.{1,800}'); // 800 is the size of each chunk List result = []; diff --git a/test/helpers/test_constants/logger_constants.dart b/test/helpers/test_constants/logger_constants.dart index 91091d2..0b4caf5 100644 --- a/test/helpers/test_constants/logger_constants.dart +++ b/test/helpers/test_constants/logger_constants.dart @@ -28,9 +28,13 @@ class SimpleLogPrinter extends LogPrinter { this.showOnlyClass, }); + + final printer = PrettyPrinter( + levelColors: PrettyPrinter.defaultLevelColors, + levelEmojis: PrettyPrinter.defaultLevelEmojis, + ); @override List log(LogEvent event) { - var printer = PrettyPrinter(); var color = printer.levelColors?[event.level]; var emoji = printer.levelEmojis?[event.level]; var methodName = _getMethodName(); @@ -41,9 +45,12 @@ class SimpleLogPrinter extends LogPrinter { var output = '\$emoji \$className\$methodNameSection - \${event.message}\${event.error != null ? '\\nERROR: \${event.error}\\n' : ''}\${printCallStack ? '\\nSTACKTRACE:\\n\$stackLog' : ''}'; - if (exludeLogsFromClasses - .any((excludeClass) => className == excludeClass) || - (showOnlyClass != null && className != showOnlyClass)) return []; + if (exludeLogsFromClasses.any( + (excludeClass) => className == excludeClass, + ) || + (showOnlyClass != null && className != showOnlyClass)) { + return []; + } final pattern = RegExp('.{1,800}'); // 800 is the size of each chunk List result = [];