選擇 sharedPreferences 是因為輕量簡單, 記錄一下存取 map
//利用SharedPreferences存儲數據 Future saveString(key,msg) async { SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); sharedPreferences.setString(key, msg); }
有個問題就是 msg 只能是字符串類型,但是字符串轉map那可是太費勁了。。。 所以利用 json 存儲。原本代碼里是沒有json相關方法接口的,需要在最開始 import 一下
import 'dart:convert' as JSON;
開始存儲!
//保存信息到集合 saveAction() { var msg = { 'message': ‘111’, 'time': ‘222’, 'date': ‘aaa’, 'dayNum': ‘bbb’ }; String saveTemp = JSON.jsonEncode(msg); //轉成json字符串 saveString(msg['message'],saveTemp); //在這里我把 msg的message值當做key值了 }
這里是獲取所有數據,也就是說之前可能存儲了很多個map
//獲取所有數據 Future getAllData() async { var tempList = new List(); SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); Set<String> keys = sharedPreferences.getKeys(); if(keys!=''&&keys!=null){ for (var item in keys) { var content = sharedPreferences.get(item); Map msgMap = JSON.jsonDecode(content); //把json轉成map tempList.add(msgMap); //把取出來的map都放到數組里了 } } }
取一條數據
//獲取存在SharedPreferences中的某一項數據 Future getString(key) async { var tempMap = new Map(); SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); setState(() { tempMap = JSON.jsonDecode(sharedPreferences.get(key)); //取出來並轉換成map }); }
總結:利用json存取就可以了