cache_manager.dart 3.1 KB

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