切换导航
{{systemName}}
{{ info.Title }}
{{info.Title}}
{{ menu.Title }}
{{menu.Title}}
登录
|
退出
搜索
Flutter shared_preferences数据存储工具类库
作者:ych
### 介绍 [pub库](https://pub.dev/packages/shared_preferences "pub库") 在原生的andriod 和iOS 里面都会有数据缓存的api Android 端用的是 Sharedpreferences 来实现对于轻量级数据的缓存 , IOS端 通常使用NSUserDefaults 来实现轻量级数据的缓存 但是在flutter 有基于Android iOS 做支持的三方插件库 shared_preferences #### 基本用法 存储基本数据类型: int 类型 ``` onPressed: ()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); int counter = 1; await prefs.setInt('counter', counter); }, ``` String类型 ``` onPressed: ()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); String counter = "1"; await prefs.setString('counter', counter); }, ``` bool类型 ``` onPressed: ()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); bool counter =false; await prefs.setBool('counter', counter); }, ``` double类型 ``` onPressed: ()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); double counter =0.01; await prefs.setDouble('counter', counter); }, ``` listdata类型 ``` onPressed: ()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); List
counter=["1","2"]; await prefs.setStringList('counter', counter); }, ``` 取值基本用法 ``` onPressed: ()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); int counterint =prefs.getInt("counter"); String counter =prefs.getString("counter"); bool counterbool =prefs.getBool("counter"); double counterdouble =prefs.getDouble("counter"); List counterlist =prefs.getStringList("counter"); }, ``` 删除指定数据 其中key就是你存贮的名称,value就是你存储的值 ``` SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.remove(key); //删除指定键 ``` 清空整个缓存 ``` SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.clear();//清空键值对 ``` #### 封装 common ``` import 'package:flutter/cupertino.dart'; import 'package:shared_preferences/shared_preferences.dart'; class Common { ///存数据 static Object savePreference(String key , Object value) async { SharedPreferences prefs = await SharedPreferences.getInstance(); if(value is int ){ await prefs.setInt(key, value); }else if(value is double){ await prefs.setDouble(key, value); }else if(value is bool){ await prefs.setBool(key, value); }else if(value is String){ await prefs.setString(key, value); }else if(value is List){ await prefs.setStringList(key, value.cast
); } else { throw new Exception("不能得到这种类型"); } } ///取数据 static Future getPreference(String key ,Object defaultValue) async{ SharedPreferences prefs = await SharedPreferences.getInstance(); if(defaultValue is int) { return prefs.getInt(key); } else if(defaultValue is double) { return prefs.getDouble(key); } else if(defaultValue is bool) { return prefs.getBool(key); } else if(defaultValue is String) { return prefs.getString(key); } else if(defaultValue is List) { return prefs.getStringList(key); } else { throw new Exception("不能得到这种类型"); } } /// 删除指定数据 static void remove(String key)async{ SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.remove(key); //删除指定键 } ///清空整个缓存 static void clear()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.clear(); ////清空缓存 } } ``` #### 工具类具体调用 存储数据: ``` onPressed: (){ String counter = "1"; Common.savePreference("counter", counter); }, ), ``` 取值 直接调用并赋值给定义的变量 ``` onPressed: ()async{ String counter = await (Common.getPreference("counter", "1")) as String ; print("counter -- > "+counter); }, ``` 通过then方式调用 ``` onPressed: ()async{ Common.getPreference("counter", "1").then((value){ print("value --->" +value); }); }, ``` 删除指定key的缓存数据调用: ``` Common.remove("counter"); ``` 清空整个SharedPreferences缓存: ``` Common.clear(); ``` ### 更多 [Flutter shared_preferences 各种基础用法和特别技巧](https://juejin.cn/post/6893369848101863437 "Flutter shared_preferences 各种基础用法和特别技巧")
相关推荐
Flutter ListView嵌套Listview问题和Column嵌套ListView问题
Flutter打包release APK闪退百分百解决方法
flutter fluttertoast弹窗工具的使用和封装
flutter网络请求框架dio基本使用
js加密处理实战
Flutter的数据转换及读取和解析
Flutter 获取文件缓存及清理缓存工具类库
Flutter中数据库的封装和使用详细教程
Flutter基础组件
Flutter单一子元素组件
评论区
先去登录
版权所有:机遇屋在线 Copyright © 2021-2025 jiyuwu Co., Ltd.
鲁ICP备16042261号-1