组件 · 导航与反馈
Menu
菜单:按钮或右键打开的一列操作。用于任务的更多操作、排序和显示选项、新建菜单。
调用方提供:items,每项是 { icon, label, shortcut, onSelect, danger, disabled, submenu };可勾选的项传 checked(单选组再加 radio: true);分组用 { heading },分隔线用 { separator: true }。label 是菜单的读屏名称,onClose 由 Esc 触发。
行为:上下方向键在可用项之间移动并循环,Home / End 到两端,Enter 或空格执行。打开时把焦点放在第一项(autoFocus),关闭后焦点回到触发按钮(由触发按钮负责)。菜单相对触发按钮定位,空间不够时翻到另一侧。
写法
- 菜单项以动词开头:「重命名」「移到项目」「删除任务」。危险操作放在最后,前面加分隔线,用危险色。
- 有快捷键就写出来,Mac 用 ⌘ ⌥ ⇧,Windows 和 Linux 用 Ctrl Alt Shift。
- 不超过 8 项;更多就分组,或者换成对话框。
Flutter:主题里已经设好 menuTheme 和 popupMenuTheme;用 MenuAnchor + BiMenuItem(icon:, label:, shortcut:, danger:, onPressed:)。