123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- library sp_util;
- import 'dart:async';
- import 'dart:convert';
- import 'package:shared_preferences/shared_preferences.dart';
- import 'package:synchronized/synchronized.dart';
- /// SharedPreferences Util.
- 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();
- }
- /// put object.
- static Future<bool>? putObject(String key, Object value) {
- return _prefs?.setString(key, json.encode(value));
- }
- /// get obj.
- static T? getObj<T>(String key, T f(Map v), {T? defValue}) {
- Map? map = getObject(key);
- return map == null ? defValue : f(map);
- }
- /// get object.
- static Map? getObject(String key) {
- String? _data = _prefs?.getString(key);
- return (_data == null || _data.isEmpty) ? null : json.decode(_data);
- }
- /// put object list.
- static Future<bool>? putObjectList(String key, List<Object> list) {
- List<String>? _dataList = list.map((value) {
- return json.encode(value);
- }).toList();
- return _prefs?.setStringList(key, _dataList);
- }
- /// get obj list.
- static List<T>? getObjList<T>(String key, T f(Map v),
- {List<T>? defValue = const []}) {
- List<Map>? dataList = getObjectList(key);
- List<T>? list = dataList?.map((value) {
- return f(value);
- }).toList();
- return list ?? defValue;
- }
- /// get object list.
- static List<Map>? getObjectList(String key) {
- List<String>? dataLis = _prefs?.getStringList(key);
- return dataLis?.map((value) {
- Map _dataMap = json.decode(value);
- return _dataMap;
- }).toList();
- }
- /// get string.
- static String? getString(String key, {String? defValue = ''}) {
- return _prefs?.getString(key) ?? defValue;
- }
- /// put string.
- static Future<bool>? putString(String key, String value) {
- return _prefs?.setString(key, value);
- }
- /// get bool.
- static bool? getBool(String key, {bool? defValue = false}) {
- return _prefs?.getBool(key) ?? defValue;
- }
- /// put bool.
- static Future<bool>? putBool(String key, bool value) {
- return _prefs?.setBool(key, value);
- }
- /// get int.
- static int? getInt(String key, {int? defValue = 0}) {
- return _prefs?.getInt(key) ?? defValue;
- }
- /// put int.
- static Future<bool>? putInt(String key, int value) {
- return _prefs?.setInt(key, value);
- }
- /// get double.
- static double? getDouble(String key, {double? defValue = 0.0}) {
- return _prefs?.getDouble(key) ?? defValue;
- }
- /// put double.
- static Future<bool>? putDouble(String key, double value) {
- return _prefs?.setDouble(key, value);
- }
- /// get string list.
- static List<String>? getStringList(String key,
- {List<String>? defValue = const []}) {
- return _prefs?.getStringList(key) ?? defValue;
- }
- /// put string list.
- static Future<bool>? putStringList(String key, List<String> value) {
- return _prefs?.setStringList(key, value);
- }
- /// get dynamic.
- static dynamic getDynamic(String key, {Object? defValue}) {
- return _prefs?.get(key) ?? defValue;
- }
- /// have key.
- static bool? haveKey(String key) {
- return _prefs?.getKeys().contains(key);
- }
- /// contains Key.
- static bool? containsKey(String key) {
- return _prefs?.containsKey(key);
- }
- /// get keys.
- static Set<String>? getKeys() {
- return _prefs?.getKeys();
- }
- /// remove.
- static Future<bool>? remove(String key) {
- return _prefs?.remove(key);
- }
- /// clear.
- static Future<bool>? clear() {
- return _prefs?.clear();
- }
- /// Fetches the latest values from the host platform.
- static Future<void>? reload() {
- return _prefs?.reload();
- }
- ///Sp is initialized.
- static bool isInitialized() {
- return _prefs != null;
- }
- /// get Sp.
- static SharedPreferences? getSp() {
- return _prefs;
- }
- }
|