Files
UUVPN/flutter/lib/utils/shared_preferences_util.dart
T
2023-06-25 11:50:55 +08:00

102 lines
3.0 KiB
Dart

import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
class SharedPreferencesUtil {
SharedPreferencesUtil._();
static SharedPreferencesUtil? _instance;
late SharedPreferences sharedPreferences;
static SharedPreferencesUtil? getInstance() {
_instance ??= SharedPreferencesUtil._();
return _instance;
}
static saveData<T>(String key, T value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
switch (T) {
case String:
prefs.setString(key, value as String);
break;
case int:
prefs.setInt(key, value as int);
break;
case bool:
prefs.setBool(key, value as bool);
break;
case double:
prefs.setDouble(key, value as double);
break;
}
}
static Future<T?> getData<T>(String key) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
T? res;
switch (T) {
case String:
res = prefs.getString(key) as T;
break;
case int:
res = prefs.getInt(key) as T;
break;
case bool:
res = prefs.getBool(key) as T;
break;
case double:
res = prefs.getDouble(key) as T;
break;
}
return res;
}
Future<bool> setBool(String tag, bool isFirst) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.setBool(tag, isFirst);
}
Future<bool> setString(String tag, String data) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.setString(tag, data);
}
Future<bool> setMap(String tag, Map<String, dynamic>? data) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.setString(tag, jsonEncode(data));
}
Future<bool> setList(String tag, List<dynamic>? data) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.setString(tag, jsonEncode(data));
}
Future<bool?> getBool(String tag) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.getBool(tag);
}
Future<String?> getString(String tag) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.getString(tag);
}
Future<Map<String, dynamic>> getMap(String tag) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return jsonDecode(sharedPreferences.getString(tag) ?? '{}');
}
Future<List<dynamic>> getList(String tag) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return jsonDecode(sharedPreferences.getString(tag) ?? '[]');
}
Future<bool> clear() async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.clear();
}
}