flutter 本地缓存shared_preferences、flutter_secure_storage的封装 (全网最新)

创建 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