addImports static method
Implementation
static Future<void> addImports(String filePath, List<String> imports) async {
try {
final file = File(filePath);
if (!await file.exists()) {
print('❌ File not found: $filePath');
return;
}
var content = await file.readAsString();
final normalizedImports = imports.map((imp) {
imp = imp.trim();
if (!imp.endsWith(';')) {
imp = '$imp;';
}
return imp;
}).toList();
final importsToAdd = normalizedImports
.where((imp) => !content.contains(imp))
.toList();
if (importsToAdd.isEmpty) {
print('⚠️ All imports already exist');
return;
}
final regex = RegExp(r"""import\s+['"](.+?)['"];""");
final matches = regex.allMatches(content);
final lastImportMatch = matches.isNotEmpty ? matches.last : null;
String newContent;
if (lastImportMatch != null) {
final insertPosition = lastImportMatch.end;
final importsText = importsToAdd.join('\n');
newContent =
'${content.substring(0, insertPosition)}\n$importsText\n${content.substring(insertPosition)}';
} else {
final importsText = importsToAdd.join('\n');
newContent = '$importsText\n\n$content';
}
await file.writeAsString(newContent);
print('✅ Imports added successfully:');
for (var imp in importsToAdd) {
print(' ➕ $imp');
}
} catch (e) {
print('❌ Error: $e');
}
}