generateAssets function

String generateAssets(
  1. AssetsGenConfig config,
  2. DartFormatter formatter
)

Implementation

String generateAssets(
  AssetsGenConfig config,
  DartFormatter formatter,
) {
  if (config.assets.isEmpty) {
    throw InvalidSettingsException(
        'The value of "flutter/assets:" is incorrect.');
  }

  final importsBuffer = StringBuffer();
  final classesBuffer = StringBuffer();

  final integrations = <Integration>[
    // TODO: Until null safety generalizes
    if (config.flutterGen.integrations.flutterSvg)
      SvgIntegration(config.packageParameterLiteral,
          nullSafety: config.flutterGen.nullSafety),
    if (config.flutterGen.integrations.flareFlutter)
      FlareIntegration(nullSafety: config.flutterGen.nullSafety),
  ];

  if (config.flutterGen.assets.isDotDelimiterStyle) {
    classesBuffer.writeln(_dotDelimiterStyleDefinition(config, integrations));
  } else if (config.flutterGen.assets.isSnakeCaseStyle) {
    classesBuffer.writeln(_snakeCaseStyleDefinition(config, integrations));
  } else if (config.flutterGen.assets.isCamelCaseStyle) {
    classesBuffer.writeln(_camelCaseStyleDefinition(config, integrations));
  } else {
    throw 'The value of "flutter_gen/assets/style." is incorrect.';
  }

  // TODO: Until null safety generalizes
  if (config.flutterGen.nullSafety) {
    classesBuffer.writeln(_assetGenImageClassDefinition(
      config.packageParameterLiteral,
    ));
  } else {
    classesBuffer.writeln(_assetGenImageClassDefinitionWithNoNullSafety(
      config.packageParameterLiteral,
    ));
  }

  final imports = <String>{'package:flutter/widgets.dart'};
  integrations
      .where((integration) => integration.isEnabled)
      .forEach((integration) {
    imports.addAll(integration.requiredImports);
    classesBuffer.writeln(integration.classOutput);
  });
  for (final package in imports) {
    importsBuffer.writeln(import(package));
  }

  final buffer = StringBuffer();

  // TODO: Until null safety generalizes
  if (config.flutterGen.nullSafety) {
    buffer.writeln(header);
  } else {
    buffer.writeln(headerWithNoNullSafety);
  }
  buffer.writeln(importsBuffer.toString());
  buffer.writeln(classesBuffer.toString());
  return formatter.format(buffer.toString());
}