bind method
Binds an external stream to this reactive variable.
Implementation
void bind(Stream<T> externalStream) {
if (_binding?.boundStream != null &&
_binding?.boundStream == externalStream) {
return;
}
unbind();
_bindingState.boundStream = externalStream.map((event) {
// Route stream writes through middleware-aware setter.
_setValueInternal(event);
return event;
}).transform(
StreamTransformer<T, T>.fromHandlers(
handleError: (error, st, sink) {
_controller?.addError(error, st);
sink.addError(error, st);
},
),
).asBroadcastStream(
onListen: (sub) {
_bindingState.externalListeners++;
_checkActive();
},
onCancel: (subscription) {
if (_binding != null) {
_binding!.externalListeners--;
}
_checkActive();
subscription.cancel();
},
);
if (hasListener) {
_bindingState.activeBoundSubscription =
_binding!.boundStream!.listen((_) {});
}
}