• flutter 本地存储数据(shared_preferences)


    一、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 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

    写入数据 

    var user = await SharedPreferences.getInstance(); //初始化
    user .setString("name", "张三");
    user .setInt("age", 22);
    user .setBool("sex", true);
    user .setDouble("height", 177.7);
    user .setStringList("address", ["石家庄", "长安区"]);

     读取数据 

    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? 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"); 

  • 相关阅读:
    GET和POST有什么区别?
    Android 固定WIFI热点路由IP
    腾讯云轻量应用服务器使用场景列举说明
    24.Gateway 断言工厂Predicate的使用(springcloud)
    CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes) A.B.C
    【JavaScript】用字符串生成 DOM 元素
    Java_File 文件类 整理详解(求求了进来看看)
    数据库误修改后的数据恢复
    【【C语言康复训练-2】】
    简单DIV+CSS学生网页设计——电影请以你的名字呼唤我(4页)带音乐特效
  • 原文地址:https://blog.csdn.net/f234344435/article/details/126969104