popRoute method

  1. @override
Future<bool> popRoute()
override

Called by the Router when the Router.backButtonDispatcher reports that the operating system is requesting that the current route be popped.

The method should return a boolean Future to indicate whether this delegate handles the request. Returning false will cause the entire app to be popped.

Consider using a SynchronousFuture if the result can be computed synchronously, so that the Router does not need to wait for the next microtask to schedule a build.

Implementation

@override
Future<bool> popRoute() async {
  if (Navigator.of(navigatorKey.currentContext!).canPop()) {
    Navigator.of(navigatorKey.currentContext!).pop();
    return Future.value(true);
  }
  if (canPop()) {
    _pages.removeLast();
    notify();
    return Future.value(true);
  }

  ///外部可仿照传入 exitStyleCallBack 定制推出样式
  return _exitStyleCallBack == null
      ? Future.value(false)
      : _exitStyleCallBack!.call(navigatorKey.currentContext!);
}