Flutter:使用file_picker在任意目录筛选指定扩展名文件的问题
解决file_picker切换目录后自定义扩展名筛选失效的问题
这是file_picker在部分平台(尤其是Android)的常见问题,原生文件选择器切换目录时会重置自定义筛选规则,以下是修复方案:
修改后的代码
Future<void> loadFiles(List<String> extensions) async { try { final platformFiles = await FilePicker.platform.pickFiles( type: FileType.custom, allowMultiple: true, allowedExtensions: extensions, // 强制使用自定义文件选择器,确保筛选规则全局生效 useCustomFilePicker: true, // 可选:不需要文件数据时关闭,提升性能 withData: false, ); if (platformFiles != null) { files.value = platformFiles.files; Get.to(() => const ConverterScreen()); } } catch (e) { print("[ERROR]${e.toString()}"); } }
关键改动说明
useCustomFilePicker: true:强制启用file_picker内置的文件选择器,替代系统原生选择器,这样筛选规则会在所有目录切换时保持生效,避免原生选择器的筛选重置问题。- 修复catch块错误:原代码未捕获异常变量
e,导致e.toString调用报错,现在修正为正确的异常捕获逻辑。 - 可选优化
withData: false:如果不需要立即读取文件内容,关闭该选项可减少内存占用,提升大文件选择时的性能。
额外注意事项
- 确保使用最新版本的file_picker包,旧版本可能存在此类兼容性bug,建议升级至最新稳定版。
- 若必须使用原生选择器,可尝试将
allowedExtensions中的扩展名统一改为小写,部分原生选择器对大小写敏感。
内容的提问来源于stack exchange,提问作者BOOM
相关产品推荐
相关产品推荐

