当前位置:   article > 正文

flutter 本地存储数据(shared_preferences)

flutter 本地存储

一、shared_preferences 本地存储插件简介

  1. shared_preferences 是 Flutter 提供的 本地数据存取 插件 ;
  2. 在不同的平台 , 基于不同的机制开发 , 如 Android 平台中基于 SharedPreferences 开发 , iOS 平台中基于 NSUserDefaults 开发 ;
  3. 访问本地文件是耗时操作 , 因此访问 shared_preferences 存储是一个 异步操作 ;
  4. 为简单数据封装平台特定的持久存储(iOS和macOS上的NSUserDefaults, Android上的SharedPreferences,等等)。数据可能会异步持久化到磁盘,并且不能保证写入返回后会持久化到磁盘,所以这个插件不能用于存储关键数据。

实现:

添加插件依赖:

  1. dependencies:
  2. shared_preferences: 2.0.15 #本地存储插件

简单示例:

  1. import 'package:shared_preferences/shared_preferences.dart';
  2. /**
  3. * 存储数据到本地
  4. */
  5. enum StoreKeys {
  6. token,
  7. }
  8. enum StoreName{
  9. name,
  10. }
  11. enum StorePassword{
  12. password,
  13. }
  14. class Store {
  15. // static StoreKeys storeKeys;
  16. final SharedPreferences _store;
  17. static Future<Store> getInstance() async {
  18. SharedPreferences preferences = await SharedPreferences.getInstance();
  19. return Store._internal(preferences);
  20. }
  21. Store._internal(this._store);
  22. /**
  23. * 保存token
  24. */
  25. getString(StoreKeys key) async {
  26. return _store.get(key.toString());
  27. }
  28. setString(StoreKeys key, String value) async {
  29. return _store.setString(key.toString(), value);
  30. }
  31. /**
  32. * 保存用户名
  33. */
  34. getNameString(StoreName key) async {
  35. return _store.get(key.toString());
  36. }
  37. setNameString(StoreName key, String value) async {
  38. return _store.setString(key.toString(), value);
  39. }
  40. /**
  41. * 保存密码
  42. */
  43. getpasswordString(StorePassword key) async {
  44. return _store.get(key.toString());
  45. }
  46. setPasswordString(StorePassword key, String value) async {
  47. return _store.setString(key.toString(), value);
  48. }
  49. remove(StoreKeys key) async {
  50. return _store.remove(key.toString());
  51. }
  52. }

调用方法:

  1. String name = 'admin'; //测试数据
  2. String password = '123456'; //测试数据
  3. Store store = await Store.getInstance(); //初始化
  4. await store.setNameString(StoreName.name, name); //调用写入方法
  5. String testName = await store.getNameString(StoreName.name);//获取对应数据
  6. print("获取的用户名 $testName");
  7. await store.setPasswordString(StorePassword.password, password);//调用写入方法
  8. String testPassword =
  9. await store.getpasswordString(StorePassword.password);//获取对应数据
  10. 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"); 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号