cache_manager.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import 'dart:convert' show json;
  2. import 'dart:convert';
  3. import 'dart:io';
  4. import 'package:image/image.dart' as img;
  5. import 'package:path/path.dart' as path;
  6. import 'package:path_provider/path_provider.dart';
  7. ///获取维保路径
  8. localPath() async {
  9. try {
  10. var appDocDir = await getApplicationDocumentsDirectory();
  11. Directory dir = Directory(appDocDir.path + "/maintenance");
  12. if (!dir.existsSync()) {
  13. dir.createSync();
  14. }
  15. print("缓存路径:${dir.path}");
  16. return dir.path;
  17. } catch (err) {
  18. print(err);
  19. }
  20. }
  21. ///json文件
  22. localFile(path, name) async {
  23. return new File('$path/$name.json');
  24. }
  25. /// 读取 json 数据
  26. Future<Map<String, dynamic>>readJSON(name) async {
  27. try {
  28. final file = await localFile(await localPath(), name);
  29. String str = await file.readAsString();
  30. return json.decode(str);
  31. } catch (err) {
  32. print(err);
  33. }
  34. }
  35. /// 写入 json 数据
  36. Future<bool> writeJSON(name, obj) async {
  37. try {
  38. final file = await localFile(await localPath(), name);
  39. await file.writeAsString(json.encode(obj));
  40. return true;
  41. // return file.writeAsString(json.encode(obj));
  42. } catch (err) {
  43. return false;
  44. }
  45. }
  46. ///删除名为name的json文件
  47. deleteJSON(name) async {
  48. try {
  49. final file = await localFile(await localPath(), name);
  50. return file.deleteSync();
  51. } catch (err) {
  52. print(err);
  53. }
  54. }
  55. ///清除所有json文件
  56. clearJSON()async {
  57. try {
  58. Directory path = Directory(await localPath());
  59. List files = path.listSync();
  60. for(var i=0;i<files.length;i++){
  61. File file = files[i];
  62. file.deleteSync();
  63. }
  64. return true;
  65. } catch (err) {
  66. print(err);
  67. }
  68. }
  69. ///image保存临时文件夹下
  70. saveCacheImageFile( imageByte,name,{fileName="signImg"}) async{
  71. final image = img.decodeImage(imageByte);
  72. Directory appDocDir = await getApplicationDocumentsDirectory();
  73. Directory tempDir = await getTemporaryDirectory();
  74. String tempPath = tempDir.path; // 临时文件夹
  75. Directory dir = Directory(tempPath + "/$fileName");
  76. if (!dir.existsSync()) {
  77. dir.createSync();
  78. }
  79. // String appDocPath = appDocDir.path; // 应用文件夹
  80. final imageFile = File(path.join(dir.path, '${name}.png')); // 保存在应用文件夹内
  81. await imageFile.writeAsBytes(img.encodePng(image)); // 需要使用与图片格式对应的encode方法
  82. return imageFile.path;
  83. }
  84. Future<int> getCacheSize() async{
  85. int size = 0;
  86. Directory tempDir = await getTemporaryDirectory();
  87. String tempPath = tempDir.parent.path; // 临时文件夹
  88. Directory dir = Directory(tempPath + "/app_flutter/maintenance");
  89. print(dir);
  90. if(!dir.existsSync())return 0;
  91. List<FileSystemEntity> list = dir.listSync();
  92. for(int i=0;i<list.length;i++){
  93. size += File(list[i].path).lengthSync();
  94. }
  95. return size;
  96. }
  97. clearCache() async{
  98. Directory tempDir = await getTemporaryDirectory();
  99. String tempPath = tempDir.parent.path; // 临时文件夹
  100. Directory dir = Directory(tempPath + "/app_flutter/maintenance");
  101. List<FileSystemEntity> list = dir.listSync();
  102. for(int i=0;i<list.length;i++){
  103. File(list[i].path).deleteSync();
  104. }
  105. }