PublishSubject<T> class

Exactly like a normal broadcast StreamController with one exception: this class is both a Stream and Sink.

This Subject allows sending data, error and done events to the listener.

PublishSubject is, by default, a broadcast (aka hot) controller, in order to fulfill the Rx Subject contract. This means the Subject's stream can be listened to multiple times.

Example

final subject = PublishSubject<int>();

// observer1 will receive all data and done events
subject.stream.listen(observer1);
subject.add(1);
subject.add(2);

// observer2 will only receive 3 and done event
subject.stream.listen(observe2);
subject.add(3);
subject.close();
Inheritance
Available Extensions

Constructors

PublishSubject({void onListen(), void onCancel(), bool sync: false})
Constructs a PublishSubject, optionally pass handlers for onListen, onCancel and a flag to handle events sync. [...]
factory

Properties

done Future
A future which is completed when the stream controller is done sending events. [...]
read-only, inherited
first Future<T>
The first element of this stream. [...]
read-only, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
hasListener bool
Whether there is a subscriber on the Stream.
read-only, inherited
isBroadcast bool
Whether this stream is a broadcast stream.
read-only, inherited
isClosed bool
Whether the stream controller is closed for adding more events. [...]
read-only, inherited
isEmpty Future<bool>
Whether this stream contains any elements. [...]
read-only, inherited
isPaused bool
Whether the subscription would need to buffer events. [...]
read-only, inherited
last Future<T>
The last element of this stream. [...]
read-only, inherited
length Future<int>
The number of elements in this stream. [...]
read-only, inherited
onCancel ControllerCancelCallback
The callback which is called when the stream is canceled. [...]
read / write, inherited
onListen ControllerCallback
The callback which is called when the stream is listened to. [...]
read / write, inherited
onPause ControllerCallback
The callback which is called when the stream is paused. [...]
read / write, inherited
onResume ControllerCallback
The callback which is called when the stream is resumed. [...]
read / write, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
single Future<T>
The single element of this stream. [...]
read-only, inherited
sink StreamSink<T>
Returns a view of this object that only exposes the StreamSink interface.
read-only, inherited
stream Stream<T>
The stream that this controller is controlling.
read-only, inherited

Methods

add(T event) → void
Sends a data event. [...]
inherited
addError(Object error, [StackTrace stackTrace]) → void
Sends or enqueues an error event. [...]
inherited
addStream(Stream<T> source, {bool cancelOnError: true}) Future
Receives events from source and puts them into this controller's stream. [...]
inherited
any(bool test(T element)) Future<bool>
Checks whether test accepts any element provided by this stream. [...]
inherited
asBroadcastStream({void onListen(StreamSubscription<T> subscription), void onCancel(StreamSubscription<T> subscription)}) Stream<T>
Returns a multi-subscription stream that produces the same events as this. [...]
inherited
asyncExpand<E>(Stream<E> convert(T event)) Stream<E>
Transforms each element into a sequence of asynchronous events. [...]
inherited
asyncMap<E>(FutureOr<E> convert(T event)) Stream<E>
Creates a new stream with each data event of this stream asynchronously mapped to a new event. [...]
inherited
cast<R>() Stream<R>
Adapt this stream to be a Stream<R>. [...]
inherited
close() Future
Closes the stream. [...]
inherited
contains(Object needle) Future<bool>
Returns whether needle occurs in the elements provided by this stream. [...]
inherited
distinct([bool equals(T previous, T next)]) Stream<T>
Skips data events if they are equal to the previous data event. [...]
inherited
drain<E>([E futureValue]) Future<E>
Discards all data on this stream, but signals when it is done or an error occurred. [...]
inherited
elementAt(int index) Future<T>
Returns the value of the indexth data event of this stream. [...]
inherited
every(bool test(T element)) Future<bool>
Checks whether test accepts all elements provided by this stream. [...]
inherited
expand<S>(Iterable<S> convert(T element)) Stream<S>
Transforms each element of this stream into a sequence of elements. [...]
inherited
firstWhere(bool test(T element), {T orElse()}) Future<T>
Finds the first element of this stream matching test. [...]
inherited
fold<S>(S initialValue, S combine(S previous, T element)) Future<S>
Combines a sequence of values by repeatedly applying combine. [...]
inherited
forEach(void action(T element)) Future
Executes action on each element of this stream. [...]
inherited
handleError(Function onError, {bool test(dynamic error)}) Stream<T>
Creates a wrapper Stream that intercepts some errors from this stream. [...]
inherited
join([String separator = ""]) Future<String>
Combines the string representation of elements into a single string. [...]
inherited
lastWhere(bool test(T element), {T orElse()}) Future<T>
Finds the last element in this stream matching test. [...]
inherited
listen(void onData(T value), {Function onError, void onDone(), bool cancelOnError}) StreamSubscription<T>
Adds a subscription to this stream. [...]
inherited
map<S>(S convert(T event)) Stream<S>
Transforms each element of this stream into a new stream event. [...]
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
onAdd(T event) → void
An extension point for sub-classes. Perform any side-effect / state management you need to here, rather than overriding the add method directly.
inherited
onAddError(Object error, [StackTrace stackTrace]) → void
An extension point for sub-classes. Perform any side-effect / state management you need to here, rather than overriding the add method directly.
inherited
pipe(StreamConsumer<T> streamConsumer) Future
Pipes the events of this stream into streamConsumer. [...]
inherited
reduce(T combine(T previous, T element)) Future<T>
Combines a sequence of values by repeatedly applying combine. [...]
inherited
singleWhere(bool test(T element), {T orElse()}) Future<T>
Finds the single element in this stream matching test. [...]
inherited
skip(int count) Stream<T>
Skips the first count data events from this stream. [...]
inherited
skipWhile(bool test(T element)) Stream<T>
Skip data events from this stream while they are matched by test. [...]
inherited
take(int count) Stream<T>
Provides at most the first count data events of this stream. [...]
inherited
takeWhile(bool test(T element)) Stream<T>
Forwards data events while test is successful. [...]
inherited
timeout(Duration timeLimit, {void onTimeout(EventSink<T> sink)}) Stream<T>
Creates a new stream with the same events as this stream. [...]
inherited
toList() Future<List<T>>
Collects all elements of this stream in a List. [...]
inherited
toSet() Future<Set<T>>
Collects the data of this stream in a Set. [...]
inherited
toString() String
Returns a string representation of this object.
inherited
transform<S>(StreamTransformer<T, S> streamTransformer) Stream<S>
Applies streamTransformer to this stream. [...]
inherited
where(bool test(T event)) Stream<T>
Creates a new stream from this stream that discards some elements. [...]
inherited

Operators

operator ==(Object other) bool
The equality operator. [...]
inherited