app-starlock/lib/tools/storage.dart

317 lines
11 KiB
Dart
Raw Normal View History

/*
*
* */
2023-08-30 10:56:18 +08:00
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:star_lock/apm/apm_helper.dart';
2025-01-23 14:30:31 +08:00
import 'package:star_lock/talk/starChart/entity/relay_info_entity.dart';
import 'package:star_lock/talk/starChart/entity/star_chart_register_node_entity.dart';
import '../login/login/entity/LoginData.dart';
import '../main/lockMian/entity/lockListInfo_entity.dart';
2023-08-30 10:56:18 +08:00
const String saveBluePublicKey = 'BluePublicKey';
const String saveBluePrivateKey = 'BluePrivateKey';
const String saveBlueSignKey = 'BlueSignKey';
const String saveBlueToken = 'BlueGetToken';
const String currentConnectionLockId = 'CurrentConnectionLockId';
const String currentConnectionMacAddress = 'CurrentConnectionMacAddress';
const String ifIsDemoModeOrNot = 'IfIsDemoModeOrNot';
const String isAgreePrivacy = 'isAgreePrivacy'; //是否同意隐私协议弹窗
const String isAgreePosition = 'isAgreePosition'; //是否同意获取位置弹窗
const String isAgreeCamera = 'isAgreeCamera'; //是否同意获取相机/相册弹窗
const String isShowUpdateVersion = 'isShowUpdateVersion'; //是否更新弹窗
const String saveLockAlias = 'saveLockAlias'; //锁别名
const String appDeviceID = 'appDeviceID'; //推送设备ID
const String pushDeviceID = 'pushDeviceID'; //Jpush推送设备ID
const String vendorPushChannelInfo = 'pushChannelInfo'; //推送设备ID
const String saveIsVip = 'saveIsVip'; //是否是VIP
const String saveUserLoginData = 'userLoginData';
const String saveLockMainListData = 'lockMainListData';
const String isOpenDeBug = 'isOpenDeBug'; //是否打开 debug
const String automaticLockOffTime = 'automaticLockOffTime'; //自动关锁时间
2024-06-11 09:22:36 +08:00
const String associationUrl = 'associationUrl'; //ios跳转微信的 url
2024-11-28 14:57:49 +08:00
const String starChartRegisterNodeInfo = 'starChartRegisterNodeInfo'; //星图注册信息
const String relayInfo = 'relayInfo'; //星图中继服务器信息
const String lockNetWorkInfo = 'lockNetWorkInfo'; //锁板配网信息
2025-01-15 19:08:23 +08:00
const String appVersionHistoryUrl = 'appVersionHistoryUrl'; //是否同意隐私协议弹窗
class Storage {
factory Storage() => _instance;
Storage._internal();
static late final Storage _instance = Storage._internal();
static Future<Storage> getInstance() async {
return _instance;
}
2023-08-14 14:20:35 +08:00
2023-08-12 18:32:49 +08:00
// ///存数据
// static Future<void> setData(key, value) async {
// SharedPreferences sp = await SharedPreferences.getInstance();
// if (value is int) {
// await sp.setInt(key, value);
// } else if (value is bool) {
// await sp.setBool(key, value);
// } else if (value is double) {
// await sp.setDouble(key, value);
// } else if (value is String) {
// await sp.setString(key, value);
// } else if (value is List<String>) {
// await sp.setStringList(key, value);
// }
// }
//
// ///取数据
// ///
// static Future<T?> getData<T>(key) async {
// SharedPreferences sp = await SharedPreferences.getInstance();
// switch(T){
// case int: return (sp.getInt(key) ?? 0) as T;
// case bool: return (sp.getBool(key) ?? false) as T;
// case double: return (sp.getDouble(key) ?? 0.0) as T;
// case String: return (sp.getString(key) ?? '') as T;
// case List: return (sp.getStringList(key) ?? []) as T;
// default: return null;
// }
// }
// int
static Future<void> setInt(String key, dynamic value) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
sp.setInt(key, value);
}
static Future<int?> getInt(String key) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
return sp.getInt(key);
}
2023-08-12 18:32:49 +08:00
// bool
static Future<void> setBool(String key, dynamic value) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
sp.setBool(key, value);
}
static Future<bool?> getBool(String key) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
return sp.getBool(key);
}
// double
static Future<void> setDouble(String key, dynamic value) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
sp.setDouble(key, value);
}
static Future<double?> getDouble(String key) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
return sp.getDouble(key);
}
// string
static Future<void> setString(String key, dynamic value) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
sp.setString(key, value);
}
static Future<String?> getString(String key) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
return sp.getString(key);
}
// 字符串数组
static Future<void> setStringList(String key, dynamic value) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
sp.setStringList(key, value);
}
static Future<List<String>?> getStringList(String key) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
return sp.getStringList(key);
}
// 判断本地是否包含某个key
static Future<bool> ifHaveKey(String key) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
final bool isContainKey = sp.containsKey(key);
2024-04-26 15:38:59 +08:00
// AppLog.log(isContainKey);
return isContainKey;
}
2023-08-12 18:32:49 +08:00
// 移除数据
static Future<void> removeData(String key) async {
final SharedPreferences sp = await SharedPreferences.getInstance();
2023-08-12 18:32:49 +08:00
sp.remove(key);
}
// 移除所有的键值对
static Future<void> clearAll() async {
final SharedPreferences sp = await SharedPreferences.getInstance();
// sp.clear();
sp.remove(saveLockMainListData);
sp.remove(saveUserLoginData);
// 重新设置需要保留的数据
//退出登录不清除隐私协议同意状态
// await setString(isAgreePrivacy, isAgreePrivacy);
2023-08-12 18:32:49 +08:00
}
2023-08-30 10:56:18 +08:00
static Future<String?> getUid() async {
final LoginData? loginData = await getLoginData();
final String uid = loginData!.uid.toString();
2024-04-26 15:38:59 +08:00
// AppLog.log("pubUid:$uid");
2023-12-20 13:43:41 +08:00
return uid;
}
static Future<String?> getUserid() async {
final LoginData? loginData = await getLoginData();
final String userid = loginData!.userid.toString();
2024-04-26 15:38:59 +08:00
// AppLog.log("pubUid:$uid");
return userid;
}
2023-12-20 13:43:41 +08:00
static Future<String?> getMobile() async {
final LoginData? loginData = await getLoginData();
final String? mobile = loginData!.mobile;
return mobile ?? '';
2023-08-30 10:56:18 +08:00
}
static Future<String?> getEmail() async {
final LoginData? loginData = await getLoginData();
final String? email = loginData!.email;
return email;
}
static Future<String?> getNickname() async {
final LoginData? loginData = await getLoginData();
final String? nickname = loginData!.nickname;
return nickname;
}
static Future<String?> getHeadUrl() async {
final LoginData? loginData = await getLoginData();
final String? headUrl = loginData!.headUrl;
return headUrl;
}
2023-12-11 13:44:15 +08:00
static Future<LoginData?> getLoginData() async {
LoginData? loginData;
final String? data = await Storage.getString(saveUserLoginData);
2023-12-11 13:44:15 +08:00
if (data != null && data.isNotEmpty) {
loginData = LoginData.fromJson(jsonDecode(data));
ApmHelper.instance.login(loginData.userid!.toString());
2023-12-11 13:44:15 +08:00
}
2024-04-26 15:38:59 +08:00
// AppLog.log("loginData:$loginData");
2023-12-11 13:44:15 +08:00
return loginData;
}
static Future<void> saveLoginData(LoginData? data) async {
ApmHelper.instance.login(data!.userid!.toString());
await Storage.setString(saveUserLoginData, jsonEncode(data));
}
static Future<void> saveMainListData(LockListInfoGroupEntity? data) async {
await Storage.setString(saveLockMainListData, jsonEncode(data));
}
static Future<LockListInfoGroupEntity?> getLockMainListData() async {
LockListInfoGroupEntity? lockListInfoGroupEntity;
final String? data = await Storage.getString(saveLockMainListData);
if (data != null && data.isNotEmpty) {
lockListInfoGroupEntity =
LockListInfoGroupEntity.fromJson(jsonDecode(data));
}
return lockListInfoGroupEntity;
}
//设置自动关锁时间
static Future<void> saveAutomaticLockOffTime(String data) async {
await Storage.setString(automaticLockOffTime, data);
}
static Future<String> getAutomaticLockOffTime() async {
final String data = await Storage.getString(automaticLockOffTime) ?? '0';
return data;
}
2024-06-11 09:22:36 +08:00
//设置自动关锁时间
static Future<void> saveAssociationUrl(String data) async {
await Storage.setString(associationUrl, data);
}
static Future<String> getAssociationUrl() async {
final String data = await Storage.getString(associationUrl) ?? '0';
return data;
}
2024-11-28 14:57:49 +08:00
// 获取星图注册节点信息
static Future<StarChartRegisterNodeEntity?>
getStarChartRegisterNodeInfo() async {
StarChartRegisterNodeEntity? starChartRegisterNodeEntity;
final String? data = await Storage.getString(starChartRegisterNodeInfo);
if (data != null && data.isNotEmpty) {
starChartRegisterNodeEntity =
StarChartRegisterNodeEntity.fromJson(jsonDecode(data));
}
return starChartRegisterNodeEntity;
}
// 删除节点注册信息
static Future<void> removerStarChartRegisterNodeInfo() async {
removeData(starChartRegisterNodeInfo);
}
// 删除节点注册信息
static Future<void> removerRelayInfo() async {
removeData(relayInfo);
}
2024-11-28 14:57:49 +08:00
// 保存星图注册节点信息
static Future<void> saveStarChartRegisterNodeInfo(
StarChartRegisterNodeEntity starChartRegisterNodeEntity) async {
await Storage.setString(
starChartRegisterNodeInfo, jsonEncode(starChartRegisterNodeEntity));
}
// 保存中继服务信息
static Future<void> saveRelayInfo(RelayInfoEntity relayInfoEntity) async {
await Storage.setString(relayInfo, jsonEncode(relayInfoEntity));
}
// 保存锁板的配网信息
static Future<void> saveLockNetWorkInfo(Map<String, dynamic> info) async {
await Storage.setString(lockNetWorkInfo, json.encode(info));
}
static Future<void> removeLockNetWorkInfoCache() async {
removeData(lockNetWorkInfo);
}
// 获取锁板的配网信息
static Future<Map<String, dynamic>?> getLockNetWorkInfo() async {
Map<String, dynamic>? info = null;
final String? data = await Storage.getString(lockNetWorkInfo);
if (data == null || data.isEmpty) {
return null;
}
// 解析 JSON 字符串为 Map
info = json.decode(data);
return info;
}
2024-11-28 14:57:49 +08:00
// 获取星图注册节点信息
static Future<RelayInfoEntity?> getRelayInfo() async {
RelayInfoEntity? relayInfoEntity;
final String? data = await Storage.getString(relayInfo);
if (data != null && data.isNotEmpty) {
relayInfoEntity = RelayInfoEntity.fromJson(jsonDecode(data));
}
return relayInfoEntity;
}
}