多选模式下返回键行为调整

December 14, 2025
1 min read
By devshan

Table of Contents

This is a list of all the sections in this post. Click on any of them to jump to that section.

问题背景

文件列表支持长按进入多选模式,进行批量复制、移动、删除等操作。
最初实现时,系统返回键 / 手势返回的行为是:

  • 不区分是否处于多选模式;
  • 在非根目录时直接 navigateUp,在根目录时直接退出应用。

这与常见的操作习惯不符:

  • 多选时按返回,我更希望的是“先退出多选”,而不是直接离开当前目录或退出应用。

解决方案

HomePage 外层已经用 PopScope 统一接管了系统返回事件,只需要在这里增加一层多选判断:

  1. 如果当前处于多选模式:
    • _selectionMode 置为 false;
    • 清空 _selectedIds
    • 消耗这次返回事件,不再继续向上。
  2. 如果不在多选模式:
    • 按原有逻辑处理:
      • 根目录:退出应用;
      • 非根目录:navigateUp 返回上一级。

这样,无论是 Android 返回键还是系统手势返回,行为都与顶部 AppBar 左上角的“关闭多选”按钮保持一致。

收获

  • 多选模式本质上是一种“临时状态”,返回键优先解除这种状态是很多应用的通用约定(如相册、文件管理器)。
  • 把所有返回逻辑汇总到 PopScope 里统一处理,可以避免:
    • 某些路径只在按钮上处理、返回键却走了另一套逻辑;
    • 导致难以复现的“有时退出多选、有时直接离开页面”的不一致行为。