updatePubspecYaml static method

Future<void> updatePubspecYaml({
  1. Map<String, dynamic> modifiedYamlCallback(
    1. Map<String, dynamic>
    )?,
})

Implementation

static Future<void> updatePubspecYaml({
  Map<String, dynamic> Function(Map<String, dynamic>)? modifiedYamlCallback,
}) async {
  final pubspecFile = File('pubspec.yaml');
  String yamlString = pubspecFile.readAsStringSync();
  final yamlMap = loadYaml(yamlString);

  Map<String, dynamic> modifiedYamlMap = Map<String, dynamic>.from(yamlMap as Map);

  if (!modifiedYamlMap.containsKey('flutter')) {
    modifiedYamlMap['flutter'] = {
      'assets': [],
    };
  }
  if (!(modifiedYamlMap['flutter'] as Map).containsKey('assets')) {
    var flutter = {
      ...(modifiedYamlMap['flutter'] as Map),
      'assets': [],
    };
    modifiedYamlMap['flutter'] = flutter;
  }

  Map<String, dynamic> modifiedYamlMapCalled = {};
  if (modifiedYamlCallback != null) {
    modifiedYamlMapCalled = modifiedYamlCallback(modifiedYamlMap);
    modifiedYamlMap = modifiedYamlMapCalled;
  }

  final yamlWriter = YamlWriter();
  final modifiedYamlString = yamlWriter.write(modifiedYamlMap);

  pubspecFile.writeAsStringSync(modifiedYamlString);
}