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

如何在Flutter中使用PopScope实现双击返回键退出功能?

实现双击返回键防误触退出应用

核心实现逻辑

通过记录上次点击返回键的时间戳,判断两次点击间隔是否在2秒内:

  • 首次点击:显示提示Toast,更新时间戳
  • 2秒内再次点击:执行退出操作
  • 超过2秒点击:重置时间戳,重新触发提示逻辑

Java 实现代码

在主Activity(或封装的BaseActivity)中添加以下代码:

// 记录上次点击返回键的时间
private long lastBackPressedTime = 0;
// 退出间隔阈值(2000毫秒=2秒)
private static final long EXIT_INTERVAL = 2000;

@Override
public void onBackPressed() {
    long currentTime = System.currentTimeMillis();
    // 判断两次点击间隔是否超过阈值
    if (currentTime - lastBackPressedTime > EXIT_INTERVAL) {
        Toast.makeText(this, "再次点击以退出", Toast.LENGTH_SHORT).show();
        lastBackPressedTime = currentTime;
    } else {
        // 关闭当前应用所有关联Activity
        finishAffinity();
        // 可选:强制终止进程(非必要场景不推荐)
        // System.exit(0);
    }
}

Kotlin 实现代码

private var lastBackPressedTime = 0L
private val EXIT_INTERVAL = 2000L

override fun onBackPressed() {
    val currentTime = System.currentTimeMillis()
    if (currentTime - lastBackPressedTime > EXIT_INTERVAL) {
        Toast.makeText(this, "再次点击以退出", Toast.LENGTH_SHORT).show()
        lastBackPressedTime = currentTime
    } else {
        finishAffinity()
        // 可选:强制终止进程
        // System.exit(0)
    }
}

优化建议

  • 代码复用:将此逻辑封装到BaseActivity中,所有业务Activity继承该基类,避免重复编写代码
  • 体验升级:替换默认Toast为自定义样式(如添加图标、调整显示位置),强化提示效果
  • 场景适配:如果应用存在多层Fragment栈,可在判断前先处理Fragment的返回逻辑,再执行应用退出判断

内容的提问来源于stack exchange,提问作者VISHNU PRABHAKARAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:30:55