Flutter开发者必读:sp_util - SharedPreferences的终极解决方案

news2025/2/27 20:50:15

简介

sp_util 是一个在 Flutter 社区中广泛使用的轻量级、无依赖的 SharedPreferences 封装库。

SharedPreferencesAndroidiOS 平台上用于存储少量数据的简单键值存储系统。

典型场景

sp_util 库在 Flutter 应用开发中的典型使用场景包括但不限于以下几点:

用户偏好设置:存储用户的主题选择、语言偏好、字体大小等个性化设置。

登录状态保持:在用户登录后,将用户的身份验证信息(如 token)存储在 SharedPreferences 中,以便在应用重新启动时保持登录状态。

应用配置:存储应用的配置信息,如 API 端点、版本号、调试模式开关等。

临时数据存储:对于不需要持久存储在数据库中的数据,如临时计算结果、临时缓存的数据等,可以使用 SharedPreferences 进行快速存储。

首屏加载优化:在应用启动时,从 SharedPreferences 中读取一些关键数据,以加快首屏加载速度。

用户行为跟踪:记录用户的某些行为或状态,例如是否同意隐私政策、是否已经完成了新手引导等。

广告跟踪:存储广告展示次数、点击次数等,以便进行广告效果分析。

离线数据同步:在没有网络连接的情况下,将需要同步的数据临时存储在 SharedPreferences 中,待网络恢复后再进行同步。

应用状态恢复:在应用被系统关闭或崩溃后重新启动时,从 SharedPreferences 中恢复之前的状态,如页面跳转、表单填写等。

多设备同步:在多设备使用同一账号的情况下,通过 SharedPreferences 存储一些同步信息,以便在不同设备间同步状态。

使用 sp_util 可以简化这些场景下的数据存储和读取操作,提高开发效率和应用性能。

使用步骤

添加依赖:

dependencies:
  flutter:
    sdk: flutter
  sp_util: ^版本号

然后运行 flutter pub get 来获取依赖

使用储存库:

import 'package:sp_util/sp_util.dart';

void saveData() {
  SpUtil.putString('username', 'mimo');
  SpUtil.putInt('age', 25);
  SpUtil.putDouble('height', 1.75);
  SpUtil.putBool('isVip', true);
}


String username = SpUtil.getString('username');
int age = SpUtil.getInt('age');
double height = SpUtil.getDouble('height');
bool isVip = SpUtil.getBool('isVip');

示例

再进行打印

print('=============================');
print('存入的用户名字:${username}');
print('存入的用户年龄:${age}');
print('存入的用户身高:${height}');
print('存入的用户isVip:${isVip}');
print('=============================');

就会得到以下结果

删除数据

SpUtil.remove('username');

// 清除所有数据
SpUtil.clear();

监听数据变化

SpUtil.putString('username', 'mimo2');
SpUtil.listen('username', (dynamic newValue, dynamic oldValue) {
  print('=============================');
  print('存入的用户的新名字:${newValue}');
  print('=============================');
  // 当 someKey 的值变化时,执行这里的代码
});

总结

以上就是sp_util 的基本使用方法。

sp_util 库的使用非常直观,它提供了基本的数据类型存储和监听功能,使得开发者可以轻松地管理和使用应用中的偏好设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1918159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模块化沙箱:多场景零信任数据安全解决方案

在政企领域,不同场景和用户往往有着层次不一的安全需求。传统的单一安全解决方案已经无法满足这些复杂而多样化的需求,因此,高灵活性和高扩展性的模块化沙箱应运而生。这种新型数据安全产品通过“积木式”的模块组合,能够精确、灵…

Keysight 是德 DSAX93204A 高性能示波器

Keysight 是德 DSAX93204A 高性能示波器 DSAX93204A Infiniium 高性能示波器: 33 GHz 高带宽实时示波器 zui佳的 33 GHz 真正模拟带宽80 GSa/s 采样率,2 通道;40 GSa/s 采样率,4 通道zui深的存储深度――高达 2 Gpts 存储器&am…

怎么办?我的C盘又爆红了!别慌!博主手把手带你管理你的C盘空间~

怎么办?我的C盘又爆红了!别慌!博主手把手带你管理你的C盘空间~ 文章目录 怎么办?我的C盘又爆红了!别慌!博主手把手带你管理你的C盘空间~0. 在开始清理之前1. 推荐执行的操作1.1 清理系统缓存文件1.2 磁盘清…

极客天成ScaleFlash与南大通用数据库兼容互认证

近日,北京极客天成科技有限公司与天津南大通用数据技术股份有限公司完成产品兼容性互认证,测试结果表明,极客天成分布式存储软件[简称NVMatrix]V3.0与南大通用多模多态数据库管理系统[简称GBase 8c]V5产品兼容性良好、运行稳定。 北京极客天成…

第三期书生大模型实战营 第2关 Python 基础知识

第三期书生大模型实战营 第2关 Python 基础知识 第三期书生大模型实战营 第2关 Python 基础知识Python 基础函数定义常见的内置方法replace(old, new)lower()split() 字典dict 使用Python实现词频统计使用VSCode进行调试总结 第三期书生大模型实战营 第2关 Python 基础知识 Hel…

Python基础教学之三:函数与模块篇——实现代码重用和模块化

Python基础教学之三:函数与模块篇——实现代码重用和模块化 一、函数的定义与使用 1. 理解函数 函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码块。它可以提高代码的重用性和程序的清晰度。 你可以定义一个由自己想要功能的函数,以下是…

