Provide Apis to store and manage RxDart subscriptions and provide methods to unsubscribe them all.
The project has dependencies that require the Dart SDK 2.0
Object that holds and manages a list of Subscriptions.
import 'package:rxdart/rxdart.dart';
import 'package:subx/subx.dart';
SubxList subxList = SubxList();
BehaviorSubject source = BehaviorSubject();
StreamSubscription subscription = source.listen((data) {...});
StreamSubscription subscription2 = source.listen((data) {...});
subxList.add(subscription);
subxList.add(subscription2);
...
subxList.unsubscribeAll();
Object that holds and manages Key-Subscription pairs.
import 'package:rxdart/rxdart.dart';
import 'package:subx/subx.dart';
SubxList subxList = SubxList();
BehaviorSubject source = BehaviorSubject();
StreamSubscription subscription = source.listen((data) {...});
StreamSubscription subscription2 = source.listen((data) {...});
subxList.set('key1', subscription);
subxList.set('key2', subscription2);
...
subxList.unsubscribeAll();
Run this command:
With Dart:
$ dart pub add subx
With Flutter:
$ flutter pub add subx
This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):
dependencies:
subx: ^1.0.4
Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.
Now in your Dart code, you can use:
import 'package:subx/subx.dart';
import 'package:subx/subx.dart';
void main() async {
final subxList = SubxList();
final source = Stream.periodic(Duration(milliseconds: 500), (counter) {
return ++counter;
});
final source2 = Stream.periodic(Duration(seconds: 1), (counter) {
return ++counter;
});
final subscription = source.listen(
(data) => print('Subscription1: $data'),
);
final subscription2 = source2.listen(
(data) => print('Subscription2: $data'),
);
subxList.add(subscription);
subxList.add(subscription2);
await Future.delayed(Duration(seconds: 2), () {
return subxList.cancelAll();
});
}