diff --git a/lib/common/widgets/custom_toast.dart b/lib/common/widgets/custom_toast.dart index 40998c456..2a5628a65 100644 --- a/lib/common/widgets/custom_toast.dart +++ b/lib/common/widgets/custom_toast.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/storage.dart'; -Box setting = GStorage.setting; - class CustomToast extends StatelessWidget { const CustomToast({super.key, required this.msg}); @@ -11,8 +8,8 @@ class CustomToast extends StatelessWidget { @override Widget build(BuildContext context) { - final double toastOpacity = - setting.get(SettingBoxKey.defaultToastOp, defaultValue: 1.0) as double; + final double toastOpacity = GStorage.setting + .get(SettingBoxKey.defaultToastOp, defaultValue: 1.0) as double; return Container( margin: EdgeInsets.only(bottom: MediaQuery.of(context).padding.bottom + 30), diff --git a/lib/common/widgets/network_img_layer.dart b/lib/common/widgets/network_img_layer.dart index 1fb63a8de..2a31147b5 100644 --- a/lib/common/widgets/network_img_layer.dart +++ b/lib/common/widgets/network_img_layer.dart @@ -1,13 +1,9 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/global_data.dart'; -import '../../utils/storage.dart'; import '../constants.dart'; -Box setting = GStorage.setting; - class NetworkImgLayer extends StatelessWidget { const NetworkImgLayer({ super.key, diff --git a/lib/http/init.dart b/lib/http/init.dart index 8defe91cd..618b4ce00 100644 --- a/lib/http/init.dart +++ b/lib/http/init.dart @@ -1,4 +1,3 @@ -// ignore_for_file: avoid_print import 'dart:async'; import 'dart:convert'; import 'dart:developer'; @@ -9,8 +8,6 @@ import 'package:dio/dio.dart'; import 'package:dio/io.dart'; import 'package:dio_cookie_manager/dio_cookie_manager.dart'; import 'package:flutter/material.dart'; -// import 'package:dio_http2_adapter/dio_http2_adapter.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/id_utils.dart'; import '../utils/storage.dart'; import '../utils/utils.dart'; @@ -25,8 +22,6 @@ class Request { static late CookieManager cookieManager; static late final Dio dio; factory Request() => _instance; - Box setting = GStorage.setting; - static Box localCache = GStorage.localCache; late bool enableSystemProxy; late String systemProxyHost; late String systemProxyPort; @@ -35,7 +30,6 @@ class Request { /// 设置cookie static setCookie() async { - Box userInfoCache = GStorage.userInfo; final String cookiePath = await Utils.getCookiePath(); final PersistCookieJar cookieJar = PersistCookieJar( ignoreExpires: true, @@ -57,7 +51,7 @@ class Request { isHttpOnly: item.httpOnly, ); } - final userInfo = userInfoCache.get('userInfoCache'); + final userInfo = GStorage.userInfo.get('userInfoCache'); if (userInfo != null && userInfo.mid != null) { final List cookie2 = await cookieManager.cookieJar .loadForRequest(Uri.parse(HttpString.tUrl)); @@ -146,12 +140,12 @@ class Request { headers: {}, ); - enableSystemProxy = setting.get(SettingBoxKey.enableSystemProxy, - defaultValue: false) as bool; + enableSystemProxy = GStorage.setting + .get(SettingBoxKey.enableSystemProxy, defaultValue: false) as bool; systemProxyHost = - setting.get(SettingBoxKey.systemProxyHost, defaultValue: ''); + GStorage.setting.get(SettingBoxKey.systemProxyHost, defaultValue: ''); systemProxyPort = - setting.get(SettingBoxKey.systemProxyPort, defaultValue: ''); + GStorage.setting.get(SettingBoxKey.systemProxyPort, defaultValue: ''); dio = Dio(options); diff --git a/lib/http/interceptor.dart b/lib/http/interceptor.dart index 26bc4968e..8bcc889e7 100644 --- a/lib/http/interceptor.dart +++ b/lib/http/interceptor.dart @@ -27,8 +27,7 @@ class ApiInterceptor extends Interceptor { // final String? accessKey = uri.queryParameters['access_key']; // final String? mid = uri.queryParameters['mid']; // try { - // Box localCache = GStorage.localCache; - // localCache.put(LocalCacheKey.accessKey, + // GStorage.localCache.put(LocalCacheKey.accessKey, // {'mid': mid, 'value': accessKey}); // } catch (_) {} // } diff --git a/lib/http/search.dart b/lib/http/search.dart index 988c37eb4..9f527df75 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:hive/hive.dart'; import '../models/bangumi/info.dart'; import '../models/common/search_type.dart'; import '../models/search/hot.dart'; @@ -12,7 +11,6 @@ import '../utils/storage.dart'; import 'index.dart'; class SearchHttp { - static Box localCache = GStorage.localCache; static Future hotSearchList() async { var res = await Request().get(Api.hotSearchList); if (res.data is String) { diff --git a/lib/http/video.dart b/lib/http/video.dart index 191864e96..7f888013a 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -5,7 +5,6 @@ import 'package:PiliPalaX/grpc/grpc_repo.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; -import 'package:hive/hive.dart'; import '../common/constants.dart'; import '../models/common/reply_type.dart'; import '../models/home/rcmd/result.dart'; @@ -30,11 +29,8 @@ import 'login.dart'; /// 返回{'status': bool, 'data': List} /// view层根据 status 判断渲染逻辑 class VideoHttp { - static Box localCache = GStorage.localCache; - static Box setting = GStorage.setting; static bool enableRcmdDynamic = - setting.get(SettingBoxKey.enableRcmdDynamic, defaultValue: true); - static Box userInfoCache = GStorage.userInfo; + GStorage.setting.get(SettingBoxKey.enableRcmdDynamic, defaultValue: true); // 首页推荐视频 static Future rcmdVideoList( @@ -76,7 +72,7 @@ class VideoHttp { {bool loginStatus = true, required int freshIdx}) async { Map data = { 'access_key': loginStatus - ? (localCache + ? (GStorage.localCache .get(LocalCacheKey.accessKey, defaultValue: {})['value'] ?? '') : '', @@ -215,9 +211,9 @@ class VideoHttp { } // 免登录查看1080p - if ((userInfoCache.get('userInfoCache') == null || + if ((GStorage.userInfo.get('userInfoCache') == null || MineController.anonymity) && - setting.get(SettingBoxKey.p1080, defaultValue: true)) { + GStorage.setting.get(SettingBoxKey.p1080, defaultValue: true)) { data['try_look'] = 1; } diff --git a/lib/main.dart b/lib/main.dart index af2c1c28e..7087f22bf 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -97,9 +97,10 @@ void main() async { class MyApp extends StatelessWidget { const MyApp({super.key}); + Box get setting => GStorage.setting; + @override Widget build(BuildContext context) { - Box setting = GStorage.setting; // 主题色 Color defaultColor = colorThemeTypes[setting.get(SettingBoxKey.customColor, defaultValue: 0)] diff --git a/lib/pages/about/index.dart b/lib/pages/about/index.dart index 10bbbcc8e..8a5d1fa45 100644 --- a/lib/pages/about/index.dart +++ b/lib/pages/about/index.dart @@ -8,7 +8,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:PiliPalaX/models/github/latest.dart'; import 'package:PiliPalaX/pages/setting/controller.dart'; @@ -427,7 +426,6 @@ class _AboutPageState extends State { } class AboutController extends GetxController { - Box setting = GStorage.setting; final SettingController settingController = Get.put(SettingController()); RxString currentVersion = ''.obs; RxString remoteVersion = ''.obs; diff --git a/lib/pages/bangumi/controller.dart b/lib/pages/bangumi/controller.dart index 16bf7ad98..c8c67d6e8 100644 --- a/lib/pages/bangumi/controller.dart +++ b/lib/pages/bangumi/controller.dart @@ -1,13 +1,11 @@ import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/bangumi.dart'; import 'package:PiliPalaX/utils/storage.dart'; class BangumiController extends CommonController { bool isLoadingMore = true; - Box userInfoCache = GStorage.userInfo; RxBool userLogin = false.obs; late int mid; dynamic userInfo; @@ -17,7 +15,7 @@ class BangumiController extends CommonController { @override void onInit() { super.onInit(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); if (userInfo != null) { mid = userInfo.mid; } @@ -29,7 +27,7 @@ class BangumiController extends CommonController { // 我的订阅 Future queryBangumiFollow() async { - userInfo = userInfo ?? userInfoCache.get('userInfoCache'); + userInfo = userInfo ?? GStorage.userInfo.get('userInfoCache'); if (userInfo != null) { followState.value = await BangumiHttp.bangumiFollow(mid: userInfo.mid); } diff --git a/lib/pages/bangumi/introduction/controller.dart b/lib/pages/bangumi/introduction/controller.dart index 8d1d6c95a..2b7e99ab7 100644 --- a/lib/pages/bangumi/introduction/controller.dart +++ b/lib/pages/bangumi/introduction/controller.dart @@ -11,7 +11,6 @@ import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:get/get_navigation/src/dialog/dialog_route.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/constants.dart'; import 'package:PiliPalaX/http/search.dart'; import 'package:PiliPalaX/http/video.dart'; @@ -53,7 +52,6 @@ class BangumiIntroController extends CommonController { // 是否收藏 RxBool hasFav = false.obs; dynamic videoTags; - Box userInfoCache = GStorage.userInfo; bool userLogin = false; Rx favFolderData = FavFolderData().obs; List addMediaIdsNew = []; @@ -84,7 +82,7 @@ class BangumiIntroController extends CommonController { // videoItem!['owner'] = args.owner; } } - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); userLogin = userInfo != null; if (userLogin && epId != null) { diff --git a/lib/pages/bangumi/widgets/bangumi_panel.dart b/lib/pages/bangumi/widgets/bangumi_panel.dart index 5dfc7b945..3ebdfa50d 100644 --- a/lib/pages/bangumi/widgets/bangumi_panel.dart +++ b/lib/pages/bangumi/widgets/bangumi_panel.dart @@ -4,7 +4,6 @@ import 'package:PiliPalaX/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/bangumi/info.dart'; import 'package:PiliPalaX/pages/video/detail/index.dart'; import 'package:PiliPalaX/utils/storage.dart'; @@ -35,7 +34,6 @@ class _BangumiPanelState extends State { late int currentIndex; final ScrollController listViewScrollCtr = ScrollController(); final ScrollController listViewScrollCtr_2 = ScrollController(); - Box userInfoCache = GStorage.userInfo; dynamic userInfo; // 默认未开通 int vipStatus = 0; @@ -49,7 +47,7 @@ class _BangumiPanelState extends State { cid = widget.cid!; currentIndex = widget.pages.indexWhere((e) => e.cid == cid); scrollToIndex(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); if (userInfo != null) { vipStatus = userInfo.vipStatus; } diff --git a/lib/pages/danmaku/controller.dart b/lib/pages/danmaku/controller.dart index cf6184a8c..0ac7f2fa8 100644 --- a/lib/pages/danmaku/controller.dart +++ b/lib/pages/danmaku/controller.dart @@ -1,15 +1,15 @@ import 'package:PiliPalaX/http/danmaku.dart'; import 'package:PiliPalaX/models/danmaku/dm.pb.dart'; -import 'package:flutter/cupertino.dart'; +import 'package:PiliPalaX/plugin/pl_player/controller.dart'; class PlDanmakuController { PlDanmakuController( - this.cid, this.danmakuWeightNotifier, this.danmakuFilterNotifier); + this.cid, + this.plPlayerController, + ); final int cid; - final ValueNotifier danmakuWeightNotifier; - final ValueNotifier>> danmakuFilterNotifier; - int danmakuWeight = 0; - List> danmakuFilter = []; + final PlPlayerController plPlayerController; + Map> dmSegMap = {}; // 已请求的段落标记 List requestedSeg = []; @@ -22,16 +22,6 @@ class PlDanmakuController { if (videoDuration <= 0) { return; } - danmakuWeightNotifier.addListener(() { - debugPrint( - "danmakuWeight changed from $danmakuWeight to ${danmakuWeightNotifier.value}"); - danmakuWeight = danmakuWeightNotifier.value; - }); - danmakuFilterNotifier.addListener(() { - debugPrint( - "danmakuFilter changed from $danmakuFilter to ${danmakuFilterNotifier.value}"); - danmakuFilter = danmakuFilterNotifier.value; - }); if (requestedSeg.isEmpty) { int segCount = (videoDuration / segmentLength).ceil(); requestedSeg = List.generate(segCount, (index) => false); @@ -40,9 +30,6 @@ class PlDanmakuController { } void dispose() { - danmakuWeightNotifier.removeListener(() {}); - danmakuFilterNotifier.removeListener(() {}); - danmakuFilter.clear(); dmSegMap.clear(); requestedSeg.clear(); } @@ -78,18 +65,20 @@ class PlDanmakuController { if (!requestedSeg[segmentIndex]) { queryDanmaku(segmentIndex); } - if (danmakuWeight == 0 && danmakuFilter.isEmpty) { + if (plPlayerController.danmakuWeight == 0 && + plPlayerController.danmakuFilterRule.isEmpty) { return dmSegMap[progress ~/ 100]; } else { return dmSegMap[progress ~/ 100] - ?.where((element) => element.weight >= danmakuWeight) + ?.where( + (element) => element.weight >= plPlayerController.danmakuWeight) .where(filterDanmaku) .toList(); } } bool filterDanmaku(DanmakuElem elem) { - for (var filter in danmakuFilter) { + for (var filter in plPlayerController.danmakuFilterRule) { switch (filter['type']) { case 0: if (elem.content.contains(filter['filter'])) { diff --git a/lib/pages/danmaku/view.dart b/lib/pages/danmaku/view.dart index dc76b1976..56b00d145 100644 --- a/lib/pages/danmaku/view.dart +++ b/lib/pages/danmaku/view.dart @@ -3,7 +3,6 @@ import 'dart:async'; import 'package:canvas_danmaku/canvas_danmaku.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/danmaku/dm.pb.dart'; import 'package:PiliPalaX/pages/danmaku/index.dart'; import 'package:PiliPalaX/plugin/pl_player/index.dart'; @@ -28,10 +27,10 @@ class PlDanmaku extends StatefulWidget { } class _PlDanmakuState extends State { - late PlPlayerController playerController; + PlPlayerController get playerController => widget.playerController; + late PlDanmakuController _plDanmakuController; DanmakuController? _controller; - Box setting = GStorage.setting; late bool enableShowDanmaku; int latestAddedPosition = -1; bool? _isFullScreen; @@ -41,24 +40,20 @@ class _PlDanmakuState extends State { @override void initState() { super.initState(); - enableShowDanmaku = - setting.get(SettingBoxKey.enableShowDanmaku, defaultValue: true); + enableShowDanmaku = GStorage.setting + .get(SettingBoxKey.enableShowDanmaku, defaultValue: true); _plDanmakuController = PlDanmakuController( - widget.cid, - widget.playerController.danmakuWeight, - widget.playerController.danmakuFilterRule); - - if (mounted) { - playerController = widget.playerController; - if (enableShowDanmaku || playerController.isOpenDanmu.value) { - _plDanmakuController.initiate( - playerController.duration.value.inMilliseconds, - playerController.position.value.inMilliseconds); - } - playerController - ..addStatusLister(playerListener) - ..addPositionListener(videoPositionListen); + widget.cid, + playerController, + ); + if (enableShowDanmaku || playerController.isOpenDanmu.value) { + _plDanmakuController.initiate( + playerController.duration.value.inMilliseconds, + playerController.position.value.inMilliseconds); } + playerController + ..addStatusLister(playerListener) + ..addPositionListener(videoPositionListen); _listenerDanmaku = playerController.isOpenDanmu.listen((p0) { if (p0 && !_plDanmakuController.initiated) { _plDanmakuController.initiate( diff --git a/lib/pages/danmaku_block/index.dart b/lib/pages/danmaku_block/index.dart index 6dba88d73..a1dd2f8ff 100644 --- a/lib/pages/danmaku_block/index.dart +++ b/lib/pages/danmaku_block/index.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/storage.dart'; import '../../http/danmaku_block.dart'; @@ -19,7 +18,6 @@ class _DanmakuBlockPageState extends State { final DanmakuBlockController _danmakuBlockController = Get.put(DanmakuBlockController()); final ScrollController scrollController = ScrollController(); - Box localCache = GStorage.localCache; late PlPlayerController plPlayerController; static const Map ruleLabels = { @@ -38,7 +36,7 @@ class _DanmakuBlockPageState extends State { } @override - void dispose() { + void dispose() async { List> simpleRuleList = _danmakuBlockController .ruleTypes.values .expand((element) => element) @@ -50,10 +48,10 @@ class _DanmakuBlockPageState extends State { return e.toMap(); }).toList(); // debugPrint("simpleRuleList:$simpleRuleList"); - localCache.put(LocalCacheKey.danmakuFilterRule, simpleRuleList); - plPlayerController.danmakuFilterRule.value = simpleRuleList; - scrollController.removeListener(() {}); + plPlayerController.danmakuFilterRule = simpleRuleList; scrollController.dispose(); + await GStorage.localCache.delete(LocalCacheKey.danmakuFilterRule); + GStorage.localCache.put(LocalCacheKey.danmakuFilterRule, simpleRuleList); super.dispose(); } @@ -80,6 +78,7 @@ class _DanmakuBlockPageState extends State { Text(hintText), TextField( controller: textController, + autofocus: true, //decoration: InputDecoration(hintText: hintText), ) ]), diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index 1ef011acb..74416acfe 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -1,5 +1,3 @@ -// ignore_for_file: avoid_print - import 'package:PiliPalaX/http/follow.dart'; import 'package:PiliPalaX/pages/dynamics/tab/controller.dart'; import 'package:PiliPalaX/pages/dynamics/tab/view.dart'; @@ -7,7 +5,6 @@ import 'package:PiliPalaX/utils/extension.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/dynamics.dart'; import 'package:PiliPalaX/http/search.dart'; import 'package:PiliPalaX/models/common/dynamics_type.dart'; @@ -34,11 +31,9 @@ class DynamicsController extends GetxController late List tabsPageList; bool flag = false; RxInt initialValue = 0.obs; - Box userInfoCache = GStorage.userInfo; RxBool userLogin = false.obs; dynamic userInfo; RxBool isLoadingDynamic = false.obs; - Box setting = GStorage.setting; List hasUpdatedUps = []; List allFollowedUps = []; int allFollowedUpsPage = 1; @@ -46,15 +41,15 @@ class DynamicsController extends GetxController @override void onInit() { - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); userLogin.value = userInfo != null; super.onInit(); tabController = TabController( length: tabsConfig.length, vsync: this, - initialIndex: - setting.get(SettingBoxKey.defaultDynamicType, defaultValue: 0), + initialIndex: GStorage.setting + .get(SettingBoxKey.defaultDynamicType, defaultValue: 0), ); tabsPageList = tabsConfig.map((e) => DynamicsTabPage(dynamicsType: e['tag'])).toList(); @@ -249,8 +244,8 @@ class DynamicsController extends GetxController upData.value.upList = []; upData.value.liveUsers = LiveUsers(); } - if (setting.get(SettingBoxKey.dynamicsShowAllFollowedUp, - defaultValue: false)) { + if (GStorage.setting + .get(SettingBoxKey.dynamicsShowAllFollowedUp, defaultValue: false)) { allFollowedUpsPage = 1; Future f1 = DynamicsHttp.followUp(); Future f2 = FollowHttp.followings( diff --git a/lib/pages/dynamics/view.dart b/lib/pages/dynamics/view.dart index 83cf4968b..68841edd1 100644 --- a/lib/pages/dynamics/view.dart +++ b/lib/pages/dynamics/view.dart @@ -8,10 +8,8 @@ import 'package:PiliPalaX/models/common/up_panel_position.dart'; import 'package:PiliPalaX/pages/dynamics/tab/controller.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:image_picker/image_picker.dart'; @@ -38,7 +36,6 @@ class _DynamicsPageState extends State with AutomaticKeepAliveClientMixin, SingleTickerProviderStateMixin { final DynamicsController _dynamicsController = Get.put(DynamicsController()); late Future _futureBuilderFutureUp; - Box userInfoCache = GStorage.userInfo; late UpPanelPosition upPanelPosition; StreamSubscription? _listener; @@ -99,7 +96,7 @@ class _DynamicsPageState extends State }); } }); - upPanelPosition = UpPanelPosition.values[setting.get( + upPanelPosition = UpPanelPosition.values[GStorage.setting.get( SettingBoxKey.upPanelPosition, defaultValue: UpPanelPosition.leftFixed.index)]; debugPrint('upPanelPosition: $upPanelPosition'); diff --git a/lib/pages/dynamics/widgets/up_panel.dart b/lib/pages/dynamics/widgets/up_panel.dart index 955cc5f13..f78bc3491 100644 --- a/lib/pages/dynamics/widgets/up_panel.dart +++ b/lib/pages/dynamics/widgets/up_panel.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/models/dynamics/up.dart'; import 'package:PiliPalaX/models/live/item.dart'; @@ -22,7 +21,6 @@ class _UpPanelState extends State { int currentMid = -1; List upList = []; List liveList = []; - Box userInfoCache = GStorage.userInfo; dynamic userInfo; bool _showLiveItems = false; late DynamicsController dynamicsController; @@ -30,7 +28,7 @@ class _UpPanelState extends State { @override void initState() { super.initState(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); dynamicsController = Get.find(); } diff --git a/lib/pages/fan/controller.dart b/lib/pages/fan/controller.dart index 0fa19d918..9df10a28d 100644 --- a/lib/pages/fan/controller.dart +++ b/lib/pages/fan/controller.dart @@ -2,11 +2,9 @@ import 'package:PiliPalaX/http/fan.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/storage.dart'; class FansController extends CommonController { - Box userInfoCache = GStorage.userInfo; int ps = 20; int total = 0; late int? mid; @@ -17,7 +15,7 @@ class FansController extends CommonController { @override void onInit() { super.onInit(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); mid = Get.parameters['mid'] != null ? int.parse(Get.parameters['mid']!) : userInfo?.mid; diff --git a/lib/pages/fav/controller.dart b/lib/pages/fav/controller.dart index f36f5daa0..edbd51da6 100644 --- a/lib/pages/fav/controller.dart +++ b/lib/pages/fav/controller.dart @@ -1,13 +1,11 @@ import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/common/common_controller.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/models/user/info.dart'; import 'package:PiliPalaX/utils/storage.dart'; class FavController extends CommonController { - Box userInfoCache = GStorage.userInfo; - late final UserInfoData? userInfo = userInfoCache.get('userInfoCache'); + late final UserInfoData? userInfo = GStorage.userInfo.get('userInfoCache'); int pageSize = 10; @override diff --git a/lib/pages/follow/controller.dart b/lib/pages/follow/controller.dart index 170b90010..72aaf31b7 100644 --- a/lib/pages/follow/controller.dart +++ b/lib/pages/follow/controller.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/follow.dart'; import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/models/follow/result.dart'; @@ -11,7 +10,6 @@ import 'package:PiliPalaX/utils/storage.dart'; /// 查看自己的关注时,可以查看分类 /// 查看其他人的关注时,只可以看全部 class FollowController extends GetxController with GetTickerProviderStateMixin { - Box userInfoCache = GStorage.userInfo; int pn = 1; int ps = 20; int total = 0; @@ -27,7 +25,7 @@ class FollowController extends GetxController with GetTickerProviderStateMixin { @override void onInit() { super.onInit(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); mid = Get.parameters['mid'] != null ? int.parse(Get.parameters['mid']!) : userInfo?.mid; diff --git a/lib/pages/home/widgets/app_bar.dart b/lib/pages/home/widgets/app_bar.dart index 8aea9b51b..fdcee9582 100644 --- a/lib/pages/home/widgets/app_bar.dart +++ b/lib/pages/home/widgets/app_bar.dart @@ -1,19 +1,16 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/pages/mine/view.dart'; import 'package:PiliPalaX/utils/storage.dart'; -Box userInfoCache = GStorage.userInfo; - class HomeAppBar extends StatelessWidget { const HomeAppBar({super.key}); @override Widget build(BuildContext context) { - dynamic userInfo = userInfoCache.get('userInfoCache'); + dynamic userInfo = GStorage.userInfo.get('userInfoCache'); return SliverAppBar( // forceElevated: true, toolbarHeight: MediaQuery.of(context).padding.top, diff --git a/lib/pages/live_room/widgets/bottom_control.dart b/lib/pages/live_room/widgets/bottom_control.dart index 8cb1a9186..f7d2ce8ef 100644 --- a/lib/pages/live_room/widgets/bottom_control.dart +++ b/lib/pages/live_room/widgets/bottom_control.dart @@ -3,11 +3,9 @@ import 'dart:io'; import 'package:floating/floating.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/video/play/url.dart'; import 'package:PiliPalaX/pages/live_room/index.dart'; import 'package:PiliPalaX/plugin/pl_player/index.dart'; -import 'package:PiliPalaX/utils/storage.dart'; class BottomControl extends StatefulWidget implements PreferredSizeWidget { final PlPlayerController? controller; @@ -32,7 +30,6 @@ class _BottomControlState extends State { TextStyle subTitleStyle = const TextStyle(fontSize: 12); TextStyle titleStyle = const TextStyle(fontSize: 14); Size get preferredSize => const Size(double.infinity, kToolbarHeight); - Box localCache = GStorage.localCache; @override void initState() { diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index 4de5df69a..9c3f45774 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -8,7 +8,6 @@ import 'package:PiliPalaX/pages/media/view.dart'; import 'package:PiliPalaX/utils/global_data.dart'; import 'package:get/get.dart'; import 'package:flutter/material.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/storage.dart'; import '../../models/common/dynamic_badge_mode.dart'; import '../../models/common/nav_bar_config.dart'; @@ -19,11 +18,9 @@ class MainController extends GetxController { final StreamController bottomBarStream = StreamController.broadcast(); - Box setting = GStorage.setting; late bool hideTabBar; late PageController pageController; int selectedIndex = 0; - Box userInfoCache = GStorage.userInfo; RxBool userLogin = false.obs; late DynamicBadgeMode dynamicBadgeType; late bool checkDynamic; @@ -36,10 +33,11 @@ class MainController extends GetxController { super.onInit(); checkDynamic = GStorage.checkDynamic; dynamicPeriod = GStorage.dynamicPeriod; - hideTabBar = setting.get(SettingBoxKey.hideTabBar, defaultValue: true); - dynamic userInfo = userInfoCache.get('userInfoCache'); + hideTabBar = + GStorage.setting.get(SettingBoxKey.hideTabBar, defaultValue: true); + dynamic userInfo = GStorage.userInfo.get('userInfoCache'); userLogin.value = userInfo != null; - dynamicBadgeType = DynamicBadgeMode.values[setting.get( + dynamicBadgeType = DynamicBadgeMode.values[GStorage.setting.get( SettingBoxKey.dynamicBadgeMode, defaultValue: DynamicBadgeMode.number.code)]; @@ -85,7 +83,9 @@ class MainController extends GetxController { if (dynIndex == -1 || !userLogin.value || dynamicBadgeType == DynamicBadgeMode.hidden || - !checkDynamic) return; + !checkDynamic) { + return; + } int now = DateTime.now().millisecondsSinceEpoch; if (now - (_lastCheckAt ?? 0) >= dynamicPeriod * 60 * 1000) { _lastCheckAt = now; @@ -96,13 +96,13 @@ class MainController extends GetxController { void setNavBarConfig() async { List defaultNavTabs = [...defaultNavigationBars]; List navBarSort = - setting.get(SettingBoxKey.navBarSort, defaultValue: [0, 1, 2]); + GStorage.setting.get(SettingBoxKey.navBarSort, defaultValue: [0, 1, 2]); defaultNavTabs.retainWhere((item) => navBarSort.contains(item['id'])); defaultNavTabs.sort((a, b) => navBarSort.indexOf(a['id']).compareTo(navBarSort.indexOf(b['id']))); navigationBars.value = defaultNavTabs; - int defaultHomePage = - setting.get(SettingBoxKey.defaultHomePage, defaultValue: 0) as int; + int defaultHomePage = GStorage.setting + .get(SettingBoxKey.defaultHomePage, defaultValue: 0) as int; int defaultIndex = navigationBars.indexWhere((item) => item['id'] == defaultHomePage); // 如果找不到匹配项,默认索引设置为0或其他合适的值 diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 8d55a37e5..d2d37fe5c 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -5,7 +5,6 @@ import 'package:PiliPalaX/grpc/grpc_client.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/common/dynamic_badge_mode.dart'; import 'package:PiliPalaX/pages/dynamics/index.dart'; import 'package:PiliPalaX/pages/home/index.dart'; @@ -31,7 +30,6 @@ class _MainAppState extends State final DynamicsController _dynamicController = Get.put(DynamicsController()); int? _lastSelectTime; //上次点击时间 - Box setting = GStorage.setting; late bool enableMYBar; late bool useSideBar; @@ -41,8 +39,10 @@ class _MainAppState extends State _lastSelectTime = DateTime.now().millisecondsSinceEpoch; _mainController.pageController = PageController(initialPage: _mainController.selectedIndex); - enableMYBar = setting.get(SettingBoxKey.enableMYBar, defaultValue: true); - useSideBar = setting.get(SettingBoxKey.useSideBar, defaultValue: false); + enableMYBar = + GStorage.setting.get(SettingBoxKey.enableMYBar, defaultValue: true); + useSideBar = + GStorage.setting.get(SettingBoxKey.useSideBar, defaultValue: false); WidgetsBinding.instance.addObserver(this); } diff --git a/lib/pages/media/controller.dart b/lib/pages/media/controller.dart index 1b6fe5547..d9dcc5ef1 100644 --- a/lib/pages/media/controller.dart +++ b/lib/pages/media/controller.dart @@ -3,12 +3,10 @@ import 'package:PiliPalaX/pages/common/common_controller.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/utils/storage.dart'; class MediaController extends CommonController { - Box userInfoCache = GStorage.userInfo; RxBool userLogin = false.obs; List list = [ { @@ -50,7 +48,7 @@ class MediaController extends CommonController { @override void onInit() { super.onInit(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); userLogin.value = userInfo != null; if (userLogin.value) { diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index 08a532ba8..338a3fbad 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -2,7 +2,6 @@ import 'package:PiliPalaX/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/http/video.dart'; @@ -21,7 +20,6 @@ class MemberController extends GetxController { late Map userStat; RxString face = ''.obs; String? heroTag; - Box userInfoCache = GStorage.userInfo; late int ownerMid; bool specialFollowed = false; // 投稿列表 @@ -36,7 +34,7 @@ class MemberController extends GetxController { void onInit() async { super.onInit(); mid = mid ?? int.parse(Get.parameters['mid']!); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); ownerMid = userInfo != null ? userInfo.mid : -1; try { face.value = Get.arguments['face'] ?? ''; diff --git a/lib/pages/mine/controller.dart b/lib/pages/mine/controller.dart index 4d42632a2..3bf65a44e 100644 --- a/lib/pages/mine/controller.dart +++ b/lib/pages/mine/controller.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/models/common/theme_type.dart'; import 'package:PiliPalaX/models/user/info.dart'; import 'package:PiliPalaX/models/user/stat.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:hive/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class MineController extends GetxController { @@ -15,11 +15,12 @@ class MineController extends GetxController { // 用户状态 动态、关注、粉丝 Rx userStat = UserStat().obs; RxBool userLogin = false.obs; - Box userInfoCache = GStorage.userInfo; - Box setting = GStorage.setting; Rx themeType = ThemeType.system.obs; + + static Box get setting => GStorage.setting; + static bool anonymity = - GStorage.setting.get(SettingBoxKey.anonymity, defaultValue: false); + setting.get(SettingBoxKey.anonymity, defaultValue: false); ThemeType get nextThemeType => ThemeType.values[(themeType.value.index + 1) % ThemeType.values.length]; @@ -28,8 +29,9 @@ class MineController extends GetxController { onInit() { super.onInit(); - if (userInfoCache.get('userInfoCache') != null) { - userInfo.value = userInfoCache.get('userInfoCache'); + dynamic userInfoCache = GStorage.userInfo.get('userInfoCache'); + if (userInfoCache != null) { + userInfo.value = userInfoCache; userLogin.value = true; } @@ -64,7 +66,7 @@ class MineController extends GetxController { if (res['status']) { if (res['data'].isLogin) { userInfo.value = res['data']; - userInfoCache.put('userInfoCache', res['data']); + GStorage.userInfo.put('userInfoCache', res['data']); userLogin.value = true; } else { resetUserInfo(); @@ -88,7 +90,7 @@ class MineController extends GetxController { Future resetUserInfo() async { userInfo.value = UserInfoData(); userStat.value = UserStat(); - userInfoCache.delete('userInfoCache'); + GStorage.userInfo.delete('userInfoCache'); userLogin.value = false; anonymity = false; } @@ -132,8 +134,7 @@ class MineController extends GetxController { TextButton( onPressed: () { SmartDialog.dismiss(); - GStorage.setting - .put(SettingBoxKey.anonymity, true); + setting.put(SettingBoxKey.anonymity, true); anonymity = true; SmartDialog.showToast('已设为永久无痕模式'); }, @@ -147,8 +148,7 @@ class MineController extends GetxController { TextButton( onPressed: () { SmartDialog.dismiss(); - GStorage.setting - .put(SettingBoxKey.anonymity, false); + setting.put(SettingBoxKey.anonymity, false); anonymity = true; SmartDialog.showToast('已设为临时无痕模式'); }, @@ -165,7 +165,7 @@ class MineController extends GetxController { ); }); } else { - GStorage.setting.put(SettingBoxKey.anonymity, false); + setting.put(SettingBoxKey.anonymity, false); SmartDialog.show( clickMaskDismiss: false, usePenetrate: true, diff --git a/lib/pages/rank/controller.dart b/lib/pages/rank/controller.dart index 395255cb2..84744be1e 100644 --- a/lib/pages/rank/controller.dart +++ b/lib/pages/rank/controller.dart @@ -1,9 +1,7 @@ import 'package:PiliPalaX/pages/rank/zone/index.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/common/rank_type.dart'; -import 'package:PiliPalaX/utils/storage.dart'; class RankController extends GetxController with GetTickerProviderStateMixin { bool flag = false; @@ -11,7 +9,6 @@ class RankController extends GetxController with GetTickerProviderStateMixin { RxInt initialIndex = 0.obs; late TabController tabController; late List tabsPageList; - Box setting = GStorage.setting; // late final StreamController searchBarStream = // StreamController.broadcast(); late bool enableGradientBg; diff --git a/lib/pages/setting/controller.dart b/lib/pages/setting/controller.dart index d0eac221b..0e9c283be 100644 --- a/lib/pages/setting/controller.dart +++ b/lib/pages/setting/controller.dart @@ -2,22 +2,18 @@ import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/init.dart'; import 'package:PiliPalaX/models/common/theme_type.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/login.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:hive/hive.dart'; import '../../models/common/dynamic_badge_mode.dart'; import '../../models/common/nav_bar_config.dart'; import '../main/index.dart'; import 'widgets/select_dialog.dart'; class SettingController extends GetxController { - Box userInfoCache = GStorage.userInfo; - Box setting = GStorage.setting; - Box localCache = GStorage.localCache; - RxBool userLogin = false.obs; RxBool hiddenSettingUnlocked = false.obs; RxBool feedBackEnable = false.obs; @@ -29,10 +25,12 @@ class SettingController extends GetxController { Rx dynamicBadgeType = DynamicBadgeMode.number.obs; RxInt defaultHomePage = 0.obs; + Box get setting => GStorage.setting; + @override void onInit() { super.onInit(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); userLogin.value = userInfo != null; hiddenSettingUnlocked.value = setting.get(SettingBoxKey.hiddenSettingUnlocked, defaultValue: false); @@ -71,8 +69,8 @@ class SettingController extends GetxController { await CookieManager().deleteAllCookies(); Request.dio.options.headers['cookie'] = ''; // 清空本地存储的用户标识 - userInfoCache.put('userInfoCache', null); - localCache.put(LocalCacheKey.accessKey, + GStorage.userInfo.put('userInfoCache', null); + GStorage.localCache.put(LocalCacheKey.accessKey, {'mid': -1, 'value': '', 'refresh': ''}); userLogin.value = false; if (Get.isRegistered()) { diff --git a/lib/pages/setting/extra_setting.dart b/lib/pages/setting/extra_setting.dart index 9c6955205..9b3766085 100644 --- a/lib/pages/setting/extra_setting.dart +++ b/lib/pages/setting/extra_setting.dart @@ -7,11 +7,11 @@ import 'package:PiliPalaX/utils/global_data.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/common/dynamics_type.dart'; import 'package:PiliPalaX/models/common/reply_sort_type.dart'; import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:hive/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import '../home/index.dart'; @@ -26,7 +26,6 @@ class ExtraSetting extends StatefulWidget { } class _ExtraSettingState extends State { - Box setting = GStorage.setting; final SettingController settingController = Get.put(SettingController()); late dynamic defaultReplySort; late dynamic defaultDynamicType; @@ -36,6 +35,8 @@ class _ExtraSettingState extends State { late String defaultSystemProxyPort; bool userLogin = false; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); @@ -201,8 +202,8 @@ class _ExtraSettingState extends State { TextButton( onPressed: () { Get.back(); - GStorage.setting - .put(SettingBoxKey.dynamicPeriod, dynamicPeriod); + setting.put( + SettingBoxKey.dynamicPeriod, dynamicPeriod); Get.find().dynamicPeriod = dynamicPeriod; }, diff --git a/lib/pages/setting/pages/color_select.dart b/lib/pages/setting/pages/color_select.dart index b8380787e..8b7dfd33e 100644 --- a/lib/pages/setting/pages/color_select.dart +++ b/lib/pages/setting/pages/color_select.dart @@ -219,13 +219,14 @@ class _ColorSelectPageState extends State { } class ColorSelectController extends GetxController { - Box setting = GStorage.setting; RxBool dynamicColor = true.obs; RxInt type = 0.obs; late final List> colorThemes; RxInt currentColor = 0.obs; RxDouble currentTextScale = 1.0.obs; + Box get setting => GStorage.setting; + @override void onInit() { colorThemes = colorThemeTypes; diff --git a/lib/pages/setting/pages/display_mode.dart b/lib/pages/setting/pages/display_mode.dart index 95fd99f00..6c45fc287 100644 --- a/lib/pages/setting/pages/display_mode.dart +++ b/lib/pages/setting/pages/display_mode.dart @@ -16,7 +16,8 @@ class _SetDisplayModeState extends State { List modes = []; DisplayMode? active; DisplayMode? preferred; - Box setting = GStorage.setting; + + Box get setting => GStorage.setting; final ValueNotifier page = ValueNotifier(0); late final PageController controller = PageController() diff --git a/lib/pages/setting/pages/font_size_select.dart b/lib/pages/setting/pages/font_size_select.dart index 69bd5599c..7af3126a4 100644 --- a/lib/pages/setting/pages/font_size_select.dart +++ b/lib/pages/setting/pages/font_size_select.dart @@ -11,13 +11,14 @@ class FontSizeSelectPage extends StatefulWidget { } class _FontSizeSelectPageState extends State { - Box setting = GStorage.setting; List list = List.generate(16, (index) => 0.85 + index * 0.05); //[0.85, 0.9, 0.95, 1.0, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35]; late double minSize; late double maxSize; late double currentSize; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); diff --git a/lib/pages/setting/pages/home_tabbar_set.dart b/lib/pages/setting/pages/home_tabbar_set.dart index d6b903165..38ab4436f 100644 --- a/lib/pages/setting/pages/home_tabbar_set.dart +++ b/lib/pages/setting/pages/home_tabbar_set.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/common/tab_type.dart'; import 'package:PiliPalaX/utils/storage.dart'; @@ -12,7 +11,6 @@ class TabbarSetPage extends StatefulWidget { } class _TabbarSetPageState extends State { - Box settingStorage = GStorage.setting; late List defaultTabs; late List tabbarSort; @@ -20,7 +18,7 @@ class _TabbarSetPageState extends State { void initState() { super.initState(); defaultTabs = tabsConfig; - tabbarSort = settingStorage + tabbarSort = GStorage.setting .get(SettingBoxKey.tabbarSort, defaultValue: ['live', 'rcmd', 'hot', 'rank', 'bangumi']) .map((i) => i.toString()) @@ -43,7 +41,7 @@ class _TabbarSetPageState extends State { .where((i) => tabbarSort.contains((i['type'] as TabType).id)) .map((i) => (i['type'] as TabType).id) .toList(); - settingStorage.put(SettingBoxKey.tabbarSort, sortedTabbar); + GStorage.setting.put(SettingBoxKey.tabbarSort, sortedTabbar); SmartDialog.showToast('保存成功,下次启动时生效'); } diff --git a/lib/pages/setting/pages/play_speed_set.dart b/lib/pages/setting/pages/play_speed_set.dart index 5511c3edb..9d8391478 100644 --- a/lib/pages/setting/pages/play_speed_set.dart +++ b/lib/pages/setting/pages/play_speed_set.dart @@ -3,8 +3,8 @@ import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/pages/setting/widgets/switch_item.dart'; -import 'package:PiliPalaX/plugin/pl_player/index.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:hive/hive.dart'; class PlaySpeedPage extends StatefulWidget { const PlaySpeedPage({super.key}); @@ -45,15 +45,17 @@ class _PlaySpeedPageState extends State { }, ]; + Box get video => GStorage.video; + @override void initState() { super.initState(); // 默认倍速 playSpeedDefault = - videoStorage.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0); + video.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0); // 默认长按倍速 longPressSpeedDefault = - videoStorage.get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0); + video.get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0); // 倍速 speedList = GStorage.speedList; enableAutoLongPressSpeed = GStorage.setting @@ -113,7 +115,7 @@ class _PlaySpeedPageState extends State { Get.back(); speedList.add(customSpeed); speedList.sort(); - await videoStorage.put(VideoBoxKey.speedsList, speedList); + await video.put(VideoBoxKey.speedsList, speedList); setState(() {}); } }, @@ -165,12 +167,11 @@ class _PlaySpeedPageState extends State { if (id == 1) { // 设置默认倍速 playSpeedDefault = speed; - videoStorage.put(VideoBoxKey.playSpeedDefault, playSpeedDefault); + video.put(VideoBoxKey.playSpeedDefault, playSpeedDefault); } else if (id == 2) { // 设置默认长按倍速 longPressSpeedDefault = speed; - videoStorage.put( - VideoBoxKey.longPressSpeedDefault, longPressSpeedDefault); + video.put(VideoBoxKey.longPressSpeedDefault, longPressSpeedDefault); } else if (id == -1) { if ([ 1.0, @@ -181,7 +182,7 @@ class _PlaySpeedPageState extends State { return; } speedList.removeAt(index); - await videoStorage.put(VideoBoxKey.speedsList, speedList); + await video.put(VideoBoxKey.speedsList, speedList); } setState(() {}); } @@ -194,7 +195,7 @@ class _PlaySpeedPageState extends State { actions: [ TextButton( onPressed: () async { - await videoStorage.delete(VideoBoxKey.speedsList); + await video.delete(VideoBoxKey.speedsList); speedList = GStorage.speedList; setState(() {}); }, diff --git a/lib/pages/setting/play_setting.dart b/lib/pages/setting/play_setting.dart index 493d9cc00..beb7c8dd7 100644 --- a/lib/pages/setting/play_setting.dart +++ b/lib/pages/setting/play_setting.dart @@ -3,11 +3,11 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPalaX/plugin/pl_player/index.dart'; import 'package:PiliPalaX/services/service_locator.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:hive/hive.dart'; import '../../models/video/play/subtitle.dart'; import 'widgets/switch_item.dart'; @@ -20,11 +20,12 @@ class PlaySetting extends StatefulWidget { } class _PlaySettingState extends State { - Box setting = GStorage.setting; late String defaultSubtitlePreference; late int defaultFullScreenMode; late int defaultBtmProgressBehavior; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); diff --git a/lib/pages/setting/privacy_setting.dart b/lib/pages/setting/privacy_setting.dart index 2432aa2dd..2c3f0974a 100644 --- a/lib/pages/setting/privacy_setting.dart +++ b/lib/pages/setting/privacy_setting.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/interceptor_anonymity.dart'; import 'package:PiliPalaX/utils/storage.dart'; @@ -17,14 +16,13 @@ class PrivacySetting extends StatefulWidget { class _PrivacySettingState extends State { bool userLogin = false; - Box userInfoCache = GStorage.userInfo; UserInfoData? userInfo; late bool hiddenSettingUnlocked; @override void initState() { super.initState(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); userLogin = userInfo != null; hiddenSettingUnlocked = GStorage.setting .get(SettingBoxKey.hiddenSettingUnlocked, defaultValue: false); diff --git a/lib/pages/setting/recommend_setting.dart b/lib/pages/setting/recommend_setting.dart index 472f202a1..90b13c816 100644 --- a/lib/pages/setting/recommend_setting.dart +++ b/lib/pages/setting/recommend_setting.dart @@ -19,10 +19,7 @@ class RecommendSetting extends StatefulWidget { } class _RecommendSettingState extends State { - Box setting = GStorage.setting; - static Box localCache = GStorage.localCache; late dynamic defaultRcmdType; - Box userInfoCache = GStorage.userInfo; late dynamic userInfo; bool userLogin = false; late dynamic accessKeyInfo; @@ -31,15 +28,18 @@ class _RecommendSettingState extends State { late int minLikeRatioForRecommend; late String banWordForRecommend; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); // 首页默认推荐类型 defaultRcmdType = setting.get(SettingBoxKey.defaultRcmdType, defaultValue: 'app'); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); userLogin = userInfo != null; - accessKeyInfo = localCache.get(LocalCacheKey.accessKey, defaultValue: null); + accessKeyInfo = + GStorage.localCache.get(LocalCacheKey.accessKey, defaultValue: null); // filterUnfollowedRatio = setting // .get(SettingBoxKey.filterUnfollowedRatio, defaultValue: 0); minDurationForRcmd = diff --git a/lib/pages/setting/sponsor_block_page.dart b/lib/pages/setting/sponsor_block_page.dart index 6fc9bd0be..f5381fcab 100644 --- a/lib/pages/setting/sponsor_block_page.dart +++ b/lib/pages/setting/sponsor_block_page.dart @@ -11,6 +11,7 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; +import 'package:hive/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:uuid/uuid.dart'; @@ -33,6 +34,8 @@ class _SponsorBlockPageState extends State { late bool _blockTrack; bool? _serverStatus; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); @@ -116,8 +119,7 @@ class _SponsorBlockPageState extends State { Get.back(); _blockLimit = max( 0.0, double.tryParse(_textController.text) ?? 0.0); - await GStorage.setting - .put(SettingBoxKey.blockLimit, _blockLimit); + await setting.put(SettingBoxKey.blockLimit, _blockLimit); setState(() {}); }, child: Text('确定'), @@ -180,8 +182,7 @@ class _SponsorBlockPageState extends State { onPressed: () async { Get.back(); _userId = Uuid().v4().replaceAll('-', ''); - await GStorage.setting - .put(SettingBoxKey.blockUserID, _userId); + await setting.put(SettingBoxKey.blockUserID, _userId); setState(() {}); }, child: Text('随机'), @@ -200,8 +201,7 @@ class _SponsorBlockPageState extends State { if (key.currentState?.validate() == true) { Get.back(); _userId = _textController.text; - await GStorage.setting - .put(SettingBoxKey.blockUserID, _userId); + await setting.put(SettingBoxKey.blockUserID, _userId); setState(() {}); } }, @@ -216,13 +216,13 @@ class _SponsorBlockPageState extends State { void _updateBlockToast() async { _blockToast = !_blockToast; - await GStorage.setting.put(SettingBoxKey.blockToast, _blockToast); + await setting.put(SettingBoxKey.blockToast, _blockToast); setState(() {}); } void _updateBlockTrack() async { _blockTrack = !_blockTrack; - await GStorage.setting.put(SettingBoxKey.blockTrack, _blockTrack); + await setting.put(SettingBoxKey.blockTrack, _blockTrack); setState(() {}); } @@ -298,8 +298,8 @@ class _SponsorBlockPageState extends State { onPressed: () async { Get.back(); _blockServer = HttpString.sponsorBlockBaseUrl; - await GStorage.setting - .put(SettingBoxKey.blockServer, _blockServer); + await setting.put( + SettingBoxKey.blockServer, _blockServer); setState(() {}); }, child: Text('重置'), @@ -317,8 +317,8 @@ class _SponsorBlockPageState extends State { onPressed: () async { Get.back(); _blockServer = _textController.text; - await GStorage.setting - .put(SettingBoxKey.blockServer, _blockServer); + await setting.put( + SettingBoxKey.blockServer, _blockServer); setState(() {}); }, child: Text('确定'), @@ -439,7 +439,7 @@ class _SponsorBlockPageState extends State { callback: (Color? color) async { _blockColor[index] = color ?? _blockSettings[index].first.color; - await GStorage.setting.put( + await setting.put( SettingBoxKey.blockColor, _blockColor .map((item) => @@ -491,7 +491,7 @@ class _SponsorBlockPageState extends State { initialValue: _blockSettings[index].second, onSelected: (item) async { _blockSettings[index].second = item; - await GStorage.setting.put(SettingBoxKey.blockSettings, + await setting.put(SettingBoxKey.blockSettings, _blockSettings.map((item) => item.second.index).toList()); setState(() {}); }, diff --git a/lib/pages/setting/style_setting.dart b/lib/pages/setting/style_setting.dart index 97b2a9477..3261ac02d 100644 --- a/lib/pages/setting/style_setting.dart +++ b/lib/pages/setting/style_setting.dart @@ -4,13 +4,13 @@ import 'package:auto_orientation/auto_orientation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/common/theme_type.dart'; import 'package:PiliPalaX/pages/setting/pages/color_select.dart'; import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPalaX/pages/setting/widgets/slide_dialog.dart'; import 'package:PiliPalaX/utils/global_data.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:hive/hive.dart'; import '../../models/common/dynamic_badge_mode.dart'; import '../../models/common/up_panel_position.dart'; @@ -31,11 +31,12 @@ class _StyleSettingState extends State { final ColorSelectController colorSelectController = Get.put(ColorSelectController()); - Box setting = GStorage.setting; late ThemeType _tempThemeValue; late double maxRowWidth; late UpPanelPosition upPanelPosition; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); diff --git a/lib/pages/setting/video_setting.dart b/lib/pages/setting/video_setting.dart index 7592044bc..5ffcaca9a 100644 --- a/lib/pages/setting/video_setting.dart +++ b/lib/pages/setting/video_setting.dart @@ -18,7 +18,6 @@ class VideoSetting extends StatefulWidget { } class _VideoSettingState extends State { - Box setting = GStorage.setting; late dynamic defaultVideoQa; late dynamic defaultVideoQaCellular; late dynamic defaultAudioQa; @@ -29,6 +28,8 @@ class _VideoSettingState extends State { late dynamic videoSync; late dynamic defaultCDNService; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); diff --git a/lib/pages/setting/widgets/select_item.dart b/lib/pages/setting/widgets/select_item.dart index 71e985b44..36329e9b3 100644 --- a/lib/pages/setting/widgets/select_item.dart +++ b/lib/pages/setting/widgets/select_item.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/video/play/quality.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:hive/hive.dart'; class SetSelectItem extends StatefulWidget { final String? title; @@ -19,12 +19,13 @@ class SetSelectItem extends StatefulWidget { } class _SetSelectItemState extends State { - Box setting = GStorage.setting; late dynamic currentVal; late int currentIndex; late List menus; late List popMenuItems; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); diff --git a/lib/pages/subscription/controller.dart b/lib/pages/subscription/controller.dart index ebc4757ca..db843074c 100644 --- a/lib/pages/subscription/controller.dart +++ b/lib/pages/subscription/controller.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/models/user/info.dart'; import 'package:PiliPalaX/utils/storage.dart'; @@ -11,14 +10,13 @@ import '../../models/user/sub_folder.dart'; class SubController extends GetxController { final ScrollController scrollController = ScrollController(); Rx subFolderData = SubFolderModelData().obs; - Box userInfoCache = GStorage.userInfo; UserInfoData? userInfo; int currentPage = 1; int pageSize = 20; RxBool hasMore = true.obs; Future querySubFolder({type = 'init'}) async { - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); if (userInfo == null) { return {'status': false, 'msg': '账号未登录'}; } diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index ec2181dca..b3d23c8be 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -34,6 +34,7 @@ import 'package:PiliPalaX/plugin/pl_player/index.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:PiliPalaX/utils/video_utils.dart'; +import 'package:hive/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import '../../../utils/id_utils.dart'; @@ -206,6 +207,8 @@ class VideoDetailController extends GetxController Floating? floating; late PreferredSizeWidget headerControl; + Box get setting => GStorage.setting; + // late bool enableCDN; int? cacheVideoQa; late String cacheDecode; @@ -285,7 +288,7 @@ class VideoDetailController extends GetxController hwdec.value = setting.get(SettingBoxKey.hardwareDecoding, defaultValue: Platform.isAndroid ? 'auto-safe' : 'auto'); if (userInfo == null || - localCache.get(LocalCacheKey.historyPause) == true) { + GStorage.localCache.get(LocalCacheKey.historyPause) == true) { enableHeart = false; } danmakuCid.value = cid.value; diff --git a/lib/pages/video/detail/introduction/controller.dart b/lib/pages/video/detail/introduction/controller.dart index 0baff7bcf..e28737376 100644 --- a/lib/pages/video/detail/introduction/controller.dart +++ b/lib/pages/video/detail/introduction/controller.dart @@ -9,7 +9,6 @@ import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:get/get_navigation/src/dialog/dialog_route.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/constants.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/http/video.dart'; @@ -60,7 +59,6 @@ class VideoIntroController extends GetxController RxBool hasCoin = false.obs; // 是否收藏 RxBool hasFav = false.obs; - Box userInfoCache = GStorage.userInfo; bool userLogin = false; Rx favFolderData = FavFolderData().obs; List addMediaIdsNew = []; @@ -85,7 +83,7 @@ class VideoIntroController extends GetxController @override void onInit() { super.onInit(); - userInfo = userInfoCache.get('userInfoCache'); + userInfo = GStorage.userInfo.get('userInfoCache'); try { if (heroTag.isEmpty) { heroTag = Get.arguments['heroTag']; @@ -114,8 +112,8 @@ class VideoIntroController extends GetxController } userLogin = userInfo != null; lastPlayCid.value = int.parse(Get.parameters['cid']!); - isShowOnlineTotal = - setting.get(SettingBoxKey.enableOnlineTotal, defaultValue: true); + isShowOnlineTotal = GStorage.setting + .get(SettingBoxKey.enableOnlineTotal, defaultValue: true); startTimer(); queryVideoIntro(); } diff --git a/lib/pages/video/detail/reply/widgets/reply_item.dart b/lib/pages/video/detail/reply/widgets/reply_item.dart index 514c4a6d6..938f050da 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item.dart @@ -8,7 +8,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/common/widgets/badge.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/models/common/reply_type.dart'; @@ -21,8 +20,6 @@ import 'package:PiliPalaX/utils/utils.dart'; import '../../../../../utils/app_scheme.dart'; import 'zan.dart'; -Box setting = GStorage.setting; - class ReplyItem extends StatelessWidget { const ReplyItem({ super.key, @@ -746,8 +743,8 @@ class ReplyItem extends StatelessWidget { ); } else { String appUrlSchema = ''; - final bool enableWordRe = setting.get(SettingBoxKey.enableWordRe, - defaultValue: false) as bool; + final bool enableWordRe = GStorage.setting + .get(SettingBoxKey.enableWordRe, defaultValue: false) as bool; if (content.jumpUrl[matchStr] != null && !matchedStrs.contains(matchStr)) { appUrlSchema = content.jumpUrl[matchStr]['app_url_schema']; diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index c6e3175ea..70f76be29 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -73,8 +73,6 @@ class _VideoDetailPageState extends State PlayerStatus playerStatus = PlayerStatus.playing; double doubleOffset = 0; - final Box localCache = GStorage.localCache; - final Box setting = GStorage.setting; late Future _futureBuilderFuture; // 自动退出全屏 late bool autoExitFullscreen; @@ -103,6 +101,8 @@ class _VideoDetailPageState extends State StreamSubscription? _listenerLoadingState; StreamSubscription? _listenerCid; + Box get setting => GStorage.setting; + @override void initState() { super.initState(); diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index e89df009e..06c64158f 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -55,8 +55,6 @@ class _HeaderControlState extends State { static const TextStyle subTitleStyle = TextStyle(fontSize: 12); static const TextStyle titleStyle = TextStyle(fontSize: 14); Size get preferredSize => const Size(double.infinity, kToolbarHeight); - final Box localCache = GStorage.localCache; - final Box videoStorage = GStorage.video; double buttonSpace = 8; // bool isFullScreen = false; late String heroTag; @@ -68,6 +66,7 @@ class _HeaderControlState extends State { Timer? clock; late String defaultCDNService; bool get isFullScreen => widget.controller!.isFullScreen.value; + Box get setting => GStorage.setting; @override void initState() { @@ -1046,7 +1045,7 @@ class _HeaderControlState extends State { {'value': 1.0, 'label': '满屏'}, ]; // 智能云屏蔽 - int danmakuWeight = widget.controller!.danmakuWeight.value; + int danmakuWeight = widget.controller!.danmakuWeight; // 显示区域 double showArea = widget.controller!.showArea; // 不透明度 @@ -1116,7 +1115,7 @@ class _HeaderControlState extends State { arguments: widget.controller) }, child: Text( - "屏蔽管理(${widget.controller!.danmakuFilterRule.value.length})")), + "屏蔽管理(${widget.controller!.danmakuFilterRule.length})")), ], ), Padding( @@ -1143,8 +1142,7 @@ class _HeaderControlState extends State { label: '$danmakuWeight', onChanged: (double val) { danmakuWeight = val.toInt(); - widget.controller!.danmakuWeight.value = - danmakuWeight; + widget.controller!.danmakuWeight = danmakuWeight; widget.controller!.putDanmakuSettings(); setState(() {}); }, diff --git a/lib/pages/whisper_detail/controller.dart b/lib/pages/whisper_detail/controller.dart index 7589af1f2..b158d8b51 100644 --- a/lib/pages/whisper_detail/controller.dart +++ b/lib/pages/whisper_detail/controller.dart @@ -3,7 +3,6 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/msg.dart'; import 'package:PiliPalaX/models/msg/session.dart'; import '../../utils/feed_back.dart'; @@ -18,7 +17,6 @@ class WhisperDetailController extends GetxController { //表情转换图片规则 List? eInfos; final TextEditingController replyContentController = TextEditingController(); - Box userInfoCache = GStorage.userInfo; @override void onInit() { @@ -73,7 +71,7 @@ class WhisperDetailController extends GetxController { }) async { feedBack(); String message = replyContentController.text; - final userInfo = userInfoCache.get('userInfoCache'); + final userInfo = GStorage.userInfo.get('userInfoCache'); if (userInfo == null) { SmartDialog.dismiss(); SmartDialog.showToast('请先登录'); diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index 15ff7535a..665f65cad 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -13,13 +13,11 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:mime/mime.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/pages/whisper_detail/controller.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/models/video/reply/emote.dart'; import 'package:image_picker/image_picker.dart'; -import '../../utils/storage.dart'; import 'widget/chat_item.dart'; class WhisperDetailPage extends StatefulWidget { @@ -31,7 +29,6 @@ class WhisperDetailPage extends StatefulWidget { class _WhisperDetailPageState extends State { final _whisperDetailController = Get.put(WhisperDetailController()); - Box userInfoCache = GStorage.userInfo; late final _controller = ChatBottomPanelContainerController(); late final _focusNode = FocusNode(); PanelType _currentPanelType = PanelType.none; diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 9e53229f9..ca9a2eb64 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -25,10 +25,6 @@ import 'package:PiliPalaX/utils/storage.dart'; import 'package:screen_brightness/screen_brightness.dart'; import 'package:universal_platform/universal_platform.dart'; -Box videoStorage = GStorage.video; -Box setting = GStorage.setting; -Box localCache = GStorage.localCache; - class PlPlayerController { Player? _videoPlayerController; VideoController? _videoController; @@ -117,6 +113,8 @@ class PlPlayerController { final RxBool showVP = true.obs; final RxList segmentList = [].obs; + Box get setting => GStorage.setting; + // final Durations durations; static List> videoFitType = [ @@ -236,9 +234,8 @@ class PlPlayerController { Rx isOpenDanmu = false.obs; /// 弹幕权重 - ValueNotifier danmakuWeight = ValueNotifier(0); - ValueNotifier>> danmakuFilterRule = - ValueNotifier([]); + int danmakuWeight = 0; + List danmakuFilterRule = []; // 关联弹幕控制器 DanmakuController? danmakuController; bool showDanmaku = true; @@ -331,17 +328,16 @@ class PlPlayerController { await _instance?.setVolume(volumeNew, videoPlayerVolume: videoPlayerVolume); } + Box get video => GStorage.video; + // 添加一个私有构造函数 PlPlayerController._() { _videoType = videoType; isOpenDanmu.value = setting.get(SettingBoxKey.enableShowDanmaku, defaultValue: true); - danmakuWeight.value = - setting.get(SettingBoxKey.danmakuWeight, defaultValue: 0); - danmakuFilterRule.value = localCache.get(LocalCacheKey.danmakuFilterRule, - defaultValue: []).map>((e) { - return Map.from(e); - }).toList(); + danmakuWeight = setting.get(SettingBoxKey.danmakuWeight, defaultValue: 0); + danmakuFilterRule = GStorage.localCache + .get(LocalCacheKey.danmakuFilterRule, defaultValue: []); blockTypes = setting.get(SettingBoxKey.danmakuBlockType, defaultValue: []); showArea = setting.get(SettingBoxKey.danmakuShowArea, defaultValue: 0.5); // 不透明度 @@ -364,19 +360,19 @@ class PlPlayerController { playRepeat = PlayRepeat.values.toList().firstWhere( (e) => e.value == - videoStorage.get(VideoBoxKey.playRepeat, + video.get(VideoBoxKey.playRepeat, defaultValue: PlayRepeat.pause.value), ); _playbackSpeed.value = - videoStorage.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0); + video.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0); enableAutoLongPressSpeed = setting .get(SettingBoxKey.enableAutoLongPressSpeed, defaultValue: false); // 后台播放 _continuePlayInBackground.value = setting .get(SettingBoxKey.continuePlayInBackground, defaultValue: false); if (!enableAutoLongPressSpeed) { - _longPressSpeed.value = videoStorage - .get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0); + _longPressSpeed.value = + video.get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0); } enableLongShowControl = setting.get(SettingBoxKey.enableLongShowControl, defaultValue: false); @@ -860,8 +856,7 @@ class PlPlayerController { // 还原默认速度 Future setDefaultSpeed() async { - double speed = - videoStorage.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0); + double speed = video.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0); await _videoPlayerController?.setRate(speed); _playbackSpeed.value = speed; } @@ -1073,12 +1068,12 @@ class PlPlayerController { int index = attrs.indexOf(_videoFit.value); SmartDialog.showToast(videoFitType[index]['toast'], displayTime: const Duration(seconds: 1)); - videoStorage.put(VideoBoxKey.cacheVideoFit, index); + video.put(VideoBoxKey.cacheVideoFit, index); } /// 读取fit Future getVideoFit() async { - int fitValue = videoStorage.get(VideoBoxKey.cacheVideoFit, defaultValue: 0); + int fitValue = video.get(VideoBoxKey.cacheVideoFit, defaultValue: 0); var attr = videoFitType[fitValue]['attr']; // 由于none与scaleDown涉及视频原始尺寸,需要等待视频加载后再设置,否则尺寸会变为0,出现错误; if (attr == BoxFit.none || attr == BoxFit.scaleDown) { @@ -1088,7 +1083,7 @@ class PlPlayerController { if (status == DataStatus.loaded) { _dataListenerForVideoFit.cancel(); int fitValue = - videoStorage.get(VideoBoxKey.cacheVideoFit, defaultValue: 0); + video.get(VideoBoxKey.cacheVideoFit, defaultValue: 0); var attr = videoFitType[fitValue]['attr']; if (attr == BoxFit.none || attr == BoxFit.scaleDown) { _videoFit.value = attr; @@ -1113,7 +1108,7 @@ class PlPlayerController { /// 读取亮度 // Future getVideoBrightness() async { // double brightnessValue = - // videoStorage.get(VideoBoxKey.videoBrightness, defaultValue: 0.5); + // video.get(VideoBoxKey.videoBrightness, defaultValue: 0.5); // setBrightness(brightnessValue); // } @@ -1271,11 +1266,11 @@ class PlPlayerController { setPlayRepeat(PlayRepeat type) { playRepeat = type; - videoStorage.put(VideoBoxKey.playRepeat, type.value); + video.put(VideoBoxKey.playRepeat, type.value); } void putDanmakuSettings() { - setting.put(SettingBoxKey.danmakuWeight, danmakuWeight.value); + setting.put(SettingBoxKey.danmakuWeight, danmakuWeight); setting.put(SettingBoxKey.danmakuBlockType, blockTypes); setting.put(SettingBoxKey.danmakuShowArea, showArea); setting.put(SettingBoxKey.danmakuOpacity, opacityVal); diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 691a8e7c4..958ac9b4b 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -11,7 +11,6 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_volume_controller/flutter_volume_controller.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; @@ -97,7 +96,6 @@ class _PLVideoPlayerState extends State // final RxDouble _distance = 0.0.obs; final RxBool _volumeInterceptEventStream = false.obs; - Box setting = GStorage.setting; late FullScreenMode mode; late int defaultBtmProgressBehavior; late bool enableQuickDouble; @@ -161,11 +159,12 @@ class _PLVideoPlayerState extends State plPlayerController.headerControl = widget.headerControl; plPlayerController.bottomControl = widget.bottomControl; plPlayerController.danmuWidget = widget.danmuWidget; - defaultBtmProgressBehavior = setting.get(SettingBoxKey.btmProgressBehavior, + defaultBtmProgressBehavior = GStorage.setting.get( + SettingBoxKey.btmProgressBehavior, defaultValue: BtmProgressBehavior.values.first.code); - enableQuickDouble = - setting.get(SettingBoxKey.enableQuickDouble, defaultValue: true); - fullScreenGestureReverse = setting + enableQuickDouble = GStorage.setting + .get(SettingBoxKey.enableQuickDouble, defaultValue: true); + fullScreenGestureReverse = GStorage.setting .get(SettingBoxKey.fullScreenGestureReverse, defaultValue: false); Future.microtask(() async { try { diff --git a/lib/router/app_pages.dart b/lib/router/app_pages.dart index 7b36a6f35..a9681e851 100644 --- a/lib/router/app_pages.dart +++ b/lib/router/app_pages.dart @@ -1,5 +1,3 @@ -// ignore_for_file: must_be_immutable - import 'package:PiliPalaX/pages/member/new/member_page.dart'; import 'package:PiliPalaX/pages/member/new/widget/edit_profile_page.dart'; import 'package:PiliPalaX/pages/setting/navigation_bar_set.dart'; @@ -8,7 +6,6 @@ import 'package:PiliPalaX/pages/video/detail/introduction/widgets/create_fav_pag import 'package:PiliPalaX/pages/webview/webview_page.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/pages/msg_feed_top/at_me/view.dart'; import 'package:PiliPalaX/pages/msg_feed_top/reply_me/view.dart'; import 'package:PiliPalaX/pages/msg_feed_top/like_me/view.dart'; @@ -59,9 +56,6 @@ import '../pages/video/detail/index.dart'; import '../pages/video/detail/reply_reply/index.dart'; import '../pages/whisper/index.dart'; import '../pages/whisper_detail/index.dart'; -import '../utils/storage.dart'; - -Box setting = GStorage.setting; class Routes { static final List> getPages = [ @@ -187,14 +181,13 @@ class CustomGetPage extends GetPage { CustomGetPage({ required super.name, required super.page, - this.fullscreen, + bool fullscreen = false, super.transitionDuration, }) : super( curve: Curves.linear, transition: Transition.native, showCupertinoParallax: false, popGesture: false, - fullscreenDialog: fullscreen != null && fullscreen, + fullscreenDialog: fullscreen, ); - bool? fullscreen = false; } diff --git a/lib/services/audio_handler.dart b/lib/services/audio_handler.dart index 151fc3055..13370f36f 100644 --- a/lib/services/audio_handler.dart +++ b/lib/services/audio_handler.dart @@ -1,6 +1,5 @@ import 'package:audio_service/audio_service.dart'; import 'package:flutter/cupertino.dart'; -import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/bangumi/info.dart'; import 'package:PiliPalaX/models/video_detail_res.dart'; import 'package:PiliPalaX/plugin/pl_player/index.dart'; @@ -24,7 +23,6 @@ Future initAudioService() async { class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { static final List _item = []; - Box setting = GStorage.setting; bool enableBackgroundPlay = true; // PlPlayerController player = PlPlayerController.getInstance(); @@ -33,8 +31,8 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { } revalidateSetting() { - enableBackgroundPlay = - setting.get(SettingBoxKey.enableBackgroundPlay, defaultValue: true); + enableBackgroundPlay = GStorage.setting + .get(SettingBoxKey.enableBackgroundPlay, defaultValue: true); } @override diff --git a/lib/utils/data.dart b/lib/utils/data.dart index 9344a1bc7..a6300b2a8 100644 --- a/lib/utils/data.dart +++ b/lib/utils/data.dart @@ -1,4 +1,3 @@ -import 'package:hive/hive.dart'; import 'package:PiliPalaX/http/user.dart'; import 'storage.dart'; @@ -9,14 +8,12 @@ class Data { } static Future historyStatus() async { - Box localCache = GStorage.localCache; - Box userInfoCache = GStorage.userInfo; - if (userInfoCache.get('userInfoCache') == null) { + if (GStorage.userInfo.get('userInfoCache') == null) { return; } var res = await UserHttp.historyStatus(); if (res['status']) { - localCache.put(LocalCacheKey.historyPause, res['data']); + GStorage.localCache.put(LocalCacheKey.historyPause, res['data']); } } } diff --git a/lib/utils/feed_back.dart b/lib/utils/feed_back.dart index 4a29af212..6219abefb 100644 --- a/lib/utils/feed_back.dart +++ b/lib/utils/feed_back.dart @@ -1,12 +1,10 @@ import 'package:flutter/services.dart'; -import 'package:hive/hive.dart'; import 'storage.dart'; -Box setting = GStorage.setting; void feedBack() { // 设置中是否开启 - final bool enable = - setting.get(SettingBoxKey.feedBackEnable, defaultValue: false) as bool; + final bool enable = GStorage.setting + .get(SettingBoxKey.feedBackEnable, defaultValue: false) as bool; if (enable) { HapticFeedback.lightImpact(); } diff --git a/lib/utils/recommend_filter.dart b/lib/utils/recommend_filter.dart index 1d9f04838..57da0a4c6 100644 --- a/lib/utils/recommend_filter.dart +++ b/lib/utils/recommend_filter.dart @@ -1,4 +1,4 @@ -// import 'dart:math'; +import 'package:hive/hive.dart'; import 'storage.dart'; @@ -9,12 +9,14 @@ class RecommendFilter { static late bool exemptFilterForFollowed; static late bool applyFilterToRelatedVideos; static late String banWords; + RecommendFilter() { update(); } + static Box get setting => GStorage.setting; + static void update() { - var setting = GStorage.setting; // filterUnfollowedRatio = // setting.get(SettingBoxKey.filterUnfollowedRatio, defaultValue: 0); minDurationForRcmd = diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 0fe4e0baf..12a362c38 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -142,6 +142,9 @@ class GStorage { static List get blackMidsList => List.from(GStorage.localCache .get(LocalCacheKey.blackMidsList, defaultValue: [])); + static List get danmakuFilterRule => GStorage.localCache + .get(LocalCacheKey.danmakuFilterRule, defaultValue: []); + static void setBlackMidsList(blackMidsList) { if (blackMidsList is! List) return; GStorage.localCache.put(LocalCacheKey.blackMidsList, blackMidsList); diff --git a/lib/utils/wbi_sign.dart b/lib/utils/wbi_sign.dart index dff0ba426..59cf44552 100644 --- a/lib/utils/wbi_sign.dart +++ b/lib/utils/wbi_sign.dart @@ -9,7 +9,7 @@ import '../http/index.dart'; import 'storage.dart'; class WbiSign { - static Box localCache = GStorage.localCache; + static Box get localCache => GStorage.localCache; final List mixinKeyEncTab = [ 46, 47, @@ -104,7 +104,7 @@ class WbiSign { final String queryStr = query.join('&'); final String wbiSign = md5.convert(utf8.encode(queryStr + mixinKey)).toString(); // 计算 w_rid - return {'w_rid': wbiSign,'wts': currTime.toString()}; + return {'w_rid': wbiSign, 'wts': currTime.toString()}; } // 获取最新的 img_key 和 sub_key 可以从缓存中获取