addImport static method
Implementation
static Future<void> addImport({
required String filePath,
required List<String> importStatements,
}) async {
final file = File(filePath);
final lines = await file.readAsLines();
// `dart format` may wrap a long import across multiple physical lines
// (e.g. `import '...'\n show Foo;`). Comparing against a
// whitespace-collapsed view of the file detects an already-present import
// regardless of how it was wrapped or indented, so we never insert a
// duplicate after the project has been formatted.
final existing = StringBuffer(collapseWhitespace(lines.join(' ')));
for (var importStatement in importStatements) {
final normalized = collapseWhitespace(importStatement);
if (!existing.toString().contains(normalized)) {
lines.insert(0, importStatement);
existing.write(' $normalized');
}
}
await file.writeAsString(lines.join('\n'));
}