You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:15:33