一种产生Future对象并在以后通过值或错误来完成它们的方法。
大多数情况下,创建Future最简单的方法是使用Future构造函数之一来捕获单一异步计算的结果
Future(() { doSomething(); return result; });
或者,如果Future代表一系列异步计算的结果,可以使用Future.then或在Future上类似的功能进行链式调用
Future doStuff(){
return someAsyncOperation().then((result) {
return someOtherAsyncOperation(result);
});
}
如果您确实需要从头开始创建Future - 例如,当您正在将基于回调的API转换为基于Future的API时 - 您可以使用Completer如下所示
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);
}
}
- 注解
-
- @vmIsolateUnsendable
构造函数
- Completer()
- 创建一个新的Completer。factory
- Completer.sync()
- 同步完成Future。factory
属性
-
future → Future<
T> - 此Completer完成的Future。没有设置器
- hashCode → int
- 此对象的哈希码。没有设置器继承
- isCompleted → bool
- future是否已完成。没有设置器
- runtimeType → Type
- 对象运行时类型的表示。没有设置器继承
方法
-
complete(
[FutureOr<T>? value]) → void - 使用提供的值完成future。
-
completeError(
Object error, [StackTrace? stackTrace]) → void - 用错误完成future。
-
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时调用。继承的
-
toString(
) → String - 此对象的字符串表示。继承的
操作符
-
operator ==(
Object other) → bool - 相等操作符。继承的