navigateToRootPage<T> function

dynamic navigateToRootPage<T>({
  1. required BuildContext context,
  2. bool isPop = true,
  3. String routeName = "/",
  4. Widget? widget,
  5. Object? arguments,
})

导航到根页面(支持Widget和命名路由) 提供更灵活的导航方式,支持直接传入Widget或使用命名路由

context 当前页面的BuildContext isPop 是否使用弹出方式(true)还是推送方式(false) routeName 目标路由名称,默认为根路由"/" widget 要导航到的Widget页面(优先级高于routeName) arguments 传递给目标页面的参数

返回Future,表示导航操作的完成状态

Implementation

navigateToRootPage<T>({
  required BuildContext context,
  bool isPop = true,
  String routeName = "/",
  Widget? widget,
  Object? arguments,
}) {
  if (isPop) {
    // 弹出到指定路由
    Navigator.popUntil(
      context,
      ModalRoute.withName(routeName),
    );
  } else {
    if (widget != null) {
      // 使用Widget直接导航并清除所有历史页面
      return Navigator.pushAndRemoveUntil(
        context,
        MaterialPageRoute<T>(
          builder: (context) => widget,
        ),
        (route) => false,
      );
    } else {
      // 使用命名路由导航并清除所有历史页面
      return Navigator.pushNamedAndRemoveUntil(
        context,
        routeName,
        (route) => false,
        arguments: arguments,
      );
    }
  }
}