添加依賴:json
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); }); }); });