一种生成 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。工厂
- Completer.sync()
- 同步完成 Future。工厂
属性
-
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 - 该对象的字符串表示。继承