Flutter持久化存储之使用和封装shared_preferences

本文介绍了Flutter中使用shared_preferences进行数据持久化存储的方法,包括添加依赖、导入库、设置和读取值等步骤。此外,文章还详细讲解了如何封装shared_preferences,实现对Map和List的支持,简化存储操作。最后提供了封装后的完整代码示例,适用于简单的键值对存储需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  1. 对NSUserDefaults(在iOS上)和SharedPreferences(在Android上)进行了包装,用于持久化的存储一些较为简单的数据,以键值对的方式存储(key-value) ,不建议存储重要的信息。 复杂数据进行数据库持久化存储请看 Flutter持久化存储之sqflite
  2. 默认只能存储 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值