simple_streams 1.1.0

  • README.MD
  • CHANGELOG.MD
  • Installing
  • Versions
  • 56

Simple Streams

Normal broadcast streams can be a pain. You have to keep track of all stream subscriptions manually, or there can be memory leaks. simple_streams makes it easier by keeping track of those subscriptions for you. Let's look at the standard dart way of using a broadcast stream versus with simple_streams.


Standard Dart Method (Bad)

First you must create a new broadcast StreamController and keep track of it's stream.

StreamController exampleStreamController = new StreamController.broadcast();
Stream exampleStream = exampleStreamController.stream;

Next, whenever you add a listener to the stream, you must manually keep track of the subscription.

exampleHandler(var e) {
  print('test');
}
StreamSubscription sub = exampleStream.listen(exampleHandler);

Finally, you must cancel the subscription when you are done with the stream. If you do not, you will get a memory leak.

sub.cancel();

Everytime you call .listen on that stream, it will create another StreamSubscription. You must keep track of all StreamSubscriptions and cancel all of them, otherwise you will create a memory leak. Or you can use simple streams to make it easier ;)

Simple Streams Method

Instead of creating a stream controller (and probably a separate variable to hold its stream), just create a simple stream.

SimpleStream exampleStream = new SimpleStream();

Next, you can add listeners as many times as you want without keeping track of their subscriptions.

exampleHandler(var e) {
  print('test');
}
exampleStream.listen(exampleHandler);

Later, when you are done with the stream and it is going to be destroyed, call cancelAll() and it will cancel all of those subscriptions for you.

exampleStream.cancelAll();

SimpleStreamRouter

With version 1.1.0 of simple streams, a new class was introduced, SimpleStreamRouter. SimpleStreamRouter is just a wrapper that can be used with any pre-existing stream. For example, you may use it with a DivElement's onClick stream. It will do the same thing as a SimpleStream and keep track of the StreamSubscriptions for you.

SimpleStreamRouter router = new SimpleStreamRouter(querySelector('#example-element').onClick);

Listen to the router without keeping track of StreamSubscriptions. You will receive the same Event by listening to the router as you would to the element's stream itself.

exampleHandler(MouseEvent e) {
  print("do something");
}
router.listen(exampleHandler);

When you are done with the router, you can call cancelAll() to avoid memory leaks.

router.cancelAll()

Source code: https://github.com/Nick-Anderssohn/simple-streams

See the example in the test folder.

How to install: https://pub.dartlang.org/packages/simple_streams

Version 1.1.0:

  • Added SimpleStreamRouter
  • Switched to MIT LICENSE

Version 1.0.3:

  • Bug fix

Version 1.0.2:

  • Bug fix

Version 1.0.1:

  • Changed library name from simple_stream to simple_streams

Version 1.0.0:

  • Initial release.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  simple_streams: "^1.1.0"

2. Install it

You can install packages from the command line:

with pub:


$ pub get

with Flutter:


$ flutter packages get

Alternatively, your editor might support pub get or flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


      import 'package:simple_streams/simple_streams.dart';
  
Version Uploaded Documentation Archive
1.1.0 Jun 8, 2017 Go to the documentation of simple_streams 1.1.0 Download simple_streams 1.1.0 archive
1.0.3 Feb 22, 2017 Go to the documentation of simple_streams 1.0.3 Download simple_streams 1.0.3 archive
1.0.2 Feb 22, 2017 Go to the documentation of simple_streams 1.0.2 Download simple_streams 1.0.2 archive
1.0.1 Jan 19, 2017 Go to the documentation of simple_streams 1.0.1 Download simple_streams 1.0.1 archive
1.0.0 Jan 19, 2017 Go to the documentation of simple_streams 1.0.0 Download simple_streams 1.0.0 archive

Analysis

We analyzed this package on Jun 12, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.0.0-dev.60.0
  • pana: 0.11.3

Scores

Popularity:
Describes how popular the package is relative to other packages. [more]
12 / 100
Health:
Code health derived from static analysis. [more]
100 / 100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
99 / 100
Overall score:
Weighted score of the above. [more]
56
Learn more about scoring.

Platforms

Detected platforms: Flutter, web, other

No platform restriction found in primary library package:simple_streams/simple_streams.dart.

Suggestions

  • Package is getting outdated.

    The package was released 52 weeks ago.

  • Maintain an example.

    Create a short demo in the example/ directory to show how to use this package. Common file name patterns include: main.dart, example.dart or you could also use simple_streams.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK any
browser >=0.10.0+2 <0.11.0 0.10.0+3
js >=0.6.1 <0.7.0 0.6.1