https://github.com/hoc081098/disposebag
:zap: A package to help disposing StreamSubscriptions and closing Sinks. :cyclone:
https://github.com/hoc081098/disposebag
bloc-pattern bloc-pattern-rxdart disposebag disposing-streams flutter-bloc flutter-bloc-pattern flutter-bloc-pattern-rxdart flutter-bloc-patterns flutter-bloc-rxdart flutter-reactive flutter-rx flutter-rxdart rxdart rxdart-bloc rxdart-epic rxdart-flutter rxdart-helper stream-dispose
Last synced: 19 days ago
JSON representation
:zap: A package to help disposing StreamSubscriptions and closing Sinks. :cyclone:
- Host: GitHub
- URL: https://github.com/hoc081098/disposebag
- Owner: hoc081098
- License: mit
- Created: 2019-07-23T15:44:38.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-02-27T01:02:34.000Z (2 months ago)
- Last Synced: 2025-03-27T16:49:36.947Z (about 1 month ago)
- Topics: bloc-pattern, bloc-pattern-rxdart, disposebag, disposing-streams, flutter-bloc, flutter-bloc-pattern, flutter-bloc-pattern-rxdart, flutter-bloc-patterns, flutter-bloc-rxdart, flutter-reactive, flutter-rx, flutter-rxdart, rxdart, rxdart-bloc, rxdart-epic, rxdart-flutter, rxdart-helper, stream-dispose
- Language: Dart
- Homepage: https://pub.dev/packages/disposebag
- Size: 114 KB
- Stars: 12
- Watchers: 1
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
# disposebag
## Author: [Petrus Nguyễn Thái Học](https://github.com/hoc081098)
[](https://github.com/hoc081098/disposebag/actions/workflows/dart.yml)
[](https://app.codacy.com/manual/hoc081098/disposebag?utm_source=github.com&utm_medium=referral&utm_content=hoc081098/disposebag&utm_campaign=Badge_Grade_Dashboard)
[](https://pub.dev/packages/disposebag)
[](https://pub.dev/packages/disposebag)
[](https://codecov.io/gh/hoc081098/disposebag)
[](https://travis-ci.org/hoc081098/disposebag)
[](https://opensource.org/licenses/MIT)
[](https://pub.dev/packages/lints)A package helps to cancel StreamSubscriptions and close Sinks.
## Medium article
[How to easily cancel streams in Flutter](https://hoc081098.medium.com/how-to-easily-cancel-streams-in-dart-flutter-69cad1980267)
## Usage
A simple usage example:
```dart
import 'package:disposebag/disposebag.dart';
import 'dart:async';main() async {
final controllers = [];
final subscriptions = [];final bag = DisposeBag([...subscriptions, ...controllers]);
await Stream.value(3).listen(null).disposedBy(bag);
await StreamController.broadcast().disposedBy(bag);
await StreamController.broadcast(sync: true).disposedBy(bag);await bag.dispose();
print("Bag disposed. It's all good");
}
```### API
## 1. Add, addAll
```dart
Future DisposeBag.add(StreamSubscription);
Future DisposeBag.add(Sink);
Future DisposeBag.addAll(Iterable);
Future DisposeBag.addAll(Iterable);// extension methods
Future StreamSubscription.disposedBy(DisposeBag);
Future Sink.disposedBy(DisposeBag);
Future Iterable.disposedBy(DisposeBag);
Future Iterable.disposedBy(DisposeBag);
```## 2. Delete (removes but does not dispose)
```dart
bool delete(StreamSubscription);
bool delete(Sink);
```## 3. Remove (removes and disposes)
```dart
Future remove(StreamSubscription);
Future remove(Sink);
```## 4. Clear, dispose
```dart
Future clear();
Future dispose();
```## Features and bugs
Please file feature requests and bugs at the [issue tracker][tracker].
[tracker]: https://github.com/hoc081098/disposebag/issues/new