Result<T> class Null safety

The result of a computation.

Capturing a result (either a returned value or a thrown error) means converting it into a Result - either a ValueResult or an ErrorResult.

This value can release itself by writing itself either to a EventSink or a Completer, or by becoming a Future.

A Future represents a potential result, one that might not have been computed yet, and a Result is always a completed and available result.



Result(T computation())
Creates a Result with the result of calling computation.
Result.error(Object error, [StackTrace? stackTrace])
Creates a Result holding an error.
Result.value(T value)
Creates a Result holding a value.


asError ErrorResult?
If this is an error result, returns itself.
asFuture Future<T>
A future that has been completed with this result as a value or an error.
asValue ValueResult<T>?
If this is a value result, returns itself.
hashCode int
The hash code for this object.
read-only, inherited
isError bool
Whether this result is an error result.
isValue bool
Whether this result is a value result.
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited


addTo(EventSink<T> sink) → void
Adds this result to an EventSink.
complete(Completer<T> completer) → void
Completes a completer with this result.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed.
toString() String
A string representation of this object.


operator ==(Object other) bool
The equality operator.

Static Methods

capture<T>(Future<T> future) Future<Result<T>>
Captures the result of a future into a Result future.
captureAll<T>(Iterable<FutureOr<T>> elements) Future<List<Result<T>>>
Captures each future in elements,
captureSink<T>(EventSink<Result<T>> sink) EventSink<T>
Captures the events of the returned sink into results on sink.
captureStream<T>(Stream<T> source) Stream<Result<T>>
Captures the results of a stream into a stream of Result values.
flatten<T>(Result<Result<T>> result) Result<T>
Converts a result of a result to a single result.
flattenAll<T>(Iterable<Result<T>> results) Result<List<T>>
Converts a sequence of results to a result of a list.
release<T>(Future<Result<T>> future) Future<T>
Releases the result of a captured future.
releaseSink<T>(EventSink<T> sink) EventSink<Result<T>>
Releases results added to the returned sink as data and errors on sink.
releaseStream<T>(Stream<Result<T>> source) Stream<T>
Releases a stream of result values into a stream of the results.


captureSinkTransformer → const StreamSinkTransformer<Object, Result<Object>>
A sink transformer that captures events into Results.
StreamSinkTransformer<Object, Result<Object>>.fromStreamTransformer(CaptureStreamTransformer<Object>())
captureStreamTransformer → const StreamTransformer<Object, Result<Object>>
A stream transformer that captures a stream of events into Results.
releaseSinkTransformer → const StreamSinkTransformer<Result<Object>, Object>
A sink transformer that releases result events.
StreamSinkTransformer<Result<Object>, Object>.fromStreamTransformer(ReleaseStreamTransformer<Object>())
releaseStreamTransformer → const StreamTransformer<Result<Object>, Object>
A stream transformer that releases a stream of result events.