创建 flutter 项目,并添加依赖包
# 应用依赖的包
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.6
dio: ^5.4.3+1 # 网络插件
shared_preferences: ^2.2.3 # 本地存储:官方维护的插件
flutter_secure_storage: ^9.2.2 # 本地存储(加密):第三方维护的插件
封装的组件为:local_storage_utils.dart
import 'dart:convert';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
/// SharedPreferences 插件的缓存数据工具: 对 SharedPreferences 封装的工具
class SharedPreferencesUtil {
/// 设置数据: value类型可以是 String int double bool map
static Future<bool> set(String key, dynamic value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
/// 如果 value 的类型是 Map 和 List,则转换成 JSON字符串进行存储
if (value is Map<String, dynamic> || value is List<dynamic>) {
return prefs.setString(key, jsonEncode(value));
}
/// 根据 value 不同的类型,用不同的方法进行存储
return switch (value.runtimeType) {
String => prefs.setString(key, value),
int => prefs.setInt(key, value),
double => prefs.setDouble(key, value),
bool => prefs.setBool(key, value),
_ => Future<bool>.value(false) // 其他类型的,不支持存储,直接返回false
};
}
/// 获取 String 数据, 获取数据为空,则返回默认值 "",判断使用 isEmpty 来判断
static Future<String> getString(String key) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString(key) ?? "";
}
/// 获取 bool 数据
static Future<bool> getBool(String key) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getBool(key) ?? false;
}
/// 获取 int 数据, 获取数据为空,则返回默认值0
static Future<int> getInt(String key) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getInt(key) ?? 0;
}
/// 获取 double 数据, 获取数据为空,则返回默认值 0.0
static Future<double> getDouble(String key) async {
SharedPreferences prefs = await SharedPreferenc