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
相关产品推荐
相关产品推荐

