Flutter持久化存儲之shared_preferences

前言

對NSUserDefaults(在iOS上)和SharedPreferences(在Android上)進行了包裝,用於持久化的存儲一些較爲簡單的數據,以鍵值對的方式存儲(key-value) ,不建議存儲重要的信息。 複雜數據進行數據庫持久化存儲請看 Flutter持久化存儲之sqflite

1. 準備工作

1.1 添加依賴

在pubspec.yaml文件下添加
dependencies:
  shared_preferences: ^0.5.7+3
1.2 安裝
如果保存了有自動執行則最好,如果沒有那麼在終端運行flutter packages get命令

1.3 導入

import ‘package:shared_preferences/shared_preferences.dart’;

2.使用流程

2.1 獲取實例對象

SharedPreferences prefs = await SharedPreferences.getInstance();

2.2 設置值

// 目前僅支持5種類型的存儲,Map(對象)需要先轉換成JSON字符串之後 再進行存儲 本質上還是存儲字符串
// 1. int
prefs.setInt('age',18);
// 2. double
prefs.setDouble('source',99.9);
// 3. String
prefs.setString('name','Marco');
// 4. bool
prefs.setBool('isADC',true);
// 5. List<String>
prefs.setStringList('strList',['str1','str2']);
// 6. Map 使用convert中的方法將Map轉換成字符串進行存儲 取出時也需要進行處理
prefs.setString('info',JsonEncoder().convert({"name":"Marco","type":"ADC"}));

2.3 讀取值

// 0. get 可以取出任意類型的value
prefs.get('age');
// 1. int 
prefs.getInt('age');
// 2.double
prefs.getDouble('source');
// 3. String
prefs.getString('name');
// 4. bool 
prefs.getBool('isADC');
// 5.List<String>
prefs.getStringList('strList');
// 6. Map 取出的是JSON字符串 因此需要進行轉換
JsonDecoder().convert(prefs.getString("info"))

2.4 其他操作

// 1. remove(key)     刪除值 根據key刪除保存的鍵值對
prefs.remove('age');
// 2.containsKey(key)  是否存儲的鍵值對中是否包含給定的key
prefs.remove('source');
// 3. clear()  清空所有鍵值對
prefs.clear();
// 4. getKeys() 獲取所有的key 返回一個Set<String> 
prefs.getKeys();

shared_preferences的使用還是比較簡單的,主要是Map類型的存儲不是很方便,需要藉助convert進行轉換,關於convert可以參考Flutter中編解碼Convert基本使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章