dismiss<T extends Object?> method

Future<void> dismiss<T extends Object?>([
  1. T? result
])

Implementation

Future<void> dismiss<T extends Object?>([T? result]) async {
  if (_isDismiss) {
    return;
  }
  _isDismiss = true;

  if (isPopped) {
    assert(() {
      __shower_log__('❗️❗️❗️ $routeName dismissed ??? already popped by using the most primitive pop/remove ???');
      return true;
    }());
  } else {
    assert(() {
      __shower_log__('>>>>>>>>>>>>>> dismiss popping: $routeName');
      return true;
    }());
    isSyncDismiss ? _rawDismiss<T>(result) : Future.microtask(() => _rawDismiss<T>(result));
    if (NavigatorObserverEx.statesChangingShowers?[routeName] == null) {
      isPopped = true;
    }
    _invokeDismissCallbacks();
    await poppedCompleter.future;
    assert(() {
      __shower_log__('>>>>>>>>>>>>>> dismiss popped done: $routeName');
      return true;
    }());
  }
}