Simple library to manage objects needing to release its own resources.
final sink = StreamController();
final disposable = Disposable(() => sink.close());
disposable.dispose();
For more complex disposable object you can implement the Disposable
interface yourself.
class SomeObject implements Disposable {
@override
bool isDisposed = false;
@override
void dispose() {
isDisposed = true;
}
}
final disposables = [SomeObject(), SomeObject(), disposable];
final collection = DisposableCollection(disposables);
collection.dispose();
If you want to compose disposables into without mutating after creation consider using compose
.
final disposable = Disposable.compose(disposables);
disposable.dispose();