当前位置: 代码迷 >> 综合 >> flutter 清理缓存功能
  详细解决方案

flutter 清理缓存功能

热度:0   发布时间:2023-12-28 13:28:29.0

1.

  ///加载缓存Future<Null> loadCache() async {try {_tempDir = await getTemporaryDirectory();double value = await _getTotalSizeOfFilesInDir(_tempDir);/*tempDir.list(followLinks: false,recursive: true).listen((file){//打印每个缓存文件的路径print(file.path);});*/print('临时目录大小: ' + value.toString());setState(() {_cacheSize = _renderSize(value);});} catch (err) {print(err);}}

2.

  /// 递归方式 计算文件的大小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;}}

3.

 ///递归方式删除目录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);}}

格式化文件大小

  ///格式化文件大小_renderSize(double value) {if (null == value) {return 0;}List<String> unitArr = List()..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];}
Future _clearCache() async {//此处展示加载loadingtry {_tempDir = await getTemporaryDirectory();double value = await _getTotalSizeOfFilesInDir(_tempDir);print("$value");if (value <= 0) {ToastUtil.showText(context, msg: '暂无缓存');} else if (value >= 0) {var hide = ToastUtil.showLoadingText_iOS(context, msg: "正在清理中...");Future.delayed(Duration(seconds: 2), () async {//删除缓存目录await delDir(_tempDir);await loadCache();ToastUtil.showSuccess(context, msg: '清理完成');hide();});}} catch (e) {print(e);Fluttertoast.showToast(msg: '清除缓存失败');} finally {}}