You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GetX实现指定页面回退:页面5返回至页面2,页面2返回至页面1

解决方案

针对你的需求,有两种简洁的实现方式,以下是具体说明:

方式一:修改页面跳转逻辑,构建正确路由栈

这种方式会让路由栈天然形成 页面1 → 页面2 → 页面5 的结构,无需自定义返回逻辑,完全依赖GetX的默认返回行为:

在页面1跳转至页面5时,先将页面2加入路由栈,再跳转至页面5,代码示例:

// 页面1中触发跳转的代码
// 先添加页面2到路由栈(不显示页面2)
final page2Route = MaterialPageRoute(builder: (_) => Page2());
Get.rawRoute?.add(page2Route);
// 再调用你的goToScreen方法跳转页面5
goToScreen(Page5());

这样路由栈会变为 [页面1, 页面2, 页面5],点击返回按钮时,页面5会回到页面2,页面2回到页面1,完全符合需求。

方式二:自定义页面5的返回逻辑

如果不想修改原有跳转逻辑,直接在页面5中重写返回行为即可:

1. 自定义返回按钮点击事件

在页面5的返回按钮中,使用 Get.off() 替代默认的 Get.back():

IconButton(
  icon: Icon(Icons.arrow_back),
  onPressed: () {
    // 跳转到页面2,同时移除当前页面5的路由记录
    Get.off(() => Page2());
  },
)

2. 处理系统返回键(安卓)

为了让安卓系统的物理返回键也生效,用 WillPopScope 包裹页面5的布局:

@override
Widget build(BuildContext context) {
  return WillPopScope(
    onWillPop: () async {
      Get.off(() => Page2());
      return false; // 阻止默认的系统返回行为
    },
    child: Scaffold(
      appBar: AppBar(
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () {
            Get.off(() => Page2());
          },
        ),
      ),
      // 页面5的其他内容
    ),
  );
}

页面2无需修改,默认的 Get.back() 会直接回到页面1。

两种方式都能满足你的需求,方式一更贴合路由栈的天然逻辑,方式二更灵活,无需改动原有跳转流程,可根据你的实际场景选择。

内容的提问来源于stack exchange,提问作者Thu Nguyen Quang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:55:27