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 (state.currTab != null) {
    final res =
        await state.currentTabState?.navigatorKey.currentState?.maybePop();
    if (res == true) {
      _updateLocation();
      return true;
    }
  }
  log.info("Got pop route (but couldn't handle up) (delegating)");
  return super.popRoute().then((res) {
    if (res) {
      state.popRootRoute();
      _updateLocation();
    }
    return res;
  });
}