addAssets static method
Implementation
static void addAssets(List<String> assetPaths) {
final file = File(_pubspecPath);
if (!file.existsSync()) return;
final lines = file.readAsLinesSync();
final existingAssets = _getAllAssets(lines);
final toAdd = assetPaths.where((e) => !existingAssets.contains(e)).toList();
if (toAdd.isEmpty) return;
final result = <String>[];
bool flutterFound = false;
bool assetsFound = false;
bool inserted = false;
for (final line in lines) {
final trimmed = line.trim();
result.add(line);
if (!line.startsWith(' ') && trimmed == 'flutter:') {
flutterFound = true;
continue;
}
if (flutterFound && line.startsWith(' ') && trimmed == 'assets:') {
assetsFound = true;
if (!inserted) {
for (final asset in toAdd) {
result.add(' - $asset');
}
inserted = true;
}
}
}
if (flutterFound && !assetsFound) {
final flutterIndex = result.indexWhere(
(e) => !e.startsWith(' ') && e.trim() == 'flutter:',
);
if (flutterIndex != -1) {
result.insert(flutterIndex + 1, ' assets:');
for (int i = 0; i < toAdd.length; i++) {
result.insert(flutterIndex + 2 + i, ' - ${toAdd[i]}');
}
}
}
if (!flutterFound) {
result.add('');
result.add('flutter:');
result.add(' assets:');
for (final asset in toAdd) {
result.add(' - $asset');
}
}
file.writeAsStringSync('${result.join('\n')}\n');
}