pushNamedAndRemoveUntil<T extends Object?> method

  1. @override
Future<T?> pushNamedAndRemoveUntil<T extends Object?>(
  1. String routeName,
  2. String untilRouteName, {
  3. PageType pageType = PageType.flutter,
  4. bool isOpaque = true,
  5. bool animated = true,
  6. Map<String, dynamic>? arguments,
})
override

push 到指定页面,同时会清除从页面untilRouteName页面到指定routeName链路上的所有页面

@param routeName 要跳转的页面 @param pageType PageType页面类型,默认PageType.flutter @param isOpaque 是否不透明 默认-true 不透明 @param animated 是否开启动画,默认开启 @param untilRouteName 移除截止页面,如果untilRouteName不存在会直接push @return T 泛型,用于指定返回类型

Implementation

@override
Future<T?> pushNamedAndRemoveUntil<T extends Object?>(
  String routeName,
  String untilRouteName, {
  PageType pageType = PageType.flutter,
  bool isOpaque = true,
  bool animated = true,
  Map<String, dynamic>? arguments,
}) async {
  dynamic result;
  if (navigatorObserver.routeExists(untilRouteName) && rootContext.mounted) {
    result = await Navigator.of(rootContext).pushNamedAndRemoveUntil(
      routeName,
      ModalRoute.withName(untilRouteName),
      arguments: arguments,
    );
  } else {
    result = await Navigator.of(rootContext).pushNamed(
      routeName,
      arguments: arguments,
    );
  }
  if (result is! T?) {
    throw TypeError();
  }
  return result;
}