zoukankan      html  css  js  c++  java
  • 关于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存取就可以了

  • 相关阅读:
    Linux
    Linux -- 文件统计常用命令
    再论最小二乘
    再论EM算法的收敛性和K-Means的收敛性
    【MySQL】优化—工欲善其事,必先利其器之EXPLAIN
    【Linux】浅谈段页式内存管理
    【Linux】之系统工具top
    【Linux】之shell特殊变量整理
    【Linux】系统 之 RAID
    【MySQL】binlog缓存的问题和性能
  • 原文地址:https://www.cnblogs.com/yinniora/p/14333508.html
Copyright © 2011-2022 走看看