组件 · 导航与反馈
Dialog
对话框:需要人停下来确认或补几项信息时用。确认危险操作、移动任务、重命名这类小表单都用它;内容多的编辑放到侧栏或单独页面。
调用方提供:title、正文(children)、actions({ label, variant, onClick },从次要到主要排列,主操作放最后)、onClose。危险确认传 tone: 'danger'(读屏按 alertdialog 朗读),主按钮用 variant: 'danger'。宽度默认 440,size: 'md' 为 560。
行为:打开时焦点移到对话框里的第一个可操作元素(右上角的关闭按钮),Tab 在框内循环,关闭后焦点回到打开它的按钮。Esc 和点击遮罩都会关闭;有未保存的输入时传 dismissible: false,只留按钮。
写法
- 标题是一个完整的问句或动作:「撤销 Claude 的这批改动?」「把任务移到另一个项目」,不写「提示」「确认」。
- 正文写后果和范围,不写「确定要这样做吗」。撤销、删除写清哪些东西会变、能不能恢复。
- 按钮写动作本身:「撤销 15 项改动」「移动」,不写「确定」「是」。取消在前,主操作在后。
窄屏:宽度不超过屏幕减去两边各 16px,按钮放不下时换行。
Flutter:主题里已经设好 dialogTheme;结构用 BiDialog(title:, content:, actions: [BiDialogAction(...)]),配合 showDialog 使用。