一、shared_preferences 本地存储插件简介

  1. shared_preferences 是 Flutter 提供的 本地数据存取 插件 ;
  2. 在不同的平台 , 基于不同的机制开发 , 如 Android 平台中基于 SharedPreferences 开发 , iOS 平台中基于 NSUserDefaults 开发 ;
  3. 访问本地文件是耗时操作 , 因此访问 shared_preferences 存储是一个 异步操作 ;
  4. 为简单数据封装平台特定的持久存储(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)相关推荐

  1. 华为云早报 印度政府拟要求 Google、Facebook 等在本地存储数据

    [云头条] 印度政府拟要求 Google.Facebook 等在本地存储数据 北京时间7月30日晚间消息,据路透社获得的一份"国家政策框架草案"文件显示,印度政府正考虑要求电子商务 ...

  2. JS本地存储加载渲染页面信息、动态更新本地存储数据

    本地存储数据加载到页面: 从本地存储中获取数据,并由字符串基础类型转换为对象类型(存储至堆内存中) 初始化变量data 为空数组(变量data存储在栈内存中) 将获取的数据赋值给变量data (实质为 ...

  3. Android本地存储键值对,flutter本地存储键值对简单数据(相当于web的localstorage) 代码实现...

    flutter中存储键值对简单数据(相当于前端localstorage概念) 首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 sh ...

  4. 微信小程序:本地存储数据

    1.本地存储多个数据(嵌套数组),封装数组对象 js书写:addr本身也是数组 var newNa = {"tel": 122222,"addr":that.d ...

  5. 小程序获取本地存储数据,然后传参的时候是上次请求的id

    本地存储 // 本地存储wx.setStorage({key: "city",data: id}) 获取本地存储id wx.getStorage('city') //异步一样可以获 ...

  6. App Inventor 2数据存储组件之:微数据库,本地存储数据App下次启动可共享读取

    数据存储一般分为两大类:本地 和 网络,本地一般是数据文件的形式存储在手机上,本地App每次启动都可以共享读取,但是不同的手机之间不可以共享数据:如果需要多个手机之间共享获取或存储数据的话,那就需要用 ...

  7. 前端学习(1043):回车把数据存储到本地存储里面

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  8. HTML5的本地存储详解

    为什么80%的码农都做不了架构师?>>>    Html5 学习系列(六)Html5本地存储和本地数据库 一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端 ...

  9. 前端 在浏览器端存储数据

    在前端中存储数据大致有三种模式: 1:cookie:但是cookie的空间只有4k,所以很少使用: 2:sessionStorage: 是在本地存储数据,其空间有最多可以达到5M,但是生命周期是浏览器 ...

最新文章

  1. 《今日简史》读书笔记(未完待续)
  2. matlab工作路径
  3. 如何在Java中将String转换为int?
  4. python培训班 北京-北京python培训班哪家好
  5. weblogic管理2 - 创建并启动一个managed server
  6. 仅完成部分的readprocessmemory或write_盘点2019年新能源车企销量目标完成率:广汽新能源超额完成/吉利、北汽紧随其后...
  7. RHEL7.0 配置网络IP的三种方法
  8. 有c基础学java多久_有c十十基础的自学java语言每天6小时要多长时间?
  9. Junit 测试时内存溢出解决办法
  10. JavaScript设计模式 单例模式
  11. mysql-plus多数据库_MyBatis-Plus实现多数据源的示例代码
  12. 蜂鸣器驱动电路中二极管的作用
  13. 读书笔记 - 《王阳明大传:知行合一的心学智慧》
  14. 一个命令清理电脑垃圾,不用再安装任何管家软件,节省电脑资源,让电脑运行更快更流畅
  15. A component is changing an uncontrolled input to be controlled. This is likely caused by the value
  16. mysql查看数据库
  17. 《奋斗》徐志森的财商课
  18. go 字符转ASCII 字符转成数字
  19. 【软件服务外包概论】软件服务外包概论知识点整理
  20. StampedLock原理分析

热门文章

  1. 【读过的书】《愿有人陪你颠沛流离》
  2. 【解决方案】国标GB28181协议视频平台EasyGBS及视频融合平台EasyCVR构建公共安全视频图像信息共享云平台方案
  3. 使用acme给nginx签发免费证书
  4. arm上加载insmod驱动时出现Unknown symbol in module
  5. 逆序数的求法-csdn博客
  6. Mac电脑查看文件编码格式
  7. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
  8. python中打出ln函数
  9. [微语 20.11.12] 挣脱
  10. 最小二乘法(求回归方程)的计算过程