toResultStream method

Stream<Result<T>> toResultStream()

Transforms a raw, risk-prone reactive Stream into an uninterrupted stream of Result safety contracts.

Intercepts valid data emissions as SuccessResult states and structural pipeline exceptions as FailureResult payloads, blocking asynchronous error leaks to the UI thread.

final Stream<Result<LocationData>> safeLocationStream = geolocationService
    .listenToCoordinates()
    .toResultStream();

Implementation

Stream<Result<T>> toResultStream() {
  return transform<Result<T>>(
    StreamTransformer<T, Result<T>>.fromHandlers(
      handleData: (T data, EventSink<Result<T>> sink) {
        sink.add(Result.success(data));
      },
      handleError:
          (Object error, StackTrace stackTrace, EventSink<Result<T>> sink) {
        // Encapsulate unhandled stream network/parsing anomalies safely
        sink.add(Result.failure(
          Failure(
            message: error.toString(),
            stackTrace: stackTrace,
          ),
        ));
      },
    ),
  );
}