From 48b7ca49450b767901f390e68f5405c658c8dd7b Mon Sep 17 00:00:00 2001 From: My-Responsitories <107370289+My-Responsitories@users.noreply.github.com> Date: Wed, 3 Jun 2026 11:59:11 +0000 Subject: [PATCH] fix: remove hive file (#2276) --- .../widgets/image/cached_network_svg_image.dart | 9 +++------ .../common/publish/common_rich_text_pub_page.dart | 6 ++++-- lib/pages/member/view.dart | 4 ++-- lib/plugin/pl_player/view/view.dart | 2 +- lib/plugin/pl_player/view/widgets.dart | 3 +-- lib/services/download/download_service.dart | 4 ++-- lib/utils/cache_manager.dart | 6 ++++-- lib/utils/image_utils.dart | 12 ++++-------- 8 files changed, 21 insertions(+), 25 deletions(-) diff --git a/lib/common/widgets/image/cached_network_svg_image.dart b/lib/common/widgets/image/cached_network_svg_image.dart index 6fa93fb33..f1d648e47 100644 --- a/lib/common/widgets/image/cached_network_svg_image.dart +++ b/lib/common/widgets/image/cached_network_svg_image.dart @@ -2,7 +2,7 @@ import 'dart:developer' show log; -import 'package:cached_network_image_ce/cached_network_image.dart'; +import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; @@ -27,9 +27,7 @@ class CachedNetworkSVGImage extends StatefulWidget { this._theme = const SvgTheme(), this._colorFilter, this._placeholderBuilder, - BaseCacheManager? cacheManager, - }) : _cacheManager = cacheManager ?? DefaultCacheManager.instance!, - super(key: key ?? ValueKey(_cacheKey ?? _url)); + }) : super(key: key ?? ValueKey(_cacheKey ?? _url)); final String _url; final String? _cacheKey; @@ -47,7 +45,6 @@ class CachedNetworkSVGImage extends StatefulWidget { final SvgTheme _theme; final ColorFilter? _colorFilter; final WidgetBuilder? _placeholderBuilder; - final BaseCacheManager _cacheManager; @override State createState() => _CachedNetworkSVGImageState(); @@ -84,7 +81,7 @@ class _CachedNetworkSVGImageState extends State { Future _loadImage() async { try { - final file = await widget._cacheManager.getSingleFile( + final file = await CacheManager.manager.getSingleFile( widget._url, key: _cacheKey, headers: widget._headers ?? const {}, diff --git a/lib/pages/common/publish/common_rich_text_pub_page.dart b/lib/pages/common/publish/common_rich_text_pub_page.dart index 63b7cf33a..89b5ff0eb 100644 --- a/lib/pages/common/publish/common_rich_text_pub_page.dart +++ b/lib/pages/common/publish/common_rich_text_pub_page.dart @@ -13,13 +13,15 @@ import 'package:PiliPlus/models_new/emote/emote.dart' as e; import 'package:PiliPlus/models_new/live/live_emote/emoticon.dart'; import 'package:PiliPlus/pages/common/publish/common_publish_page.dart'; import 'package:PiliPlus/pages/dynamics_mention/view.dart'; +import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/extension/file_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:cached_network_image_ce/cached_network_image.dart'; +import 'package:cached_network_image_ce/cached_network_image.dart' + hide CacheManager; import 'package:dio/dio.dart' show CancelToken; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/foundation.dart' show kDebugMode; @@ -188,7 +190,7 @@ abstract class CommonRichTextPubPageState path = e.path; case OpusPicModel e: SmartDialog.showLoading(); - path = (await DefaultCacheManager.instance!.getSingleFile( + path = (await CacheManager.manager.getSingleFile( e.url.http2https, )).path; await SmartDialog.dismiss(); diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index b50d488c6..38283096c 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -34,6 +34,7 @@ import 'package:PiliPlus/pages/member_video_web/archive/view.dart'; import 'package:PiliPlus/pages/member_video_web/season_series/view.dart'; import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/android/android_helper.dart'; +import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; @@ -41,7 +42,6 @@ import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:cached_network_image_ce/cached_network_image.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -701,7 +701,7 @@ class _MemberPageState extends State { Future _createShortcutAndroid() async { try { SmartDialog.showLoading(); - final file = (await DefaultCacheManager.instance!.getSingleFile( + final file = (await CacheManager.manager.getSingleFile( '${_userController.userAvatar!}@200w_200h.webp'.http2https, )); SmartDialog.dismiss(); diff --git a/lib/plugin/pl_player/view/view.dart b/lib/plugin/pl_player/view/view.dart index 4a6a9de87..25e7c3c38 100644 --- a/lib/plugin/pl_player/view/view.dart +++ b/lib/plugin/pl_player/view/view.dart @@ -41,6 +41,7 @@ import 'package:PiliPlus/plugin/pl_player/widgets/bottom_control.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/common_btn.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/forward_seek.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/play_pause_btn.dart'; +import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/connectivity_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; @@ -51,7 +52,6 @@ import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:cached_network_image_ce/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/foundation.dart' show clampDouble, kDebugMode; import 'package:flutter/gestures.dart'; diff --git a/lib/plugin/pl_player/view/widgets.dart b/lib/plugin/pl_player/view/widgets.dart index 0701178d4..c3d2d7c83 100644 --- a/lib/plugin/pl_player/view/widgets.dart +++ b/lib/plugin/pl_player/view/widgets.dart @@ -102,10 +102,9 @@ class VideoShotImage extends StatefulWidget { } Future _getImg(String url) async { - final cacheManager = DefaultCacheManager.instance!; final cacheKey = Utils.getFileName(url, fileExt: false); try { - final fileInfo = await cacheManager.getSingleFile( + final fileInfo = await CacheManager.manager.getSingleFile( ImageUtils.safeThumbnailUrl(url), key: cacheKey, headers: Constants.baseHeaders, diff --git a/lib/services/download/download_service.dart b/lib/services/download/download_service.dart index 4e6d6b627..97f13654e 100644 --- a/lib/services/download/download_service.dart +++ b/lib/services/download/download_service.dart @@ -15,11 +15,11 @@ import 'package:PiliPlus/models_new/video/video_detail/episode.dart' as ugc; import 'package:PiliPlus/models_new/video/video_detail/page.dart'; import 'package:PiliPlus/pages/danmaku/controller.dart'; import 'package:PiliPlus/services/download/download_manager.dart'; +import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/extension/file_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; -import 'package:cached_network_image_ce/cached_network_image.dart'; import 'package:flutter/foundation.dart' show kDebugMode, debugPrint, VoidCallback; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -350,7 +350,7 @@ class DownloadService extends GetxService { if (File(filePath).existsSync()) { return true; } - final file = (await DefaultCacheManager.instance!.getFileFromCache( + final file = (await CacheManager.manager.getFileFromCache( entry.cover, ))?.file; if (file != null) { diff --git a/lib/utils/cache_manager.dart b/lib/utils/cache_manager.dart index 008eb7251..69a31318a 100644 --- a/lib/utils/cache_manager.dart +++ b/lib/utils/cache_manager.dart @@ -60,8 +60,10 @@ abstract final class CacheManager { final tempDirectory = await getTemporaryDirectory(); if (tempDirectory.existsSync()) { - final children = tempDirectory.list(recursive: false); - await for (final file in children) { + await for (final file in tempDirectory.list(recursive: false)) { + if (file is Directory && path.equals(file.path, manager.cacheDir)) { + continue; + } await file.delete(recursive: true); } } diff --git a/lib/utils/image_utils.dart b/lib/utils/image_utils.dart index 8c8e6fca3..6494a0618 100644 --- a/lib/utils/image_utils.dart +++ b/lib/utils/image_utils.dart @@ -5,6 +5,7 @@ import 'dart:typed_data' show Uint8List; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/http/init.dart'; +import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/device_utils.dart'; import 'package:PiliPlus/utils/extension/file_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; @@ -14,7 +15,6 @@ import 'package:PiliPlus/utils/permission_handler.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/share_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:cached_network_image_ce/cached_network_image.dart'; import 'package:dio/dio.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; @@ -35,9 +35,7 @@ abstract final class ImageUtils { static Future onShareImg(String url) async { try { SmartDialog.showLoading(); - final res = await DefaultCacheManager.instance!.getSingleFile( - url.http2https, - ); + final res = await CacheManager.manager.getSingleFile(url.http2https); SmartDialog.dismiss(); await SharePlus.instance.share( ShareParams( @@ -108,7 +106,7 @@ abstract final class ImageUtils { if (res.statusCode != 200) throw '${res.statusCode}'; if (Platform.isIOS) { - final imageFile = await DefaultCacheManager.instance!.getSingleFile( + final imageFile = await CacheManager.manager.getSingleFile( url.http2https, ); SmartDialog.showLoading(msg: '正在保存'); @@ -157,9 +155,7 @@ abstract final class ImageUtils { try { final futures = imgList.map((url) async { final name = Utils.getFileName(url); - final file = await DefaultCacheManager.instance!.getSingleFile( - url.http2https, - ); + final file = await CacheManager.manager.getSingleFile(url.http2https); return (filePath: file.path, name: name, statusCode: 200); }); final result = await Future.wait(futures, eagerError: true);