Dart 如何清理省道未来超时?

Dart 如何清理省道未来超时?,dart,Dart,我是Dart新手,目前处理的类如下所示: abstract class Resource { Future<void> close(); static Future<Resource> create() { // ... } } typedef dynamic _Close(); extension TimeoutClose<T> on Future<T> { Future<T> timeoutThenCl

我是Dart新手,目前处理的类如下所示:

abstract class Resource {
  Future<void> close();

  static Future<Resource> create() {
    // ...
  }
}
typedef dynamic _Close();

extension TimeoutClose<T> on Future<T> {
  Future<T> timeoutThenClose(Duration timeLimit, {FutureOr<T> onTimeout()?}) {
    var expired = false;
    return this.then((v) {
      if (expired) {
        final close = (v as dynamic).close;
        if (close is _Close) {
          close();
        }
      }

      return v;
    }).timeout(timeLimit, onTimeout: () {
      expired = true;
      return onTimeout != null
          ? onTimeout()
          : throw TimeoutException("Future not completed", timeLimit);
    });
  }
}