关于Flutter 利用 sharedPreferences 存取 Map

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

posted @ 2021-01-27 09:55  Yinniora  阅读(1229)  评论(0编辑  收藏  举报