disposebag 1.0.0 copy "disposebag: ^1.0.0" to clipboard
disposebag: ^1.0.0 copied to clipboard

outdated

A package to help disposing Streams and closing Sinks.

example/disposebag_example.dart

import 'package:disposebag/disposebag.dart';
import 'dart:async';

main() async {
  final controller1 = StreamController<int>();
  final controller2 = StreamController<int>();
  final periodict = Stream.periodic(
    const Duration(milliseconds: 100),
    (int i) => i,
  );

  final bag = DisposeBag([
    controller1,
    controller2,
    periodict.listen(controller1.add),
    controller1.stream.listen((i) => print('Periodic $i')),
    controller2.stream.listen((i) => print('Controller2 $i')),
  ]);

  for (var i = 0; i < 100; i++) {
    controller2.add(i);
  }

  /// Delay to see output
  await Future.delayed(const Duration(seconds: 3));

  /// Dispose all stream subscriptions, close all stream controllers
  await bag.dispose();
  print("Bag disposed. It's all good");

  /// Controllers is closed
  print(controller1.isClosed);
  print(controller2.isClosed);

  /// Cannot add event to controllers
  try {
    controller1.add(1);
  } catch (e) {
    print(e);
  }
  try {
    controller2.add(3);
  } catch (e) {
    print(e);
  }

  /// Delay to see output
  await Future.delayed(const Duration(seconds: 2));
  print('Done');
}
19
likes
0
pub points
85%
popularity

Publisher

unverified uploader

A package to help disposing Streams and closing Sinks.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

meta

More

Packages that depend on disposebag