Completer class - dart:async library (original) (raw)
A way to produce Future objects and to complete them later with a value or error.
Most of the time, the simplest way to create a future is to just use one of the Future constructors to capture the result of a single asynchronous computation:
Future(() { doSomething(); return result; });
or, if the future represents the result of a sequence of asynchronous computations, they can be chained using Future.then or similar functions on Future:
Future doStuff(){
return someAsyncOperation().then((result) {
return someOtherAsyncOperation(result);
});
}
If you do need to create a Future from scratch — for example, when you're converting a callback-based API into a Future-based one — you can use a Completer as follows:
class AsyncOperation {
final Completer _completer = new Completer();
Future<T> doOperation() {
_startOperation();
return _completer.future; // Send future object back to client.
}
// Something calls this when the value is ready.
void _finishOperation(T result) {
_completer.complete(result);
}
// If something goes wrong, call this.
void _errorHappened(error) {
_completer.completeError(error);
}
}
Annotations
- @vmIsolateUnsendable
Constructors
Creates a new completer.
factory
Completes the future synchronously.
factory
Properties
The future that is completed by this completer.
no setter
The hash code for this object.
no setterinherited
Whether the future has been completed.
no setter
A representation of the runtime type of the object.
no setterinherited
Methods
complete([FutureOr<T>? value])→ void
Completes future with the supplied values.
completeError(Object error, [StackTrace? stackTrace])→ void
Complete future with an error.
noSuchMethod(Invocation invocation)→ dynamic
Invoked when a nonexistent method or property is accessed.
inherited
A string representation of this object.
inherited
Operators
operator ==(Object other)→ bool
The equality operator.
inherited