简介
数据存储。一个类似于web
的localstorage
的插件
在关闭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)
});
发表评论