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

Flutter(Get包):如何检测处理iOS侧滑返回手势并返回数据

解决iOS侧滑返回时通过GetX传递数据的问题

方法一:使用GetX自带的页面退出回调(推荐)

在EDIT_PROFILE页面的生命周期中注册退出监听,既能保留iOS侧滑手势,又能在返回时携带数据:

@override
void initState() {
  super.initState();
  // 注册侧滑/返回按钮的退出监听
  Get.addWillPopCallback(() async {
    // 传递需要返回的数据
    Get.back(result: {"userData": data});
    // 返回false阻止系统默认返回逻辑,避免重复返回
    return false;
  });
}

@override
void dispose() {
  // 页面销毁时移除监听,防止内存泄漏
  Get.removeWillPopCallback();
  super.dispose();
}

方法二:在路由配置中处理返回逻辑

定义Get路由时,为EDIT_PROFILE页面配置onPop回调,统一处理返回数据:

GetPage(
  name: Routes.EDIT_PROFILE,
  page: () => EditProfilePage(),
  popGesture: true, // 强制开启iOS侧滑手势
  onPop: () {
    // 获取页面内需要返回的数据(示例从控制器取)
    final userData = Get.find<EditProfileController>().updatedUserData;
    Get.back(result: {"userData": userData});
    return Future.value(true);
  },
)

方法三:修复WillPopScope的侧滑问题

如果坚持使用WillPopScope,需要调整返回逻辑,确保不丢失侧滑手势且能传递数据:

Scaffold(
  appBar: AppBar(
    title: const Text('编辑资料'),
    centerTitle: true,
  ),
  body: WillPopScope(
    onWillPop: () async {
      // 手动触发返回并携带数据
      Get.back(result: {"userData": data});
      // 返回false,避免系统默认返回覆盖自定义逻辑
      return false;
    },
    child: const Center(
      child: Text(
        '编辑资料页面',
        style: TextStyle(fontSize: 20),
      ),
    ),
  ),
);

注意:如果onWillPop返回true,会触发系统默认返回流程,导致自定义数据无法传递,必须返回false并手动调用Get.back。


内容的提问来源于stack exchange,提问作者Sajjad Javadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:35:01