disableAllPlugins method
Disable all enabled plugins across all editable scopes.
Implementation
Future<PluginOperationResult> disableAllPlugins() async {
int disabledCount = 0;
final errors = <String>[];
for (final scope in validInstallableScopes) {
final settingSource = scopeToSettingSource(scope);
final enabled = getSettingsEnabledPlugins(settingSource);
if (enabled == null || enabled.isEmpty) continue;
for (final pluginId in enabled.keys) {
if (enabled[pluginId] != true) continue;
final result = await _setPluginEnabled(pluginId, false);
if (result.success) {
disabledCount++;
} else {
errors.add('$pluginId: ${result.message}');
}
}
}
if (errors.isNotEmpty) {
return PluginOperationResult(
success: false,
message:
'Disabled $disabledCount ${_plural(disabledCount, 'plugin')}, '
'${errors.length} failed:\n${errors.join('\n')}',
);
}
if (disabledCount == 0) {
return const PluginOperationResult(
success: true,
message: 'No enabled plugins to disable',
);
}
return PluginOperationResult(
success: true,
message:
'Disabled $disabledCount ${_plural(disabledCount, 'plugin')}',
);
}