文件选择常用于上传、导入。下面以 file_picker 给出完整实践。
0. 依赖
dependencies:
file_picker: ^5.5.0
1. 选择单个文件
final result = await FilePicker.platform.pickFiles();
if (result == null) return;
final file = result.files.single;
2. 多选文件
final result = await FilePicker.platform.pickFiles(allowMultiple: true);
if (result == null) return;
final files = result.files;
3. 只选特定类型
final result = await FilePicker.platform.pickFiles(
type: FileType.custom,
allowedExtensions: ['pdf', 'docx'],
);
4. 获取路径与字节
final path = file.path; // 适合上传
final bytes = file.bytes; // 适合直接处理
5. 常见坑点
- iOS 路径为空:需使用
bytes - 权限未处理:Android 需读存储权限
6. 实践清单
- 单选/多选支持
- 类型限制
- 处理路径/字节差异