disposeAll static method
void
disposeAll()
Implementation
static void disposeAll() {
if (ZenConfig.enableDebugLogs) {
ZenLogger.logInfo('🧹 Disposing all scopes');
}
// Dispose all persistent scopes
final persistentToDispose = List<String>.from(_persistentScopes.keys);
for (final scopeName in persistentToDispose) {
final scope = _persistentScopes[scopeName];
if (scope != null && !scope.isDisposed) {
try {
scope.dispose();
} catch (e, stackTrace) {
ZenLogger.logError(
'Error disposing persistent scope $scopeName', e, stackTrace);
}
}
}
// Dispose all auto-dispose scopes
final autoDisposeToDispose = List<String>.from(_autoDisposeScopes.keys);
for (final scopeName in autoDisposeToDispose) {
final scope = _autoDisposeScopes[scopeName];
if (scope != null && !scope.isDisposed) {
try {
scope.dispose();
} catch (e, stackTrace) {
ZenLogger.logError(
'Error disposing auto-dispose scope $scopeName', e, stackTrace);
}
}
}
// Clear all tracking
_persistentScopes.clear();
_autoDisposeScopes.clear();
_childScopes.clear();
_parentScopes.clear();
_activeAutoDisposeChildren.clear();
_explicitlyPersistentScopes.clear();
// Dispose root scope
if (_rootScope != null && !_rootScope!.isDisposed) {
try {
_rootScope!.dispose();
} catch (e, stackTrace) {
ZenLogger.logError('Error disposing root scope', e, stackTrace);
}
}
_rootScope = null;
if (ZenConfig.enableDebugLogs) {
ZenLogger.logInfo('✅ All scopes disposed and tracking cleared');
}
}