addImportAndChangesInFile function

Future<void> addImportAndChangesInFile(
  1. String filePath,
  2. List<String> importStatements,
  3. List<String> methodCalls
)

Implementation

Future<void> addImportAndChangesInFile(String filePath,
    List<String> importStatements, List<String> methodCalls) async {
  final file = File(filePath);
  final lines = await file.readAsLines();

  int lastImportIndex = -1;
  for (int i = 0; i < lines.length; i++) {
    if (lines[i].startsWith("import ")) {
      lastImportIndex = i;
    } else {
      break;
    }
  }

  if (lastImportIndex != -1) {
    if (importStatements.isNotEmpty) {
      lines.insertAll(lastImportIndex + 1, importStatements);
    }
    int completionIndex = -1;
    for (int i = 0; i < lines.length; i++) {
      if (lines[i].trim() == '}') {
        completionIndex = i;
        break;
      }
    }

    if (completionIndex != -1) {
      if (methodCalls.isNotEmpty) {
        lines.insertAll(completionIndex, methodCalls);
      }
      await file.writeAsString(lines.join('\n'));
    }
  }
}