removeFrom method

void removeFrom(
  1. File file, {
  2. bool shouldDelete = false,
})

Removes the entry with name from the file.

If the file does not exist, this will do nothing.

If a file has multiple entries with the same name, all of them will be removed.

If shouldDelete is true, the file will be deleted if it is empty after removing the entry. Otherwise, the file will be left empty.

Implementation

void removeFrom(File file, {bool shouldDelete = false}) {
  if (!file.existsSync()) return;

  final content = file.readAsStringSync();
  final stringPattern = '\n$_startComment.*$_endComment\n\n'
      .replaceAll('[', r'\[')
      .replaceAll(']', r'\]');
  final pattern = RegExp(
    stringPattern,
    multiLine: true,
    dotAll: true,
  );
  final newContent = content.replaceAllMapped(pattern, (_) => '');
  file.writeAsStringSync(newContent);

  if (shouldDelete && newContent.trim().isEmpty) {
    file.deleteSync();
  }
}