popRoute method

  1. @override
Future<bool> popRoute({
  1. Object? result,
  2. PopMode popMode = PopMode.Page,
})
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({
  Object? result,
  PopMode popMode = PopMode.Page,
}) async {
  //Returning false will cause the entire app to be popped.
  final wasPopup = await handlePopupRoutes(result: result);
  if (wasPopup) return true;
  final popped = await _pop(popMode);
  refresh();
  if (popped != null) {
    //emulate the old pop with result
    return true;
  }
  return false;
}