Files
pilipala/lib/utils/storage.dart
2024-11-24 17:38:35 +08:00

188 lines
6.1 KiB
Dart

import 'dart:io';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:path_provider/path_provider.dart';
import 'package:pilipala/models/user/info.dart';
class GStorage {
static late final Box<dynamic> userInfo;
static late final Box<dynamic> localCache;
static late final Box<dynamic> setting;
static late final Box<dynamic> video;
static Future<void> init() async {
final Directory dir = await getApplicationSupportDirectory();
final String path = dir.path;
await Hive.initFlutter('$path/hive');
regAdapter();
// 登录用户信息
userInfo = await Hive.openBox(
'userInfo',
compactionStrategy: (int entries, int deletedEntries) {
return deletedEntries > 2;
},
);
// 本地缓存
localCache = await Hive.openBox(
'localCache',
compactionStrategy: (int entries, int deletedEntries) {
return deletedEntries > 10;
},
);
// 设置
setting = await Hive.openBox('setting');
// 视频设置
video = await Hive.openBox('video');
}
static void regAdapter() {
Hive.registerAdapter(UserInfoDataAdapter());
Hive.registerAdapter(LevelInfoAdapter());
}
static Future<void> close() async {
// user.compact();
// user.close();
userInfo.compact();
userInfo.close();
localCache.compact();
localCache.close();
setting.compact();
setting.close();
video.compact();
video.close();
}
}
class SettingBoxKey {
/// 播放器
static const String btmProgressBehavior = 'btmProgressBehavior',
defaultVideoSpeed = 'defaultVideoSpeed',
autoUpgradeEnable = 'autoUpgradeEnable',
feedBackEnable = 'feedBackEnable',
defaultVideoQa = 'defaultVideoQa',
defaultLiveQa = 'defaultLiveQa',
defaultAudioQa = 'defaultAudioQa',
autoPlayEnable = 'autoPlayEnable',
fullScreenMode = 'fullScreenMode',
defaultDecode = 'defaultDecode',
danmakuEnable = 'danmakuEnable',
defaultToastOp = 'defaultToastOp',
defaultPicQa = 'defaultPicQa',
enableHA = 'enableHA',
enableOnlineTotal = 'enableOnlineTotal',
enableAutoBrightness = 'enableAutoBrightness',
enableAutoEnter = 'enableAutoEnter',
enableAutoExit = 'enableAutoExit',
p1080 = 'p1080',
enableCDN = 'enableCDN',
autoPiP = 'autoPiP',
enableAutoLongPressSpeed = 'enableAutoLongPressSpeed',
enablePlayerControlAnimation = 'enablePlayerControlAnimation',
// 默认音频输出方式
defaultAoOutput = 'defaultAoOutput',
// 港澳台模式
enableGATMode = 'enableGATMode',
// youtube 双击快进快退
enableQuickDouble = 'enableQuickDouble',
enableShowDanmaku = 'enableShowDanmaku',
enableBackgroundPlay = 'enableBackgroundPlay',
fullScreenGestureMode = 'fullScreenGestureMode',
/// 隐私
blackMidsList = 'blackMidsList',
/// 推荐
enableRcmdDynamic = 'enableRcmdDynamic',
defaultRcmdType = 'defaultRcmdType',
enableSaveLastData = 'enableSaveLastData',
minDurationForRcmd = 'minDurationForRcmd',
minLikeRatioForRecommend = 'minLikeRatioForRecommend',
exemptFilterForFollowed = 'exemptFilterForFollowed',
//filterUnfollowedRatio = 'filterUnfollowedRatio',
applyFilterToRelatedVideos = 'applyFilterToRelatedVideos',
/// 其他
autoUpdate = 'autoUpdate',
replySortType = 'replySortType',
defaultDynamicType = 'defaultDynamicType',
enableHotKey = 'enableHotKey',
enableSearchSuggest = 'enableSearchSuggest',
enableQuickFav = 'enableQuickFav',
enableWordRe = 'enableWordRe',
enableSearchWord = 'enableSearchWord',
enableSystemProxy = 'enableSystemProxy',
enableAi = 'enableAi',
enableAutoExpand = 'enableAutoExpand',
defaultHomePage = 'defaultHomePage',
enableRelatedVideo = 'enableRelatedVideo',
enableDlna = 'enableDlna',
hardwareDecodeFormat = 'hardwareDecodeFormat';
/// 外观
static const String themeMode = 'themeMode',
defaultTextScale = 'textScale',
dynamicColor = 'dynamicColor', // bool
customColor = 'customColor', // 自定义主题色
enableSingleRow = 'enableSingleRow', // 首页单列
displayMode = 'displayMode',
customRows = 'customRows', // 自定义列
enableMYBar = 'enableMYBar',
hideSearchBar = 'hideSearchBar', // 收起顶栏
hideTabBar = 'hideTabBar', // 收起底栏
tabbarSort = 'tabbarSort', // 首页tabbar
dynamicBadgeMode = 'dynamicBadgeMode',
enableGradientBg = 'enableGradientBg',
enableDynamicSwitch = 'enableDynamicSwitch',
navBarSort = 'navBarSort',
actionTypeSort = 'actionTypeSort';
}
class LocalCacheKey {
// 历史记录暂停状态 默认false 记录
static const String historyPause = 'historyPause',
// access_key
accessKey = 'accessKey',
//
wbiKeys = 'wbiKeys',
timeStamp = 'timeStamp',
// 弹幕相关设置 屏蔽类型 显示区域 透明度 字体大小 弹幕时间 描边粗细
danmakuBlockType = 'danmakuBlockType',
danmakuShowArea = 'danmakuShowArea',
danmakuOpacity = 'danmakuOpacity',
danmakuFontScale = 'danmakuFontScale',
danmakuDuration = 'danmakuDuration',
strokeWidth = 'strokeWidth',
// 代理host port
systemProxyHost = 'systemProxyHost',
systemProxyPort = 'systemProxyPort';
static const String isDisableBatteryOptLocal = 'isDisableBatteryOptLocal',
isManufacturerBatteryOptimizationDisabled =
'isManufacturerBatteryOptimizationDisabled';
}
class VideoBoxKey {
// 视频比例
static const String videoFit = 'videoFit',
// 亮度
videoBrightness = 'videoBrightness',
// 倍速
videoSpeed = 'videoSpeed',
// 播放顺序
playRepeat = 'playRepeat',
// 系统预设倍速
playSpeedSystem = 'playSpeedSystem',
// 默认倍速
playSpeedDefault = 'playSpeedDefault',
// 默认长按倍速
longPressSpeedDefault = 'longPressSpeedDefault',
// 自定义倍速集合
customSpeedsList = 'customSpeedsList',
// 画面填充比例
cacheVideoFit = 'cacheVideoFit';
}