From 2df1277fca0870a379baaf887a6899641f2d5499 Mon Sep 17 00:00:00 2001 From: My-Responsitories <107370289+My-Responsitories@users.noreply.github.com> Date: Fri, 5 Jun 2026 01:54:15 +0800 Subject: [PATCH] opt: cache clean --- lib/main.dart | 2 -- lib/pages/setting/models/extra_settings.dart | 13 ++-------- lib/utils/cache_manager.dart | 26 +++----------------- lib/utils/storage_key.dart | 1 - lib/utils/storage_pref.dart | 6 +---- pubspec.lock | 10 ++++---- pubspec.yaml | 7 +++++- 7 files changed, 18 insertions(+), 47 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index c3fe0d64f..05b649822 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -110,8 +110,6 @@ void main() async { ..lazyPut(DownloadService.new); HttpOverrides.global = _CustomHttpOverrides(); - CacheManager.autoClearCache(); - if (PlatformUtils.isMobile) { if (Platform.isAndroid) MaxScreenSize.init(); await Future.wait([ diff --git a/lib/pages/setting/models/extra_settings.dart b/lib/pages/setting/models/extra_settings.dart index 7bc7d54a5..e7e72cd64 100644 --- a/lib/pages/setting/models/extra_settings.dart +++ b/lib/pages/setting/models/extra_settings.dart @@ -595,19 +595,10 @@ List get extraSettings => [ onTap: _showProxyDialog, ), ), - const SwitchModel( - title: '自动清除缓存', - subtitle: '每次启动时清除缓存', - leading: Icon(Icons.auto_delete_outlined), - setKey: SettingBoxKey.autoClearCache, - defaultVal: false, - ), NormalModel( title: '最大缓存大小', - getSubtitle: () { - final num = Pref.maxCacheSize; - return '当前最大缓存大小: 「${num == 0 ? '无限' : CacheManager.formatSize(Pref.maxCacheSize)}」'; - }, + getSubtitle: () => + '当前最大缓存大小: 「${CacheManager.formatSize(Pref.maxCacheSize)}」', leading: const Icon(Icons.delete_outlined), onTap: _showCacheDialog, ), diff --git a/lib/utils/cache_manager.dart b/lib/utils/cache_manager.dart index 024e90c48..6e8c3027c 100644 --- a/lib/utils/cache_manager.dart +++ b/lib/utils/cache_manager.dart @@ -1,6 +1,5 @@ import 'dart:io' show Directory, File; -import 'package:PiliPlus/utils/extension/file_ext.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:cached_network_image_ce/cached_network_image.dart'; @@ -10,18 +9,19 @@ import 'package:path_provider/path_provider.dart'; abstract final class CacheManager { static late final DefaultCacheManager manager; - static Future ensureInitialized() => - DefaultCacheManager.init().then((i) => manager = i); + static Future ensureInitialized() => DefaultCacheManager.init( + maxNrOfCacheLength: Pref.maxCacheSize.toInt(), + ).then((i) => manager = i); // 获取缓存目录 @pragma('vm:notify-debugger-on-exception') static Future loadApplicationCache() async { try { - final Directory tempDirectory = await getTemporaryDirectory(); if (PlatformUtils.isDesktop) { return manager.getTotalLength(); } + final Directory tempDirectory = await getTemporaryDirectory(); if (tempDirectory.existsSync()) { return await getTotalSizeOfFilesInDir(tempDirectory); } @@ -81,22 +81,4 @@ abstract final class CacheManager { } } catch (_) {} } - - static Future autoClearCache() async { - // TODO: remove - Directory( - '${(await getTemporaryDirectory()).path}/libCachedImageData', - ).tryDel(recursive: true); - if (Pref.autoClearCache) { - await clearLibraryCache(); - } else { - final maxCacheSize = Pref.maxCacheSize; - if (maxCacheSize != 0) { - final currCache = await loadApplicationCache(); - if (currCache >= maxCacheSize) { - await clearLibraryCache(); - } - } - } - } } diff --git a/lib/utils/storage_key.dart b/lib/utils/storage_key.dart index 7b9eb1d74..c9f76e6f3 100644 --- a/lib/utils/storage_key.dart +++ b/lib/utils/storage_key.dart @@ -56,7 +56,6 @@ abstract final class SettingBoxKey { banWordForRecommend = 'banWordForRecommend', applyFilterToRelatedVideos = 'applyFilterToRelatedVideos', autoUpdate = 'autoUpdate', - autoClearCache = 'autoClearCache', maxCacheSize = 'maxCacheSize', defaultShowComment = 'defaultShowComment', replySortType = 'replySortType', diff --git a/lib/utils/storage_pref.dart b/lib/utils/storage_pref.dart index 4fc4c1b56..195e96dc1 100644 --- a/lib/utils/storage_pref.dart +++ b/lib/utils/storage_pref.dart @@ -1,5 +1,4 @@ import 'dart:io'; -import 'dart:math' show pow; import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart' show deviceTouchSlop; @@ -598,7 +597,7 @@ abstract final class Pref { _setting.get(SettingBoxKey.showPgcTimeline, defaultValue: true); static num get maxCacheSize => - _setting.get(SettingBoxKey.maxCacheSize) ?? pow(1024, 3); + _setting.get(SettingBoxKey.maxCacheSize) ?? 1 << 30; static bool get optTabletNav => _setting.get(SettingBoxKey.optTabletNav, defaultValue: true); @@ -717,9 +716,6 @@ abstract final class Pref { !Platform.isIOS && _setting.get(SettingBoxKey.dynamicColor, defaultValue: true); - static bool get autoClearCache => - _setting.get(SettingBoxKey.autoClearCache, defaultValue: false); - static bool get enableSystemProxy => _setting.get(SettingBoxKey.enableSystemProxy, defaultValue: false); diff --git a/pubspec.lock b/pubspec.lock index f16f4c5e7..92fd9bcea 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -207,17 +207,17 @@ packages: description: path: cached_network_image ref: develop - resolved-ref: "5b79ff9f53a9a55b57d4d6fc52eb529fdfdb30d7" - url: "https://github.com/bggRGjQaUbCoE/flutter_cached_network_image_ce.git" + resolved-ref: "6ad91e9bf71254803e222b7d254751576f2f6d7b" + url: "https://github.com/My-Responsitories/flutter_cached_network_image_ce.git" source: git version: "4.6.4" cached_network_image_platform_interface_ce: dependency: transitive description: path: cached_network_image_platform_interface - ref: "5b79ff9f53a9a55b57d4d6fc52eb529fdfdb30d7" - resolved-ref: "5b79ff9f53a9a55b57d4d6fc52eb529fdfdb30d7" - url: "https://github.com/bggRGjQaUbCoE/flutter_cached_network_image_ce.git" + ref: "6ad91e9bf71254803e222b7d254751576f2f6d7b" + resolved-ref: "6ad91e9bf71254803e222b7d254751576f2f6d7b" + url: "https://github.com/My-Responsitories/flutter_cached_network_image_ce.git" source: git version: "5.2.0" canvas_danmaku: diff --git a/pubspec.yaml b/pubspec.yaml index 72a02fc64..c8c3e8ae0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,7 +47,7 @@ dependencies: brotli: ^0.6.0 cached_network_image_ce: git: - url: https://github.com/bggRGjQaUbCoE/flutter_cached_network_image_ce.git + url: https://github.com/My-Responsitories/flutter_cached_network_image_ce.git path: cached_network_image ref: develop canvas_danmaku: @@ -224,6 +224,11 @@ dependency_overrides: url: https://github.com/bggRGjQaUbCoE/screen_brightness.git path: screen_brightness_android ref: main + cached_network_image_ce: + git: + url: https://github.com/My-Responsitories/flutter_cached_network_image_ce.git + path: cached_network_image + ref: develop dev_dependencies: flutter_test: