flutter 本地存储数据(shared_preferences)
一、shared_preferences 本地存储插件简介
- shared_preferences 是 Flutter 提供的 本地数据存取 插件 ;
- 在不同的平台 , 基于不同的机制开发 , 如 Android 平台中基于 SharedPreferences 开发 , iOS 平台中基于 NSUserDefaults 开发 ;
- 访问本地文件是耗时操作 , 因此访问 shared_preferences 存储是一个 异步操作 ;
- 为简单数据封装平台特定的持久存储(iOS和macOS上的NSUserDefaults, Android上的SharedPreferences,等等)。数据可能会异步持久化到磁盘,并且不能保证写入返回后会持久化到磁盘,所以这个插件不能用于存储关键数据。
实现:
添加插件依赖:
dependencies:shared_preferences: 2.0.15 #本地存储插件
简单示例:
import 'package:shared_preferences/shared_preferences.dart';
/*** 存储数据到本地*/
enum StoreKeys {token,
}
enum StoreName{name,
}
enum StorePassword{password,
}class Store {// static StoreKeys storeKeys;final SharedPreferences _store;static Future<Store> getInstance() async {SharedPreferences preferences = await SharedPreferences.getInstance();return Store._internal(preferences);}Store._internal(this._store);/*** 保存token*/getString(StoreKeys key) async {return _store.get(key.toString());}setString(StoreKeys key, String value) async {return _store.setString(key.toString(), value);}/*** 保存用户名*/getNameString(StoreName key) async {return _store.get(key.toString());}setNameString(StoreName key, String value) async {return _store.setString(key.toString(), value);}/*** 保存密码*/getpasswordString(StorePassword key) async {return _store.get(key.toString());}setPasswordString(StorePassword key, String value) async {return _store.setString(key.toString(), value);}remove(StoreKeys key) async {return _store.remove(key.toString());}
}
调用方法:
String name = 'admin'; //测试数据String password = '123456'; //测试数据Store store = await Store.getInstance(); //初始化await store.setNameString(StoreName.name, name); //调用写入方法String testName = await store.getNameString(StoreName.name);//获取对应数据print("获取的用户名 $testName");await store.setPasswordString(StorePassword.password, password);//调用写入方法String testPassword =await store.getpasswordString(StorePassword.password);//获取对应数据print("获取的密码 $testPassword");
基本使用
支持数据类型
int
,double
,bool
,String
,List<String>
。
写入数据
var user = await SharedPreferences.getInstance(); //初始化
user .setString("name", "张三");
user .setInt("age", 22);
user .setBool("sex", true);
user .setDouble("height", 177.7);
user .setStringList("address", <String>["石家庄", "长安区"]);
读取数据
var user = await SharedPreferences.getInstance(); //初始化
String? name = user .getString("name");
int? age = user .getInt("age");
bool? sex = user .getBool("sex");
double? height = user .getDouble("height");
List<String>? address = user .getStringList("address");
删除数据
删除一个数据
var user= await SharedPreferences.getInstance(); //初始化
user.remove("name");
删除全部数据
var user = await SharedPreferences.getInstance(); //初始化
user.clear();
获取所有key
var user = await SharedPreferences.getInstance();
var keys = user.getKeys();
key是否存在
var user = await SharedPreferences.getInstance();
var b = user.containsKey("name");
flutter 本地存储数据(shared_preferences)相关推荐
- 华为云早报 印度政府拟要求 Google、Facebook 等在本地存储数据
[云头条] 印度政府拟要求 Google.Facebook 等在本地存储数据 北京时间7月30日晚间消息,据路透社获得的一份"国家政策框架草案"文件显示,印度政府正考虑要求电子商务 ...
- JS本地存储加载渲染页面信息、动态更新本地存储数据
本地存储数据加载到页面: 从本地存储中获取数据,并由字符串基础类型转换为对象类型(存储至堆内存中) 初始化变量data 为空数组(变量data存储在栈内存中) 将获取的数据赋值给变量data (实质为 ...
- Android本地存储键值对,flutter本地存储键值对简单数据(相当于web的localstorage) 代码实现...
flutter中存储键值对简单数据(相当于前端localstorage概念) 首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 sh ...
- 微信小程序:本地存储数据
1.本地存储多个数据(嵌套数组),封装数组对象 js书写:addr本身也是数组 var newNa = {"tel": 122222,"addr":that.d ...
- 小程序获取本地存储数据,然后传参的时候是上次请求的id
本地存储 // 本地存储wx.setStorage({key: "city",data: id}) 获取本地存储id wx.getStorage('city') //异步一样可以获 ...
- App Inventor 2数据存储组件之:微数据库,本地存储数据App下次启动可共享读取
数据存储一般分为两大类:本地 和 网络,本地一般是数据文件的形式存储在手机上,本地App每次启动都可以共享读取,但是不同的手机之间不可以共享数据:如果需要多个手机之间共享获取或存储数据的话,那就需要用 ...
- 前端学习(1043):回车把数据存储到本地存储里面
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...
- HTML5的本地存储详解
为什么80%的码农都做不了架构师?>>> Html5 学习系列(六)Html5本地存储和本地数据库 一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端 ...
- 前端 在浏览器端存储数据
在前端中存储数据大致有三种模式: 1:cookie:但是cookie的空间只有4k,所以很少使用: 2:sessionStorage: 是在本地存储数据,其空间有最多可以达到5M,但是生命周期是浏览器 ...
最新文章
- 《今日简史》读书笔记(未完待续)
- matlab工作路径
- 如何在Java中将String转换为int?
- python培训班 北京-北京python培训班哪家好
- weblogic管理2 - 创建并启动一个managed server
- 仅完成部分的readprocessmemory或write_盘点2019年新能源车企销量目标完成率:广汽新能源超额完成/吉利、北汽紧随其后...
- RHEL7.0 配置网络IP的三种方法
- 有c基础学java多久_有c十十基础的自学java语言每天6小时要多长时间?
- Junit 测试时内存溢出解决办法
- JavaScript设计模式 单例模式
- mysql-plus多数据库_MyBatis-Plus实现多数据源的示例代码
- 蜂鸣器驱动电路中二极管的作用
- 读书笔记 - 《王阳明大传:知行合一的心学智慧》
- 一个命令清理电脑垃圾,不用再安装任何管家软件,节省电脑资源,让电脑运行更快更流畅
- A component is changing an uncontrolled input to be controlled. This is likely caused by the value
- mysql查看数据库
- 《奋斗》徐志森的财商课
- go 字符转ASCII 字符转成数字
- 【软件服务外包概论】软件服务外包概论知识点整理
- StampedLock原理分析