didPop method

  1. @override
void didPop(
  1. Route route,
  2. Route? previousRoute
)
override

页面退出了(手势返回也会走这个方法) route 当前操作页面 previousRoute 操作页面的上一个页面

Implementation

@override
void didPop(Route route, Route? previousRoute) {
  super.didPop(route, previousRoute);
  routerCount -= 1;
  debugPrint(
      ' 【didPop】${route.settings.name} 【didPop】');
  if (route is PopupRoute) {
    /// dialog出栈
    DNavigatorManager.removeFlutterNode(DStackConstant.flutterDialog,
        identifier: DNavigatorManager.identifierWithRoute(route));
  } else {
    if (gesturingRouteName != null &&
        gesturingRouteName == route.settings.name) {
      // 由手势导致的pop事件
      DNavigatorManager.popWithGesture(route);
    } else if (gesturingRouteName != null &&
        gesturingRouteName == DStackConstant.nativeDidPopGesture) {
      // native手势引起的didPop,native侧已经删除节点,flutter侧不再removeFlutterNode
      DStackNavigatorObserver.instance!.setGesturingRouteName(null);
    } else {
      if (route.settings.name != null) {
        DNavigatorManager.removeFlutterNode(route.settings.name,
            identifier: DNavigatorManager.identifierWithRoute(route));
      }
    }
  }
}