How do you create a Stream in Dart?

Simple example

Here’s a complete working example:

import 'dart:async';
import 'dart:io';

class Application {
  Stream onExit;
  
  Application() {
    // Create a stream controller and assign its stream to "onExit".
    var controller = new StreamController();
    onExit = controller.stream;

    // Create some class that uses our stream.
    new UserOfStream(this);
    
    // Whenever we exit the application, notify everyone about it first.
    controller.add('we are shutting down!');
    exit(0);
  }
}

class UserOfStream {
  UserOfStream(app) {
    app.onExit.listen((String message) => print(message));
  }
}

main() => new Application();

You can also do cool things like check if there are subscribers with controller.hasListener or you can signal an error. Be sure to check the API documentation on StreamController.

You can use new StreamController.broadcast() for allowing multiple listeners.

For copy-pasters

Here’s a simple way to create a stream (great snippet for copy-pasters):

class Something {
  StreamController _onExitController = new StreamController.broadcast();
  Stream get onExit => _onExitController.stream;
}

Then the class can just access _onExitController to control the stream (to for example .add()).

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)