addImportAndChangesInFile method

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

Implementation

Future<void> addImportAndChangesInFile({
  required String filePath,
  required List<String> importStatements,
  required 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("$kImport ")) {
      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;
      }
    }

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