ub3lal 1 月之前
父節點
當前提交
43e7305446
共有 1 個文件被更改,包括 21 次插入15 次删除
  1. 21 15
      lib/src/bloc/cashed_image_bloc.dart

+ 21 - 15
lib/src/bloc/cashed_image_bloc.dart

@@ -24,26 +24,32 @@ class CashedImageBloc extends Bloc<CashedImageEvent, CashedImageState> {
       if (event.cached) {
         FileInfo? fileInfo;
         Uint8List? bytes;
+
+        final String ckey;
+
         if (event.cachkey != null) {
-          if (mapcahed[event.cachkey!] == null) {
-            fileInfo = await defaultCacheManager.getFileFromCache(
-              event.cachkey!,
-            );
-            if (fileInfo != null) {
-              mapcahed[event.cachkey!] = await fileInfo.file.readAsBytes();
-            }
-          }
-          bytes = mapcahed[event.cachkey!];
+          ckey = event.cachkey!;
         } else {
-          if (mapcahed[event.url] == null) {
-            fileInfo = await defaultCacheManager.getFileFromCache(event.url);
-            if (fileInfo != null) {
-              mapcahed[event.url] = await fileInfo.file.readAsBytes();
-            }
+          ckey = event.url;
+        }
+
+        int size = 0;
+        for (var v in mapcahed.values) {
+          size += v.length;
+        }
+        if (size > 20000) {
+          mapcahed.clear();
+        }
+
+        if (mapcahed[ckey] == null) {
+          fileInfo = await defaultCacheManager.getFileFromCache(ckey);
+          if (fileInfo != null) {
+            mapcahed[ckey] = await fileInfo.file.readAsBytes();
           }
-          bytes = mapcahed[event.url];
         }
 
+        bytes = mapcahed[ckey];
+
         if (bytes != null) {
           emit(CashedImageGetState(bytes: bytes));
           return;