Provide Apis to store and manage RxDart subscriptions and provide methods to unsubscribe them all.

Prerequisites

The project has dependencies that require the Dart SDK 2.0

Contents

SubxList

Object that holds and manages a list of Subscriptions.

Usage

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();

API Reference

SubxMap

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();

API Reference

Use this package as a library

Depend on it

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.

Import it

Now in your Dart code, you can use:

import 'package:subx/subx.dart';

example/example.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();
  });
}
RxDart Subscriptions Management
1.60 GEEK