本文主要是介绍[Flutter]shared_preferences基本用法以及可视化管理存储的key和value类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
shared_preferences
是一个Flutter插件,它提供了一种简单的方式来在应用程序中存储和获取持久化的键值对数据。它可以用于存储应用程序的配置信息、用户偏好设置、登录状态等。
使用 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';
import 'package:app_teleprompter/support/extension/object_extension.dart';/// 管理SharedPreferences的键和值。
class SharedPreferencesManager {// 单例对象static final SharedPreferencesManager _instance = SharedPreferencesManager._internal();// SharedPreferences的实例late final Future<SharedPreferences> _prefsFuture;// 私有构造函数,用于创建类的单例实例SharedPreferencesManager._internal() {_prefsFuture = _init();}// 异步初始化,确保在使用SharedPreferences之前已完成初始化Future<SharedPreferences> _init() async {return SharedPreferences.getInstance();}// 提供一个getter来获取单例对象static SharedPreferencesManager get instance => _instance;// 使用泛型方法来获取键对应的值。// 根据泛型参数T的类型,决定使用哪个SharedPreferences的getter方法。Future<T?> get<T>(SharedPreferencesKey key) async {final SharedPreferences prefs = await _prefsFuture; // 等待初始化完成String keyString = key.toString();// 尝试获取值,如果不存在则返回nullObject? value;if (T == String) {value = prefs.getString(keyString) as T?;} else if (T == bool) {value = prefs.getBool(keyString) as T?;} else if (T == int) {value = prefs.getInt(keyString) as T?;} else if (T == double) {value = prefs.getDouble(keyString) as T?;} else if (T == List) {// 特别注意:我们假设List类型指的是List<String>value = prefs.getStringList(keyString) as T?;} else {// 如果类型不支持,则抛出异常//throw Exception('Unsupported type');}// 如果找不到值,则返回null,否则返回值return value as T?;}// 使用泛型方法设置值Future<bool> set<T>(SharedPreferencesKey key, T value) async {final SharedPreferences prefs = await _prefsFuture; // 等待初始化完成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 List<String>) {return prefs.setStringList(keyString, value);} else {//throw Exception('Unsupported type');return false;}}
}// MARK: 自定义方法
extension PrintHelperExtension on SharedPreferencesManager {}/// 定义一个枚举,包含所有keys和它们对应的类型
enum SharedPreferencesKey {didGuide(bool), // 引导状态的键,与布尔类型关联isSubscribeValid(bool), // 订阅是否有效themeMode(String);// 存储枚举值关联的类型final Type type;// 枚举构造函数const SharedPreferencesKey(this.type);
}
这篇关于[Flutter]shared_preferences基本用法以及可视化管理存储的key和value类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!