Baseflow / Baseflow/flutter_cache_manager

Error when used with cached_network_image by setting up the cacheManager

未关闭
#410 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Dart
星标
809
派生
510
平均合并
6 分钟
30 天内合并 PR
1

描述

## 🐛 Bug Report

I am experiencing an issue while using the `flutter_cache_manager` package along with the `cached_network_image` package in my Flutter project. I have set the `cacheManager` property and set the stalePeriod to 2 hours for my cache configuration. When I run my project in development mode after 1 or 2 days, an error occurs which stops the app process. The error message will be in screenshots. But the ending is: "OS Error: No such file or directory, errno = 2".

It seems like the app is trying to delete a non-existing cache file.

### Expected behavior
The app should run without any issues, and the cache should be managed appropriately.

### Actual behavior
The app "crashes" (in development mode) with the error message "OS Error: No such file or directory, errno = 2".

### Reproduction steps
1. Set up a project using the `cached_network_image` and `flutter_cache_manager` packages.
2. Configure the `stalePeriod` to be short (my case was 2 hours).
3. Run the project in development mode.
4. Close the app.
5. Wait for more than the `statePeriod`. In my case around 1 or 2 days.
6. Run the project again in development mode.

### Configuration
Flutter version: It was `3.5.x` or `3.6.x`. Now I use `3.7.11`
`cached_network_image` package version: `3.2.3`
`flutter_cache_manager `package version: `3.3.0`
Device/Emulator: Android emulator on Windows & iOS emulator on Mac
OS: Windows 11 & MacOS

### Additional Context
Here is the code snippet where I configure the cache manager and use the CachedNetworkImage widget:

```
Widget _buildPhoto(bool useDarkMode) {
return CachedNetworkImage(
imageUrl: photoUrl,
height: height,
alignment: const Alignment(-1.0, -1.0),
cacheManager: CacheManager(
Config(
'photoCache',
stalePeriod: const Duration(hours: 2),
),
),
fadeInDuration: Duration.zero,
fadeOutDuration: Duration.zero,
placeholder: (context, url) => Container(
color: useDarkMode ? DarkColors.lightColor : LightColors.lightColor,
),
errorWidget: (
BuildContext context,
String url,
dynamic error,
) {
return Container(
width: double.infinity,
height: height,
color: useDarkMode ? DarkColors.lightColor : LightColors.lightColor,
);
},
);
}
}
```

**Platform:**
- [x] :iphone: iOS

![image](https://user-images.githubusercontent.com/22119831/233999619-b51c9fb1-6469-4c2d-a062-2cd918157a19.png)
![image](https://user-images.githubusercontent.com/22119831/233999698-81e57248-f9b7-4f21-8194-ce3228c0f246.png)
![image](https://user-images.githubusercontent.com/22119831/233999746-f119770b-b0f5-41a9-979c-943f502afa53.png)

贡献指南

打开贡献指南

调研方向

使用配置了两小时 stalePeriod 的 CacheManager,通过 cached_network_image 3.2.3 和 flutter_cache_manager 3.3.0 重现该问题,然后捕获完整的错误和堆栈跟踪。跟踪在 Android 和 iOS 上报告“No such file or directory”的缓存清理操作;当重现的场景在没有未处理错误的情况下完成时,即视为完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
dart, flutter
领域
mobile-dev
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。