generateAssets function
Implementation
Future<String> generateAssets(
AssetsGenConfig config,
DartFormatter formatter,
) async {
if (config.assets.isEmpty) {
throw const InvalidSettingsException(
'The value of "flutter/assets:" is incorrect.',
);
}
final integrations = <Integration>[
if (config.flutterGen.integrations.image)
ImageIntegration(
config.packageParameterLiteral,
parseMetadata: config.flutterGen.parseMetadata,
),
if (config.flutterGen.integrations.flutterSvg)
SvgIntegration(
config.packageParameterLiteral,
parseMetadata: config.flutterGen.parseMetadata,
),
if (config.flutterGen.integrations.rive)
RiveIntegration(
config.packageParameterLiteral,
),
if (config.flutterGen.integrations.lottie)
LottieIntegration(
config.packageParameterLiteral,
),
];
// Warn for deprecated configs.
final deprecatedStyle = config.flutterGen.assets.style != null;
final deprecatedPackageParam =
config.flutterGen.assets.packageParameterEnabled != null;
if (deprecatedStyle || deprecatedPackageParam) {
final deprecationBuffer = StringBuffer();
deprecationBuffer.writeln(sDeprecationHeader);
if (deprecatedStyle) {
deprecationBuffer.writeln(
sBuildDeprecation(
'style',
'asset',
'asset.output',
'https://github.com/FlutterGen/flutter_gen/pull/294',
[
' assets:',
' outputs:',
' style: snake-case',
],
),
);
}
if (deprecatedPackageParam) {
deprecationBuffer.writeln(
sBuildDeprecation(
'package_parameter_enabled',
'asset',
'asset.output',
'https://github.com/FlutterGen/flutter_gen/pull/294',
[
' assets:',
' outputs:',
' package_parameter_enabled: true',
],
),
);
}
throw InvalidSettingsException(deprecationBuffer.toString());
}
final classesBuffer = StringBuffer();
final _StyleDefinition definition;
switch (config.flutterGen.assets.outputs.style) {
case FlutterGenElementAssetsOutputsStyle.dotDelimiterStyle:
definition = _dotDelimiterStyleDefinition;
break;
case FlutterGenElementAssetsOutputsStyle.snakeCaseStyle:
definition = _snakeCaseStyleDefinition;
break;
case FlutterGenElementAssetsOutputsStyle.camelCaseStyle:
definition = _camelCaseStyleDefinition;
break;
}
classesBuffer.writeln(await definition(config, integrations));
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());
}