listen method
Listens to changes in this reactive value.
Parameters:
onData: Callback for each new valueonError: Optional error callbackonDone: Optional completion callbackcancelOnError: Whether to cancel on errorimmediately: Whether to callonDatawith current value immediately
Returns: A StreamSubscription for cancellation
Example:
final counter = Signal(0);
final sub = counter.listen(
(value) => print('Counter: $value'),
immediately: true,
);
sub.cancel();
Implementation
StreamSubscription<T> listen(
void Function(T event)? onData, {
Function? onError,
void Function()? onDone,
bool? cancelOnError,
bool immediately = false,
}) {
assert(() {
if (this is ReadableNode) {
return !(this as ReadableNode).isDisposed;
}
return true;
}(), "$runtimeType is disposed");
final controller = JoltStreamHelper.getOrCreateStreamController(this);
if (immediately) {
Future.microtask(() => onData?.call(value));
}
return controller.stream.listen(onData,
onError: onError, onDone: onDone, cancelOnError: cancelOnError);
}