添加依赖:
path_provider: ^0.5.0+1
import 'dart:convert'; import 'dart:io'; import 'package:path_provider/path_provider.dart'; class FileUtils { /// 临时目录: /data/user/0/com.example.myapp/cache /// 一个临时目录(缓存),系统可以随时清除。 static Future<String> getTempDir() async { try { Directory tempDir = await getTemporaryDirectory(); return tempDir.path; } catch (err) { print(err); return null; } } /// 文档目录: /data/user/0/com.example.myapp/app_flutter /// 应用程序的目录,用于存储只有它可以访问的文件。只有当应用程序被删除时,系统才会清除目录。 static Future<String> getAppDocDir() async { try { Directory appDocDir = await getApplicationDocumentsDirectory(); return appDocDir.path; } catch (err) { print(err); return null; } } static readFile(filePath) { return new File('$filePath'); } /// 读取json文件 static Future<String> readJsonFile(filePath) async { try { final file = readFile(filePath); return await file.readAsString(); } catch (err) { print(err); return null; } } /// 写入json文件 static Future<File> writeJsonFile(obj, filePath) async { try { final file = readFile(filePath); return await file.writeAsString(json.encode(obj)); } catch (err) { print(err); return null; } } }
使用:
FileUtils.getAppDocDir().then((String appDocDir) { String filePath = appDocDir + '/test.json'; FileUtils.readJsonFile(filePath).then((String sms) { if (_sms == null || sms.isEmpty) { return; } setState(() { Map marketingSmsMap = json.decode(sms); DataBean _bean = new DataBean.fromJson(marketingSmsMap); }); }); });