subscribeTo method

FieldSubscription subscribeTo(
  1. Stream stream, {
  2. Function? onError,
  3. void onDone()?,
  4. bool cancelOnError = false,
  5. ValueConverter? converter,
})

Subscribes this field to given Stream. Controller will subscribe to input stream and will listen for changes and populate this changes into own stream. Via ValueConverter is possible to convert object from input Stream type to own stream value. StreamSubscription is automatically closed during dispose phase of FieldControl. Returns FieldSubscription for manual cancellation.

Implementation

FieldSubscription subscribeTo(Stream stream,
    {Function? onError,
    void onDone()?,
    bool cancelOnError = false,
    ValueConverter? converter}) {
  // ignore: cancel_subscriptions
  final subscription = stream.listen(
    (data) {
      if (converter != null) {
        final result = converter(data);

        if (result is Future) {
          result.then((value) => setValue(value)).catchError((err) {
            printDebug(err);
          });
        } else {
          setValue(result);
        }
      } else {
        setValue(data);
      }
    },
  );

  return _addSub(
    subscription,
    onError: onError,
    onDone: onDone,
    cancelOnError: cancelOnError,
  );
}