remove<T extends Object?> method

Future<void> remove<T extends Object?>({
  1. bool? isAnimated,
  2. T? result,
})

Implementation

Future<void> remove<T extends Object?>({bool? isAnimated, T? result}) {
  /// 1. if a result provided, will have pop animation
  if (isAnimated == true || result != null) {
    Completer completer = Completer();
    route.didPop(result);
    route.animation?.addStatusListener((AnimationStatus status) {
      if (status == AnimationStatus.dismissed) {
        _rawRemove(route);
        completer.complete();
        // remove this statusListener or not ? now i leave it alone ...
      }
    });
    return completer.future;
  }

  /// 2. just remove it without animation
  _rawRemove(route);
  return poppedCompleter.future;
}