generateAssets function
Implementation
String generateAssets(
AssetsGenConfig config,
DartFormatter formatter,
) {
if (config.assets.isEmpty) {
throw const InvalidSettingsException(
'The value of "flutter/assets:" is incorrect.',
);
}
final integrations = <Integration>[
ImageIntegration(config.packageParameterLiteral,
parseMetadata: config.flutterGen.parseMetadata),
if (config.flutterGen.integrations.flutterSvg)
SvgIntegration(config.packageParameterLiteral,
parseMetadata: config.flutterGen.parseMetadata),
if (config.flutterGen.integrations.flareFlutter)
FlareIntegration(config.packageParameterLiteral),
if (config.flutterGen.integrations.rive)
RiveIntegration(config.packageParameterLiteral),
if (config.flutterGen.integrations.lottie)
LottieIntegration(config.packageParameterLiteral),
];
// ignore: deprecated_member_use_from_same_package
final deprecatedStyle = config.flutterGen.assets.style != null;
final deprecatedPackageParam =
// ignore: deprecated_member_use_from_same_package
config.flutterGen.assets.packageParameterEnabled != null;
if (deprecatedStyle || deprecatedPackageParam) {
stderr.writeln('''
░░░░
██
██░░██
░░ ░░ ██░░░░░░██ ░░░░
██░░░░░░░░░░██
██░░░░░░░░░░██
██░░░░░░░░░░░░░░██
██░░░░░░██████░░░░░░██
██░░░░░░██████░░░░░░██
██░░░░░░░░██████░░░░░░░░██
██░░░░░░░░██████░░░░░░░░██
██░░░░░░░░░░██████░░░░░░░░░░██
██░░░░░░░░░░░░██████░░░░░░░░░░░░██
██░░░░░░░░░░░░██████░░░░░░░░░░░░██
██░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░██
██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██
██░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░██
██░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░██
██░░░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░░░██
░░ ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██
██████████████████████████████████████████
░░''');
}
if (deprecatedStyle && deprecatedPackageParam) {
stderr.writeln('''
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ⚠️ Warning │
│ The `style` and `package_parameter_enabled` property moved from asset to under asset.output. │
│ It should be changed in the following pubspec.yaml. │
│ https://github.com/FlutterGen/flutter_gen/pull/294 │
│ │
│ [pubspec.yaml] │
│ │
│ flutter_gen: │
│ assets: │
│ outputs: │
│ style: snake-case │
│ package_parameter_enabled: true │
└────────────────────────────────────────────────────────────────────────────────────────────────┘''');
} else if (deprecatedStyle) {
stderr.writeln('''
┌───────────────────────────────────────────────────────────────────────┐
│ ⚠️ Warning │
│ The `style` property moved from asset to under asset.output. │
│ It should be changed in the following ways │
│ https://github.com/FlutterGen/flutter_gen/pull/294 │
│ │
│ [pubspec.yaml] │
│ │
│ flutter_gen: │
│ assets: │
│ outputs: │
│ style: snake-case │
└───────────────────────────────────────────────────────────────────────┘''');
} else if (deprecatedPackageParam) {
stderr.writeln('''
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ ⚠️ Warning │
│ The `package_parameter_enabled` property moved from asset to under asset.output. │
│ It should be changed in the following pubspec.yaml. │
│ https://github.com/FlutterGen/flutter_gen/pull/294 │
│ │
│ [pubspec.yaml] │
│ │
│ flutter_gen: │
│ assets: │
│ outputs: │
│ package_parameter_enabled: true │
└────────────────────────────────────────────────────────────────────────────────────────┘''');
}
final classesBuffer = StringBuffer();
if (config.flutterGen.assets.outputs.isDotDelimiterStyle) {
classesBuffer.writeln(_dotDelimiterStyleDefinition(config, integrations));
} else if (config.flutterGen.assets.outputs.isSnakeCaseStyle) {
classesBuffer.writeln(_snakeCaseStyleDefinition(config, integrations));
} else if (config.flutterGen.assets.outputs.isCamelCaseStyle) {
classesBuffer.writeln(_camelCaseStyleDefinition(config, integrations));
} else {
throw 'The value of "flutter_gen/assets/style." is incorrect.';
}
final imports = <Import>{};
for (final integration in integrations.where((e) => e.isEnabled)) {
imports.addAll(integration.requiredImports);
classesBuffer.writeln(integration.classOutput);
}
final importsBuffer = StringBuffer();
for (final e in imports.sorted((a, b) => a.import.compareTo(b.import))) {
importsBuffer.writeln(import(e));
}
final buffer = StringBuffer();
buffer.writeln(header);
buffer.writeln(ignore);
buffer.writeln(importsBuffer.toString());
buffer.writeln(classesBuffer.toString());
return formatter.format(buffer.toString());
}