星环科技知识平台TKH:引领企业构建高效AI基础设施,加速数智化转型新纪元

5月30-31日,2024向星力未来数据技术峰会期间,星环科技正式发布其最新人工智能基础设施产品——Transwarp Knowledge Hub星环知识平台(以下简称TKH)。该平台旨在为企业打通从人工智能基础设施建设到大数据、人工智能等研发应用的完…

Kafka-02 @KafkaListener学习

一. 引入依赖 SpringBoot 和 Kafka 搭配使用的场景&#xff0c;引入 spring-kafka 即可&#xff1b; <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.8.11</version>…

数据交换系列-DWG数据交换方案选型

1.背景介绍 1.1 什么是块 块相当于一个“标准件”&#xff0c;当你要用的时候可以随意插入&#xff0c;插入的时候可以旋转角度&#xff0c;还可以定义比例。块 &#xff0c;在CAD中&#xff0c;就是一个、或一组图形实体的总称&#xff0c;可以包含任意对象&#xff0c;简单…

Linux(一)线程——何为线程???Linux线程控制

文章目录 什么是线程&#xff1f;&#xff1f;&#xff1f;线程和进程的区别和联系Linux线程控制POSIX线程库创建线程线程等待线程终止线程分离 什么是线程&#xff1f;&#xff1f;&#xff1f; 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的…

Airtest成功案例分享:KLab连续2年携Airtest私有云产品参加CEDEC大会!

一、KLab株式会社介绍 KLab株式会社是一家位于日本的移动游戏开发公司&#xff0c;成立于2000年。公司以开发和运营基于动漫和漫画IP的手机游戏而闻名&#xff0c;尤其是在音乐节奏游戏领域。KLab的一些知名作品包括《LoveLive!学园偶像祭》、《排球少年&#xff1a;新的征程》…

【Redis】Redis十大类型

文章目录 前言一、string字符串类型二、List列表类型三、 Hash表四、 Set集合五、 ZSet有序集合六、 GEO地理空间七、 HyperLogLog基数统计八、Bitmap位图九、bitfield位域十、 Stream流10.1 队列指令10.2 消费组指令10.3 ACK机制 前言 redis是k-v键值对进行存储&#xff0c;k…

c#中的设计模式

1、设计模式 MVVM、MVC、GOF23种设计模式 2、GOF23种设计模式分类 创建型&#xff1a;对类的现实化进行了抽象&#xff0c;能够使软件模块做到与对象的创建和组织无关。 包括&#xff1a;单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式 结构型&#xff1a;描述类…

PHP充电桩小程序系统源码

绿色出行新伴侣&#xff01;充电桩小程序&#xff0c;让充电不再烦恼✨ &#x1f50b; 开篇&#xff1a;告别电量焦虑&#xff0c;充电桩小程序来救场&#xff01; 在这个电动车日益普及的时代&#xff0c;电量不足成了不少车主的“心头大患”。但别担心&#xff0c;充电桩小…

基于IDEA的Lombok插件安装及简单使用

lombok介绍 Lombok能以注解形式来简化java代码&#xff0c;提高开发效率。开发中经常需要写的javabean&#xff0c;都需要花时间去添加相应的getter/setter&#xff0c;也许还要去写构造器、equals等方法&#xff0c;而且需要维护。而Lombok能通过注解的方式&#xff0c;在编译…

Redis 主从复制,、哨兵与集群

目录 一.redis主从复制 1.redis 主从复制架构 2.主从复制特点 3.主从复制的基本原理 4.命令行配置 5.实现主从复制 6.删除主从复制 7.主从复制故障恢复 8.主从复制完整过程 9.主从同步优化配置 二.哨兵模式&#xff08;Sentinel&#xff09; 1.主要组件和概念 2.哨…

利用Python的sympy包求解一元多次方程

一元1次方程 import sympy as sp # 导入sympy包 x sp.Symbol(x) # 定义符号变量 f 2*x -8 # 定义要求解的一元1次方程 x sp.solve(f) # 调用solve函数求解方程 x[4]一元2次方程 import sympy as sp # 导入sympy包 x sp.Symbol(x) # 定义符号变量 f …

无人直播赚钱的底层逻辑是什么?一文揭晓!

当前&#xff0c;网络直播已经成为各类商家提高曝光和引流获客的主要渠道之一&#xff0c;这在为商家带来新机遇的同时&#xff0c;也让他们因人手不足或资金匮乏等原因而陷入无人问津窘境之中。在此背景下&#xff0c;无人直播软件一经出现&#xff0c;便引起了众多商家的关注…

【解密】记一次辽宁省某综合实践教学管理平台加解密算法分析

最近接到需求&#xff0c;于是准备弄一下&#xff0c;发现对方整个流程是&#xff1a;先加密在请求&#xff0c;请求得到的数据再进行拼接加密&#xff0c;不过花了2个小时还是完成了解密 哈哈 找到请求发现请求数据加密 在启动器里面发现登录方法 打印出各个关键变量数据 …

docs | 使用 sphinx 转化rst文件为html文档

1. 效果图 book 风格。 优点&#xff1a; 极简风格右边有标题导航左侧是文件导航&#xff0c;可隐藏 2. 使用方式 reST 格式&#xff0c;比markdown格式更复杂。 推荐使用 book 风格。 文档构建工具是 sphinx&#xff0c;是一个python包。 $ pip3 list | grep -i Sphinx …