前言
- 对NSUserDefaults(在iOS上)和SharedPreferences(在Android上)进行了包装,用于持久化的存储一些较为简单的数据,以键值对的方式存储(key-value) ,不建议存储重要的信息。 复杂数据进行数据库持久化存储请看 Flutter持久化存储之sqflite
- 默认只能存储 int、double、String、List、bool类型,对其进行封装处理为单例模式,并使其具备存储Map和List的能力,并且不用关注类型,存储和读取都更加方便
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字符串 因此需要进行转换
Jso