StreamController class - dart:async library (original) (raw)

StreamController<T> class abstract interface

A controller with the stream it controls.

This controller allows sending data, error and done events on its stream.

This class can be used to create a simple stream that others can listen on, and to push events to that stream.

It's possible to check whether the stream is paused or not, and whether it has subscribers or not, as well as getting a callback when either of these change.

Example:

final streamController = StreamController(
  onPause: () => print('Paused'),
  onResume: () => print('Resumed'),
  onCancel: () => print('Cancelled'),
  onListen: () => print('Listens'),
);

streamController.stream.listen(
  (event) => print('Event: $event'),
  onDone: () => print('Done'),
  onError: (error) => print(error),
);

To check whether there is a subscriber on the stream, use hasListener.

var hasListener = streamController.hasListener; // true

To send data events to the stream, use add or addStream.

streamController.add(999);
final stream = Stream<int>.periodic(
    const Duration(milliseconds: 200), (count) => count * count).take(4);
await streamController.addStream(stream);

To send an error event to the stream, use addError or addStream.

streamController.addError(Exception('Issue 101'));
await streamController.addStream(Stream.error(Exception('Issue 404')));

To check whether the stream is closed, use isClosed.

var isClosed = streamController.isClosed; // false

To close the stream, use close.

await streamController.close();
isClosed = streamController.isClosed; // true

Implemented types

Implementers

Available extensions

Constructors

StreamController({void onListen()?, void onPause()?, void onResume()?, FutureOr<void> onCancel()?, bool sync = false})

A controller with a stream that supports only one single subscriber.

factory

StreamController.broadcast({void onListen()?, void onCancel()?, bool sync = false})

A controller where stream can be listened to more than once.

factory

Properties

doneFuture

A future which is completed when the stream controller is done sending events.

no setteroverride

hashCodeint

The hash code for this object.

no setterinherited

hasListenerbool

Whether there is a subscriber on the Stream.

no setter

isClosedbool

Whether the stream controller is closed for adding more events.

no setter

isPausedbool

Whether the subscription would need to buffer events.

no setter

onCancelFutureOr<void> Function()?

The callback which is called when the stream is canceled.

getter/setter pair

onListen ↔ void Function()?

The callback which is called when the stream is listened to.

getter/setter pair

onPause ↔ void Function()?

The callback which is called when the stream is paused.

getter/setter pair

onResume ↔ void Function()?

The callback which is called when the stream is resumed.

getter/setter pair

runtimeTypeType

A representation of the runtime type of the object.

no setterinherited

sinkStreamSink<T>

Returns a view of this object that only exposes the StreamSink interface.

no setter

streamStream<T>

The stream that this controller is controlling.

no setter

Methods

add(T event)→ void

Sends a data event.

override

addError(Object error, [StackTrace? stackTrace])→ void

Sends or enqueues an error event.

override

addStream(Stream<T> source, {bool? cancelOnError})→ Future

Receives events from source and puts them into this controller's stream.

override

close()→ Future

Closes the stream.

override

noSuchMethod(Invocation invocation)→ dynamic

Invoked when a nonexistent method or property is accessed.

inherited

rejectErrors()→ StreamSink<T>

Available on StreamSink<T>, provided by the StreamSinkExtensions extension

Returns a StreamSink that forwards to this but rejects errors.

toString()→ String

A string representation of this object.

inherited

transform<S>(StreamSinkTransformer<S, T> transformer)→ StreamSink<S>

Available on StreamSink<T>, provided by the StreamSinkExtensions extension

Transforms a StreamSink using transformer.

Operators

operator ==(Object other)→ bool

The equality operator.

inherited