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

Flutter如何清除缓存文件路径?同名PDF下载失败求助

解决FlutterDownloader删除同名文件后重新下载失败的问题

问题核心

删除已下载的同名PDF文件后,调用FlutterDownloader.enqueue重新下载时触发java.lang.NullPointerException,下载任务标记为FAILED。

具体修复方案

  • 清理旧任务记录
    在发起新下载前,先清理对应任务的旧状态,避免残留的缓存引用导致异常:

    // 若保存过旧任务的taskId,直接取消并移除
    await FlutterDownloader.cancel(taskId: oldTaskId);
    await FlutterDownloader.remove(taskId: oldTaskId, shouldDeleteContent: false);
    
  • 确保下载路径权限与存在性
    删除文件后可能导致目录权限异常,重新确认并创建目录:

    final downloadDir = Directory('/storage/emulated/0/Download');
    if (!await downloadDir.exists()) {
      await downloadDir.create(recursive: true);
    }
    // 提前确认已申请读写权限(Android需处理动态权限)
    
  • 临时规避:使用唯一文件名
    给新下载的文件添加时间戳后缀,避免同名冲突:

    final uniqueSuffix = DateTime.now().millisecondsSinceEpoch.toString();
    final fileName = 'GOA-1924573-2180476_$uniqueSuffix.pdf';
    await FlutterDownloader.enqueue(
      url: yourDownloadUrl,
      savedDir: downloadDir.path,
      fileName: fileName,
      showNotification: true,
      openFileFromNotification: true,
    );
    
  • 清除内存旧引用
    若上述方法无效,重启应用后再尝试下载,可清除内存中残留的已删除文件对象引用。

内容的提问来源于stack exchange,提问作者Nandhini Ravichandran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:26:02