generate method
String?
generate({
- required String projectPath,
- required List<
DiscoveredAsset> assets, - String? relativeFilePath,
Generates the Assets constant class for assets in projectPath at relativeFilePath.
Defaults to lib/core/constants/assets.dart if relativeFilePath is null.
Does nothing if assets is empty.
Implementation
String? generate({
required String projectPath,
required List<DiscoveredAsset> assets,
String? relativeFilePath,
}) {
if (assets.isEmpty) return null;
final relPath =
(relativeFilePath != null && relativeFilePath.trim().isNotEmpty)
? relativeFilePath.trim()
: 'lib/core/constants/assets.dart';
final fieldNameMap = _resolveFieldNames(assets);
final buffer = StringBuffer();
buffer.writeln('// GENERATED FILE - DO NOT EDIT BY HAND');
buffer.writeln('// Run flutter_setup regeneration to update.');
buffer.writeln();
buffer.writeln('class Assets {');
buffer.writeln(' Assets._();');
buffer.writeln();
final sortedEntries = fieldNameMap.entries.toList()
..sort((a, b) => a.key.compareTo(b.key));
for (final entry in sortedEntries) {
final fieldName = entry.key;
final asset = entry.value;
buffer.writeln(
" static const String $fieldName = '${asset.relativePath}';");
}
buffer.writeln('}');
final targetFile = File(p.join(projectPath, relPath));
final parentDir = targetFile.parent;
if (!parentDir.existsSync()) {
parentDir.createSync(recursive: true);
}
targetFile.writeAsStringSync(buffer.toString());
return relPath;
}