launchWhenLifecycleEventDestroy<T> method

Future<T> launchWhenLifecycleEventDestroy<T>({
  1. bool runWithDelayed = false,
  2. Cancellable? cancellable,
  3. required FutureOr<T> block(
    1. Cancellable cancellable
    ),
})

Implementation

Future<T> launchWhenLifecycleEventDestroy<T>(
    {bool runWithDelayed = false,
    Cancellable? cancellable,
    required FutureOr<T> Function(Cancellable cancellable) block}) {
  Completer<T> completer = Completer.sync();
  addLifecycleObserver(LifecycleObserver.eventDestroy(() {
    if (!completer.isCompleted && cancellable?.isUnavailable != true) {
      completer.complete(block(cancellable ?? Cancellable()));
    }
  }));
  return completer.future;
}