stream_listener

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

stream listener

stream_listener #





Dart package the helps manage streams and subscriptions. Built in order to reduce the complexity of having to manually subscribe to streams and cancel subscriptions.
StreamListenerMixin #
A Dart mixin which allows any Dart Object to subscribe to one or more Streams.
class MyDartClass with StreamListenerMixin {
MyDartClass(Stream stream) {
// Subscribe to one or more streams
subscribe(stream);
}

@override
void onData(stream, data) {
// React to data emitted from stream(s)
}

@override
void onError(stream, error, stackTrace) {
// React to errors emitted from stream(s)
}

@override
bool cancelOnError(stream) => true; // Defaults to false

@override
void onDone(stream) {
// React to when one or more streams are closed
}
}
copied to clipboard
Usage #
import 'dart:async';
import 'package:stream_listener/stream_listener.dart';

class MyClass with StreamListenerMixin {
MyClass(Stream stream) {
subscribe(stream);
}

@override
void onData(Stream stream, dynamic data) {
print('onData $stream, $data');
}

@override
void onError(Stream stream, dynamic error, StackTrace stackTrace) {
print('onError $stream, $error, $stackTrace');
}

@override
void onDone(Stream stream) {
print('onDone $stream');
}
}

void main() async {
final controller = StreamController<int>();
final myClass = MyClass(controller.stream);

// onData Instance of '_ControllerStream<int>', 0
controller.add(0);
await tick();

// onData Instance of '_ControllerStream<int>', 1
controller.add(1);
await tick();

// onData Instance of '_ControllerStream<int>', 2
controller.add(2);
await tick();

// onData Instance of '_ControllerStream<int>', 3
controller.add(3);
await tick();

// onError Instance of '_ControllerStream<int>', oops!
controller.addError('oops!');
await tick();

// onDone Instance of '_ControllerStream<int>'
await controller.close();
await tick();

// Don't forget to cancel all StreamSubscriptions!
myClass.cancel();
}

Future<void> tick() => Future.delayed(const Duration(seconds: 1));
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files:

Customer Reviews

There are no reviews.