StreamControllerSafeExtensions<T> extension


StreamController Safety Extensions

Provides safe methods on StreamController to avoid common pitfalls such as adding events to a closed controller and swallowing errors.

Example:

final controller = StreamController<int>();
// Safely add an event:
controller.safeAdd(42);
// Safely close:
await controller.safeClose();
on

Methods

asBroadcast() StreamController<T>

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Converts this controller into a broadcast controller.
mergeStreams(List<Stream<T>> streams) Future<void>

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Merges events from multiple streams into this controller.
safeAdd(T event) bool

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Adds an event to this controller if it is not closed.
safeAddAll(Iterable<T> events, {Duration? throttleDuration}) Future<int>

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Adds all events from events to this controller.
safeAddError(Object error, [StackTrace? stackTrace]) bool

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Adds an error (with an optional stackTrace) to this controller if it is not closed.
safeAddFuture(Future<T> future, {void onError(Object error, StackTrace stackTrace)?}) Future<void>

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Adds the result of a future to this controller once it completes.
safeAddStream(Stream<T> sourceStream) Future<int>

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Listens to sourceStream and adds its events to this controller.
safeClose() Future<void>

Available on StreamController<T>, provided by the StreamControllerSafeExtensions extension

Closes this controller if it is still open.