flutter插件 - shared_preferences(数据存储)

简介

官方文档

数据存储。一个类似于weblocalstorage的插件

在关闭app后,并不会自动清除掉值,第二次打开时值还在

使用

  • 修改pubspec.yaml文件,添加依赖shared_preferences
# ... dev_dependencies: # ... shared_preferences: ^0.5.12 # ...
  • 基本使用
SharedPreferences prefs = await SharedPreferences.getInstance(); // 写入字符串 prefs.setString(key, value); // 读取字符串 prefs.getString(key); // 删除 prefs.remove(key); // 清空 prefs.clear();

下面使用单例模式封装一下

  • lib/utils/目录下新建preference_utils.dart文件
import 'package:shared_preferences/shared_preferences.dart'; class PreferencesKey { static const THEME_COLOR_INDEX = 'theme_color_index'; // 当前主题 index static const SLIVER_HEADER = 'sliver_header'; // 刷新头部跟随 } /// shared_preferences 管理类 class PreferenceUtils { static PreferenceUtils _instance; static PreferenceUtils get instance => PreferenceUtils(); PreferenceUtils._internal(); factory PreferenceUtils() { if (_instance == null) _instance = PreferenceUtils._internal(); return _instance; } saveInteger(String key, int value) => SharedPreferences.getInstance().then((sp) => sp.setInt(key, value)); saveString(String key, String value) => SharedPreferences.getInstance().then((sp) => sp.setString(key, value)); saveBool(String key, bool value) => SharedPreferences.getInstance().then((sp) => sp.setBool(key, value)); saveDouble(String key, double value) => SharedPreferences.getInstance().then((sp) => sp.setDouble(key, value)); saveStringList(String key, List<String> value) => SharedPreferences.getInstance().then((sp) => sp.setStringList(key, value)); Future<int> getInteger(String key, [int defaultValue = 0]) async { var sp = await SharedPreferences.getInstance(); var value = sp.getInt(key); return value ?? defaultValue; } Future<String> getString(String key, [String defaultValue = '']) async { var sp = await SharedPreferences.getInstance(); var value = sp.getString(key); return value ?? defaultValue; } Future<bool> getBool(String key, [bool defaultValue = false]) async { var sp = await SharedPreferences.getInstance(); var value = sp.getBool(key); return value ?? defaultValue; } Future<double> getDouble(String key, [double defaultValue = 0.0]) async { var sp = await SharedPreferences.getInstance(); var value = sp.getDouble(key); return value ?? defaultValue; } Future<List<String>> getStringList(String key, [List<String> defaultValue = const <String>[]]) async { var sp = await SharedPreferences.getInstance(); var value = sp.getStringList(key); return value ?? defaultValue; } }
  • lib/config/目录下新建preferences_key.dart
  • 在代码中使用
// 设置 PreferenceUtils.instance.saveInteger(PreferencesKey.THEME_COLOR_INDEX, index); // 获取 PreferenceUtils.instance.getInteger(PreferencesKey.THEME_COLOR_INDEX, 0).then((index) { print(index) });

创作不易,若本文对你有帮助,欢迎打赏支持作者!

 分享给好友: