auto_dispose_guard 1.0.3
auto_dispose_guard: ^1.0.3 copied to clipboard
Safe automatic disposal for Flutter controllers, streams, timers, services, and custom resources.
1.0.3 #
New APIs #
BlocAutoDisposeMixin— dedicated mixin for Bloc, Cubit, and RiverpodStateNotifier. No flutter_bloc or riverpod dependency required. CalldisposeAutoDispose()from yourclose()/dispose()override and all registered resources are released safely.AutoDisposeChangeNotifier— abstract ChangeNotifier subclass that auto-disposes registered resources whendispose()is called. Drop-in for Provider models and RiverpodChangeNotifier-based notifiers.addDisposeListener(callback)onDisposeRegistry,AutoDisposeBag,AutoDisposeBagMixin,BlocAutoDisposeMixin, andAutoDisposeMixin— register a one-shot callback invoked after all resources are released. Useful for notifying parent objects, logging, or running teardown logic that depends on children being disposed first.isRegistered(resource)onAutoDisposeBag,AutoDisposeBagMixin, andAutoDisposeMixin— query whether a resource is currently tracked before registering or disposing it.disposeOf(resource)onAutoDisposeMixinandBlocAutoDisposeMixin— dispose a single resource immediately and remove it from tracking.unregister(resource)onAutoDisposeMixinandBlocAutoDisposeMixin— remove a resource from tracking without disposing it; use when taking back ownership of a resource's lifecycle.
Stability & Safety #
- All new methods are idempotent and fail-safe: calling
disposeAutoDispose()oraddDisposeListener()after disposal is guarded by a debug-mode assertion and is a no-op in release builds. addDisposeListenercallbacks execute after all resources are released and are themselves wrapped in try/catch so a listener error cannot suppress cleanup logging.
1.0.2 #
- Added
AutoDisposeBagfor plain Dart classes, repositories, blocs, services, and state-management controllers. - Added
AutoDisposeBagMixinso GetX controllers/services and Provider classes can useregister()outside widgetState. - Added
DisposeStateandisDisposedprobes to skip already disposed resources before teardown. - Added built-in disposed-state checks for
StreamControllerandTimer. - Improved registry stability for double-dispose scenarios while keeping disposal idempotent and fail-safe.
- Updated README with GetX, Provider, service, bag, scope, and disposed-guard examples.
- Updated example app to demonstrate controller/service style cleanup.
- Shortened
pubspec.yamldescription to satisfy pub.dev package-description scoring.
1.0.1 #
- Fix: updated repository and homepage URLs in pubspec.yaml.
1.0.0 #
- Initial release.
AutoDisposeMixin- zero-boilerplate State mixin; register resources inline withregister().AutoDisposeScope- InheritedWidget scope for shared cross-widget disposal.AutoDispose.of(context)- imperative registry accessor..autoDispose(context)extension - fluent inline registration.DisposeEngine- auto-detectsdispose/close/cancelwithout reflection.DisposeRegistry- O(1) identity map, LIFO disposal order, fail-safe error handling.Disposable,Closeable,Cancellablemarker interfaces for custom types.- Structured debug logging; zero overhead in release mode.