选择 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存取就可以了