简单的网站建设合同书,wordpress加载图片的速度,网站建设摊销,图片制作视频shared_preferences 是一个Flutter插件#xff0c;它提供了一种简单的方式来在应用程序中存储和获取持久化的键值对数据。它可以用于存储应用程序的配置信息、用户偏好设置、登录状态等。
使用 shared_preferences 插件#xff0c;你可以在应用程序中轻松地保存和读取数据它提供了一种简单的方式来在应用程序中存储和获取持久化的键值对数据。它可以用于存储应用程序的配置信息、用户偏好设置、登录状态等。
使用 shared_preferences 插件你可以在应用程序中轻松地保存和读取数据而无需处理底层的持久化细节。它基于平台的本地存储机制例如Android中的SharedPreferences和iOS中的NSUserDefaults。
shared_preferences基本用法
以下是使用 shared_preferences 插件的基本操作
1.添加依赖
在你的Flutter项目的 pubspec.yaml 文件中添加 shared_preferences 依赖。
dependencies:shared_preferences: ^2.2.2
2.导入插件
在需要使用 shared_preferences 的文件中导入插件。
import package:shared_preferences/shared_preferences.dart;
3.存储数据
使用 SharedPreferences.getInstance() 方法获取 SharedPreferences 实例并使用 setXxx() 方法存储数据。
SharedPreferences prefs await SharedPreferences.getInstance();
prefs.setString(username, John);
prefs.setInt(age, 25);
4.读取数据
使用 SharedPreferences.getInstance() 方法获取 SharedPreferences 实例并使用 getXxx() 方法读取数据。
SharedPreferences prefs await SharedPreferences.getInstance();
String username prefs.getString(username);
int age prefs.getInt(age);
5.删除数据
使用 SharedPreferences.getInstance() 方法获取 SharedPreferences 实例并使用 remove() 方法删除指定键的数据。
SharedPreferences prefs await SharedPreferences.getInstance();
prefs.remove(username);
通过使用 shared_preferences 插件你可以方便地在Flutter应用程序中存储和获取持久化的数据。请注意这些数据是应用程序私有的只能在当前设备上访问。 可视化管理shared_preferences中的key和value类型
看了上面shared_preferences的基本用法我们会发现直接使用时会导致定义的key特别分散。开发者无法一目了然的查看现在shared_preferences中定义了哪些key对应的value又是什么类型。
1.使用
await SharedPreferencesManager.instance.set(SharedPreferencesKey.didGuide, true);bool? res await SharedPreferencesManager.instance.get(SharedPreferencesKey.didGuide);
2.封装SharedPreferencesManager
import package:shared_preferences/shared_preferences.dart;/// 管理SharedPreferences的键和值。
class SharedPreferencesManager {// 单例对象static final SharedPreferencesManager _instance SharedPreferencesManager._internal();// SharedPreferences的实例late SharedPreferences _prefs;// 私有构造函数用于创建类的单例实例SharedPreferencesManager._internal() {_init();}// 异步初始化确保在使用SharedPreferences之前已完成初始化void _init() async {_prefs await SharedPreferences.getInstance();}// 私有方法确保SharedPreferences实例已初始化Futurevoid _ensureInitialized() async {if (_prefs null) {_init();}}// 提供一个getter来获取单例对象static SharedPreferencesManager get instance _instance;// 使用泛型方法来获取键对应的值。// 根据泛型参数T的类型决定使用哪个SharedPreferences的getter方法。FutureT? getT(SharedPreferencesKey key) async {await _ensureInitialized(); // 确保_prefs已初始化if (T String) {return _prefs.getString(key.toString()) as T?;} else if (T bool) {return _prefs.getBool(key.toString()) as T?;} else if (T int) {return _prefs.getInt(key.toString()) as T?;} else if (T double) {return _prefs.getDouble(key.toString()) as T?;} else if (T List) {// 特别注意我们假设List类型指的是ListStringreturn _prefs.getStringList(key.toString()) as T?;} else {// 如果类型不支持则抛出异常throw Exception(Unsupported type);}}// 使用泛型方法设置值Futurebool setT(SharedPreferencesKey key, T value) async {await _ensureInitialized();String keyString key.toString();if (value is String) {return _prefs.setString(keyString, value);} else if (value is bool) {return _prefs.setBool(keyString, value);} else if (value is int) {return _prefs.setInt(keyString, value);} else if (value is double) {return _prefs.setDouble(keyString, value);} else if (value is ListString) {return _prefs.setStringList(keyString, value);} else {throw Exception(Unsupported type);}}
}/// 定义一个枚举包含所有keys和它们对应的类型
enum SharedPreferencesKey {didGuide(bool), // 引导状态的键与布尔类型关联username(String),themeMode(String);// 存储枚举值关联的类型final Type type;// 枚举构造函数const SharedPreferencesKey(this.type);
}