removeDependency method
Removes a dependency from pubspec.yaml
Implementation
Future<void> removeDependency(String packageName,
{bool isDev = false}) async {
final pubspec = await _loadPubspec();
final targetBlock = isDev ? 'dev_dependencies' : 'dependencies';
final deps = pubspec[targetBlock] as Map<String, dynamic>? ?? {};
if (!deps.containsKey(packageName)) {
return; // Not installed
}
final file = File(pubspecPath);
final lines = await file.readAsLines();
bool insideBlock = false;
final newLines = <String>[];
for (var i = 0; i < lines.length; i++) {
final line = lines[i];
if (line.trim() == 'dependencies:') {
insideBlock = !isDev;
} else if (line.trim() == 'dev_dependencies:') {
insideBlock = isDev;
} else if (line.trim().endsWith(':') &&
!line.startsWith(' ') &&
line.trim() != 'dependencies:' &&
line.trim() != 'dev_dependencies:') {
// another top level block
insideBlock = false;
}
if (insideBlock) {
if (line.trim().startsWith('$packageName:')) {
continue; // Skip this line to remove it
}
}
newLines.add(line);
}
await file.writeAsString(newLines.join('\n') + '\n');
}