關於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存取就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM