dispose method

  1. @override
Future<void> dispose()
override

Implementation

@override
Future<void> dispose() {
  return Future<void>.sync(() {
    if (this.disposed != true) {
      if (this._disposingFuture == null) {
        if (this._initializingFuture != null) {
          this._disposingFuture = this
              ._initializingFuture!
              .then((_) => this.onDispose())
              .whenComplete(() {
            this._disposingFuture = null;
            this._disposed = true;
          });
          return this._disposingFuture;
        } else {
          this._disposingFuture = Future<void>.value();
          final onDisposeResult = this.onDispose();
          if (onDisposeResult is Future<void>) {
            this._disposingFuture = this
                ._disposingFuture!
                .then((_) => onDisposeResult)
                .whenComplete(() {
              this._disposingFuture = null;
              this._disposed = true;
            });
          } else {
            this._disposingFuture = null;
            this._disposed = true;
          }
          return this._disposingFuture;
        }
      } else {
        return this._disposingFuture;
      }
    }
  });
}