import 'dart:io'; import 'dart:typed_data'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; class FileCacheMgr { static const key = "libCachedImageData"; static FileCacheMgr _instance; /// The DefaultCacheManager that can be easily used directly. The code of /// this implementation can be used as inspiration for more complex cache /// managers. factory FileCacheMgr() { if (_instance == null) { _instance = new FileCacheMgr._(); } return _instance; } FileCacheMgr._(); Future getFilePath() async { var directory = await getTemporaryDirectory(); return p.join(directory.path, key); } Future genFilePath(String fileId) async { var filePath = p.join(await getFilePath(), fileId); var folder = new File(filePath).parent; if (!(await folder.exists())) { folder.createSync(recursive: true); } return filePath; } Future writeFile(String fileId, Uint8List fileBytes) async { var path = p.join(await getFilePath(), fileId); print('receive path : $path'); var folder = new File(path).parent; if (!(await folder.exists())) { folder.createSync(recursive: true); } var file = await File(path).writeAsBytes(fileBytes); return file; } Future getFile(String fileId) async { var filePath = p.join(await getFilePath(), fileId); var file = File(filePath); if (await file.exists()) { return file; } return null; } static String pathKey; static initPathKey()async{ if(pathKey==null && Platform.isIOS){ Directory dir = await getTemporaryDirectory(); String path =dir.path; int start = path.indexOf('Application')+12; int end = start+36; pathKey = path.substring(start,end); } } ///给ios文件路径替换成正确的 static replacePath(String filePath) { if(Platform.isIOS && filePath!=null){ // print('filePath $filePath'); int start = filePath.indexOf('Application')+12; int end = start+36; filePath = filePath.replaceRange(start, end, pathKey); // print('after : $gg'); } return filePath; } }