Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,8 @@ flutter_gen:
assets:
# Optional
enabled: true
# Optional (default: Assets)
output_class: Assets
# Optional
# Set to true if you want this package to be a package dependency
# See: https://flutter.dev/docs/development/ui/assets-and-images#from-packages
Expand Down
32 changes: 21 additions & 11 deletions packages/core/lib/generators/assets_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ String generateAssets(
if (config.flutterGen.integrations.flareFlutter) FlareIntegration(),
if (config.flutterGen.integrations.rive) RiveIntegration(),
];

if (config.flutterGen.assets.isDotDelimiterStyle) {
classesBuffer.writeln(_dotDelimiterStyleDefinition(config, integrations));
} else if (config.flutterGen.assets.isSnakeCaseStyle) {
Expand Down Expand Up @@ -249,8 +248,10 @@ String _dotDelimiterStyleDefinition(
assetTypeQueue.addAll(assetType.children);
}
}
buffer
.writeln(_dotDelimiterStyleAssetsClassDefinition(assetsStaticStatements));
buffer.writeln(_dotDelimiterStyleAssetsClassDefinition(
assetsStaticStatements,
config.flutterGen.assets.outputClass,
));
return buffer.toString();
}

Expand Down Expand Up @@ -306,27 +307,36 @@ String _flatStyleDefinition(
)
.whereType<_Statement>()
.toList();
return _flatStyleAssetsClassDefinition(statements);
return _flatStyleAssetsClassDefinition(
statements,
config.flutterGen.assets.outputClass,
);
}

String _flatStyleAssetsClassDefinition(List<_Statement> statements) {
String _flatStyleAssetsClassDefinition(
List<_Statement> statements,
String outputClassName,
) {
final statementsBlock =
statements.map((statement) => '''${statement.toDartDocString()}
${statement.toStaticFieldString()}
''').join('\n');
return _assetsClassDefinition(statementsBlock);
return _assetsClassDefinition(statementsBlock, outputClassName);
}

String _dotDelimiterStyleAssetsClassDefinition(List<_Statement> statements) {
String _dotDelimiterStyleAssetsClassDefinition(
List<_Statement> statements,
String outputClassName,
) {
final statementsBlock =
statements.map((statement) => statement.toStaticFieldString()).join('\n');
return _assetsClassDefinition(statementsBlock);
return _assetsClassDefinition(statementsBlock, outputClassName);
}

String _assetsClassDefinition(String statementsBlock) {
String _assetsClassDefinition(String statementsBlock, String outputClassName) {
return '''
class Assets {
Assets._();
class $outputClassName {
$outputClassName._();

$statementsBlock
}
Expand Down
1 change: 1 addition & 0 deletions packages/core/lib/settings/config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ flutter_gen:

assets:
enabled: true
output_class: Assets
package_parameter_enabled: false
style: dot-delimiter

Expand Down
4 changes: 4 additions & 0 deletions packages/core/lib/settings/pubspec.dart
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ class FlutterGenAssets {
required this.enabled,
required this.packageParameterEnabled,
required this.style,
required this.outputClass,
}) {
if (style != dotDelimiterStyle &&
style != snakeCaseStyle &&
Expand All @@ -122,6 +123,9 @@ class FlutterGenAssets {
@JsonKey(name: 'style', required: true)
final String style;

@JsonKey(name: 'output_class', required: true)
final String outputClass;

bool get isDotDelimiterStyle => style == dotDelimiterStyle;

bool get isSnakeCaseStyle => style == snakeCaseStyle;
Expand Down
11 changes: 9 additions & 2 deletions packages/core/lib/settings/pubspec.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions packages/core/test/assets_gen_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,13 @@ void main() {

await expectedAssetsGen(pubspec, generated, fact);
});

test('Assets with custom class name', () async {
const pubspec = 'test_resources/pubspec_assets_output_class.yaml';
const fact = 'test_resources/actual_data/assets_output_class.gen.dart';
const generated = 'test_resources/lib/gen/assets_output_class.gen.dart';

await expectedAssetsGen(pubspec, generated, fact);
});
});
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions packages/core/test_resources/pubspec_assets_output_class.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: test

flutter_gen:
output: lib/gen/ # Optional (default: lib/gen/)
line_length: 80 # Optional (default: 80)

assets:
output_class: MyAssets

flutter:
assets:
- assets/images/chip3/chip3.jpg