import 'dart:io';
import 'package:get/get.dart';
import 'package:oktoast/oktoast.dart';
import 'package:path_provider/path_provider.dart';
import 'package:toptongpin/app/utils/toast_util.dart';
class CacheUtil {
static dynamic loadCache() async {
try {
final _tempDir = await getTemporaryDirectory();
double value = await _getTotalSizeOfFilesInDir(_tempDir);
/*tempDir.list(followLinks: false,recursive: true).listen((file){
//打印每个缓存文件的路径
print(file.path);
});*/
print('临时目录大小: ' + value.toString());
return _renderSize(value);
} catch (err) {
print(err);
}
}
///递归方式删除目录
static Future<Null> delDir(FileSystemEntity file) async {
try {
if (file is Directory) {
final List<FileSystemEntity> children = file.listSync();
for (final FileSystemEntity child in children) {
await delDir(child);
}
}
await file.delete();
} catch (e) {
print(e);
}
}
static Future<double> _getTotalSizeOfFilesInDir(
final FileSystemEntity file) async {
try {
if (file is File) {
int length = await file.length();
return double.parse(length.toString());
}
if (file is Directory) {
final List<FileSystemEntity> children = file.listSync();
double total = 0;
if (children != null)
for (final FileSystemEntity child in children)
total += await _getTotalSizeOfFilesInDir(child);
return total;
}
return 0;
} catch (e) {
print(e);
return 0;
}
}
///格式化文件大小
static _renderSize(double value) {
List<String> unitArr = []
..add('B')
..add('K')
..add('M')
..add('G');
int index = 0;
while (value > 1024) {
index++;
value = value / 1024;
}
String size = value.toStringAsFixed(2);
return size + unitArr[index];
}
static Future clearCache() async {
//此处展示加载loading
try {
final _tempDir = await getTemporaryDirectory();
double value = await _getTotalSizeOfFilesInDir(_tempDir);
print("$value");
if (value.toInt() <= 0) {
ToastUtil.success('暂无缓存',position: ToastPosition.center);
Get.back();
} else if (value >= 0) {
Get.back();
ToastUtil.success('正在清理中···',position: ToastPosition.center);
Future.delayed(Duration(seconds: 2), () async {
//删除缓存目录
await delDir(_tempDir);
await loadCache();
ToastUtil.success('清理缓存成功',position: ToastPosition.center);
});
}
} catch (e) {
print(e);
ToastUtil.success('清除缓存失败');
} finally {}
}
}
flutter 清除缓存
最新推荐文章于 2025-07-09 17:25:24 发布
本文详细介绍了如何在Flutter应用中管理和清除本地缓存,包括Android平台上的实现步骤,帮助开发者优化应用存储空间并提高用户体验。
2321

被折叠的 条评论
为什么被折叠?



