You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.5 KiB
117 lines
3.5 KiB
4 years ago
|
import 'dart:async';
|
||
|
import 'dart:convert';
|
||
|
|
||
|
import 'package:shared_preferences/shared_preferences.dart';
|
||
|
import 'package:synchronized/synchronized.dart';
|
||
|
|
||
|
class SpUtil {
|
||
|
static SpUtil _singleton;
|
||
|
static SharedPreferences _prefs;
|
||
|
static Lock _lock = Lock();
|
||
|
|
||
|
static Future<SpUtil> getInstance() async {
|
||
|
if (_singleton == null) {
|
||
|
await _lock.synchronized(() async {
|
||
|
if (_singleton == null) {
|
||
|
// keep local instance till it is fully initialized.
|
||
|
// 保持本地实例直到完全初始化。
|
||
|
var singleton = SpUtil._();
|
||
|
await singleton._init();
|
||
|
_singleton = singleton;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
return _singleton;
|
||
|
}
|
||
|
|
||
|
SpUtil._();
|
||
|
|
||
|
Future _init() async {
|
||
|
_prefs = await SharedPreferences.getInstance();
|
||
|
}
|
||
|
|
||
|
/// sp获取动态类型型值
|
||
|
static Future<dynamic> getDynamic(String key) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.get(key);
|
||
|
}
|
||
|
|
||
|
/// sp存储bool型值
|
||
|
static Future<bool> saveBool(String key, bool value) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.setBool(key, value);
|
||
|
}
|
||
|
|
||
|
/// sp获取bool型值
|
||
|
static Future<bool> getBool(String key) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return prefs.getBool(key);
|
||
|
}
|
||
|
|
||
|
/// sp存储int型值
|
||
|
static Future<bool> saveInt(String key, int value) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.setInt(key, value);
|
||
|
}
|
||
|
|
||
|
/// sp获取int型值
|
||
|
static Future<int> getInt(String key) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return prefs.getInt(key);
|
||
|
}
|
||
|
|
||
|
/// sp存储double型值
|
||
|
static Future<bool> saveDouble(String key, double value) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.setDouble(key, value);
|
||
|
}
|
||
|
|
||
|
/// sp获取double型值
|
||
|
static double getDouble(String key, double defValue) {
|
||
|
if (_prefs == null) return defValue;
|
||
|
return _prefs.getDouble(key) ?? defValue;
|
||
|
}
|
||
|
|
||
|
/// sp存储String型值
|
||
|
static Future<bool> saveString(String key, String value) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.setString(key, value);
|
||
|
}
|
||
|
|
||
|
/// sp获取String型值
|
||
|
static Future<String> getString(String key) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return prefs.getString(key);
|
||
|
}
|
||
|
|
||
|
/// sp存储List<String>型值
|
||
|
static Future<bool> saveStrings(String key, List<String> value) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.setStringList(key, value);
|
||
|
}
|
||
|
|
||
|
/// sp获取List<String>型值
|
||
|
static Future<List<String>> getStrings(String key) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return prefs.getStringList(key);
|
||
|
}
|
||
|
|
||
|
/// sp清除所有缓存,返回bool型值,true为清除成功
|
||
|
static Future<bool> clear() async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.clear();
|
||
|
}
|
||
|
|
||
|
/// sp清除单个缓存
|
||
|
static Future<bool> remove(String key) async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return await prefs.remove(key);
|
||
|
}
|
||
|
|
||
|
/// sp获取所有已经存储的key值,返回结果为Set<String>类型
|
||
|
static Future<Set<String>> getKeys() async {
|
||
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||
|
return prefs.getKeys();
|
||
|
}
|
||
|
}
|