toSafeStream method
Transforms a Stream into a Stream.
Each data event from the original stream is wrapped in an Ok. Each error event is wrapped in an Err.
If cancelOnError
is true
, the stream will be closed upon the first
error.
Implementation
TResultStream<T> toSafeStream({required bool cancelOnError}) {
return transform(
StreamTransformer.fromHandlers(
handleData: (data, sink) {
sink.add(Ok(data));
},
handleError: (error, stackTrace, sink) {
if (error is Err) {
sink.add(error.transfErr());
} else {
sink.add(Err<T>(error));
}
if (cancelOnError) {
sink.close();
}
},
handleDone: (sink) {
sink.close();
},
),
);
}