问题背景
最初文件列表右下角的上传按钮功能比较单一,只支持上传文件,且新建文本文件的交互是:
- 仅弹出对话框让输入内容文件名;
- 创建完成后返回列表,不进入编辑器。
体验问题:
- 主操作入口不够集中,要上传/新建时需要在不同地方找入口;
- 新建文本后我通常期望“直接编辑内容”,而不是只看到一个空文件条目。
目标
- 文件页只保留一个“主操作” FAB,点击后底部弹出菜单,集中所有主要文件操作:
- 上传文件;
- 上传文件夹;
- 新建文件夹;
- 新建文本。
- 新建文本文件后直接进入编辑器,并处于编辑模式。
方案设计
FAB 与底部菜单
- 使用单一圆形 FAB(加号),统一入口。
- 点击 FAB 打开
showModalBottomSheet:- 每个选项对应现有的逻辑:上传文件、上传文件夹、新建文件夹、新建文本;
- 复用已有状态管理方法,避免重复实现。
新建文本文件流程
需求细化:
- 新建文件名建议以
.txt结尾; - 创建完成后立即进入文本编辑页;
- 保存时要刷新文件元信息(大小、更新时间等),列表里能立刻反映变化。
实现思路:
- 状态层
AppState.createTextFile:- 接收路径与文件名;
- 先在元数据中创建一个 size=0 的文本文件记录;
- 调用更新内容的 API 写入初始空内容或默认文本;
- 返回
FileMetadata?,供 UI 导航。
- UI 层(HomePage):
- 在 FAB 菜单中选择“新建文本”后:
- 弹出输入文件名对话框,默认值带
.txt后缀,并把光标放在前面方便改名; - 调用
createTextFile; - 创建成功后,跳转到文本编辑页。
- 弹出输入文件名对话框,默认值带
- 在 FAB 菜单中选择“新建文本”后:
- 文本编辑页:
- 打开时强制是编辑模式,而不是预览模式;
- 保存成功后,通过状态层刷新该文件的元信息(size、updatedAt 等),避免列表显示老数据。
收获
- 把一堆零散操作收敛到 FAB + BottomSheet,是移动端常见模式,能明显提升发现和使用效率。
- 新建资源后直接进入编辑,是更贴合使用心智的流程,可以作为类似场景的通用设计原则。