Flutter删除缓存
Flutter 清除缓存
- 在flutter中如果使用了临时目录,会产生一定的缓存,如何清除cache文件夹下的缓存呢,下面提供一种思路供参考。在项目上的实际效果如下所示:
清除缓存需要的工作
- 获取临时目录
- 循环获取临时目录下所有的文件大小,计算出总缓存大小
- 循环删除临时目录下的文件
总体思路
想要获取到应用缓存,我们必须使用flutter官方提供的path_provider获取缓存文件夹,然后通过循环的方法获取缓存文件的大小并且删除。首先,我们先简单介绍一下path_provider中获取文件夹的方法。
getExternalStorageDirectory(); // 在iOS上,抛出异常,Android上是sd卡的根目录
getTemporaryDirectory(); //临时目录的返回值
getApplicationDocumentsDirectory(); //文档目录的地址
简单的了解path_provider后接下来就是获取临时目录了,整体思路如下所示:
Future<Null> loadCache() async {Directory tempDir = await getTemporaryDirectory();double value = await _getTotalSizeOfFilesInDir(tempDir);print('临时目录大小: ' + value.toString());//清除缓存delDir(tempDir)}
循环计算文件大小
传入根目录,用递归的方法计算出文件的大小
Future _getTotalSizeOfFilesInDir(final FileSystemEntity file) async {if (file is File) {int length = await file.length();return double.parse(length.toString());}if (file is Directory) {final List children = file.listSync();double total = 0;if (children != null)for (final FileSystemEntity child in children)total += await _getTotalSizeOfFilesInDir(child);return total;}return 0;
}
格式化缓存大小
用循环获取的文件大小为bit,现在要对此进行转化更人性化。
_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<Null> delDir(FileSystemEntity file) async {if (file is Directory) {final List<FileSystemEntity> children = file.listSync();for (final FileSystemEntity child in children) {await delDir(child);}}await file.delete();}
Flutter删除缓存相关推荐
- TP3.2的删除缓存与引入第三方库的问题(二)
基本每天都会遇到新的问题,不记录下来是在是有点亏.以下内容也是在做项目的时候碰到,然后百度搜索答案,记到记事本上的,在此分享给大家. 一.关于删除TP框架的缓存问题 TP的缓存不仅仅局限于runtim ...
- Flutter:删除所有已保存的shared_preferences首选项
dart - Flutter:删除所有已保存的shared_preferences首选项 想在用户点击注销时删除所有保存的shared_preferences首选项.有什么方法可以一次性完成而不删除一 ...
- 为什么是先更新数据库再删除缓存,而不是更新缓存?
一开始看很多人说更新数据库后删除缓存,然后有人说是更新缓存时需要遍历list或者hash查找导致慢,我!@#&((&(&^%&%&m&*&()& ...
- 为什么你的缓存更新策略是先更新数据库后删除缓存,讲讲其他的情况有什么问题?...
2019独角兽企业重金招聘Python工程师标准>>> 问题:怎么保持缓存与数据库一致? 要解答这个问题,我们首先来看不一致的几种情况.我将不一致分为三种情况 数据库有数据,缓存没有 ...
- 更新操作先删除缓存后更新DB,还是先更新DB后删除缓存问题???
以前自己在学校学习redis的时候还真没想到这么多,上班后看公司的项目代码,发现都是先更新DB,然后删除缓存,而且更新DB后不会立马将DB数据放入缓存,然而我以前不管是查询还是update都是操作完D ...
- ubuntu 释放缓存_如何通过删除缓存的程序包文件在Ubuntu Linux上释放大量磁盘空间...
ubuntu 释放缓存 If you're anything like me, you probably have Ubuntu running on your older computers, an ...
- 为什么是删除缓存,而不是更新缓存?
原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是数据库中直接取出来的值. 比如可能更新了某个表的一个字段,然后其对应的缓存,是需要查询另外两个表的数据并进行运算,才能计算出缓存最新的值的. 另外 ...
- docker 删除缓存
docker 删除缓存 前言 清除命令 前言 docker在长时间使用之后会存在很多cache 占用大量磁盘空间 清除命令 docker system prune --volumes WARNING! ...
- java redis 批量删除_在Spring中使用Redis Lua脚本批量删除缓存
背景 之前分享了一篇利用lua脚本批量删除redis的key的文章.现在项目中我打算使用spring的缓存,而Spring缓存以前我是用ehcache来做实现的.没发现什么问题..这次我换成redis ...
最新文章
- Visual Studio 2013 Update 2 and with Update 2
- Android中RatingBar的自定义效果
- 安卓html可以删除吗,如何删除android中的html标签
- 102. 二叉树的层序遍历 golang
- android客户端与服务器端的搭建,android客户端与服务器端的搭建.ppt
- 献给盲目追谁IT的管理者的话,转载:活着就是王道---- -一年
- 暴躁的一天从Ubuntu搜狗拼音开始
- 获取窗口 history数量_带你走进JavaScript世界系列——history 对象
- Dem与遥感影像制作三维效果简单教程
- [Acwing] 健康的荷斯坦奶牛 -二进制枚举
- 读书有益——》从你的全世界路过
- 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
- 微信在线答题小程序的应用场景有哪些
- 使用安全令牌保护 RTMP 流
- 【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法
- hpy计算机维护系统,HPY计算机维护系统2013(W8PE+03PE+DOS,ISO量产版)
- 全景丨0基础学习VR全景制作,平台篇第17章:热点功能-视频
- 解决React-Native reload hot reloading 后代码不更新问题
- MOVSB、MOVSW和MOVSD指令
- 如何做好企业IT运维工作?云计算运维的工作内容有哪些?