fix: danmaku block

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-12-26 18:10:30 +08:00
parent d3c7b3830f
commit 79da08b285
59 changed files with 207 additions and 303 deletions

View File

@@ -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<AboutPage> {
}
class AboutController extends GetxController {
Box setting = GStorage.setting;
final SettingController settingController = Get.put(SettingController());
RxString currentVersion = ''.obs;
RxString remoteVersion = ''.obs;

View File

@@ -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);
}

View File

@@ -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 = 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) {

View File

@@ -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<BangumiPanel> {
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<BangumiPanel> {
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;
}

View File

@@ -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<int> danmakuWeightNotifier;
final ValueNotifier<List<Map<String, dynamic>>> danmakuFilterNotifier;
int danmakuWeight = 0;
List<Map<String, dynamic>> danmakuFilter = [];
final PlPlayerController plPlayerController;
Map<int, List<DanmakuElem>> dmSegMap = {};
// 已请求的段落标记
List<bool> 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<bool>.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'])) {

View File

@@ -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<PlDanmaku> {
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<PlDanmaku> {
@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(

View File

@@ -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<DanmakuBlockPage> {
final DanmakuBlockController _danmakuBlockController =
Get.put(DanmakuBlockController());
final ScrollController scrollController = ScrollController();
Box localCache = GStorage.localCache;
late PlPlayerController plPlayerController;
static const Map<int, String> ruleLabels = {
@@ -38,7 +36,7 @@ class _DanmakuBlockPageState extends State<DanmakuBlockPage> {
}
@override
void dispose() {
void dispose() async {
List<Map<String, dynamic>> simpleRuleList = _danmakuBlockController
.ruleTypes.values
.expand((element) => element)
@@ -50,10 +48,10 @@ class _DanmakuBlockPageState extends State<DanmakuBlockPage> {
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<DanmakuBlockPage> {
Text(hintText),
TextField(
controller: textController,
autofocus: true,
//decoration: InputDecoration(hintText: hintText),
)
]),

View File

@@ -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<Widget> 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<UpItem> hasUpdatedUps = <UpItem>[];
List<UpItem> allFollowedUps = <UpItem>[];
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(

View File

@@ -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<DynamicsPage>
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<DynamicsPage>
});
}
});
upPanelPosition = UpPanelPosition.values[setting.get(
upPanelPosition = UpPanelPosition.values[GStorage.setting.get(
SettingBoxKey.upPanelPosition,
defaultValue: UpPanelPosition.leftFixed.index)];
debugPrint('upPanelPosition: $upPanelPosition');

View File

@@ -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<UpPanel> {
int currentMid = -1;
List<UpItem> upList = [];
List<LiveUserItem> liveList = [];
Box userInfoCache = GStorage.userInfo;
dynamic userInfo;
bool _showLiveItems = false;
late DynamicsController dynamicsController;
@@ -30,7 +28,7 @@ class _UpPanelState extends State<UpPanel> {
@override
void initState() {
super.initState();
userInfo = userInfoCache.get('userInfoCache');
userInfo = GStorage.userInfo.get('userInfoCache');
dynamicsController = Get.find<DynamicsController>();
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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,

View File

@@ -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<BottomControl> {
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() {

View File

@@ -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<bool> bottomBarStream =
StreamController<bool>.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或其他合适的值

View File

@@ -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<MainApp>
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<MainApp>
_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);
}

View File

@@ -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) {

View File

@@ -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'] ?? '';

View File

@@ -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 = UserStat().obs;
RxBool userLogin = false.obs;
Box userInfoCache = GStorage.userInfo;
Box setting = GStorage.setting;
Rx<ThemeType> 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,

View File

@@ -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<Widget> tabsPageList;
Box setting = GStorage.setting;
// late final StreamController<bool> searchBarStream =
// StreamController<bool>.broadcast();
late bool enableGradientBg;

View File

@@ -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<DynamicBadgeMode> 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<MainController>()) {

View File

@@ -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<ExtraSetting> {
Box setting = GStorage.setting;
final SettingController settingController = Get.put(SettingController());
late dynamic defaultReplySort;
late dynamic defaultDynamicType;
@@ -36,6 +35,8 @@ class _ExtraSettingState extends State<ExtraSetting> {
late String defaultSystemProxyPort;
bool userLogin = false;
Box get setting => GStorage.setting;
@override
void initState() {
super.initState();
@@ -201,8 +202,8 @@ class _ExtraSettingState extends State<ExtraSetting> {
TextButton(
onPressed: () {
Get.back();
GStorage.setting
.put(SettingBoxKey.dynamicPeriod, dynamicPeriod);
setting.put(
SettingBoxKey.dynamicPeriod, dynamicPeriod);
Get.find<MainController>().dynamicPeriod =
dynamicPeriod;
},

View File

@@ -219,13 +219,14 @@ class _ColorSelectPageState extends State<ColorSelectPage> {
}
class ColorSelectController extends GetxController {
Box setting = GStorage.setting;
RxBool dynamicColor = true.obs;
RxInt type = 0.obs;
late final List<Map<String, dynamic>> colorThemes;
RxInt currentColor = 0.obs;
RxDouble currentTextScale = 1.0.obs;
Box get setting => GStorage.setting;
@override
void onInit() {
colorThemes = colorThemeTypes;

View File

@@ -16,7 +16,8 @@ class _SetDisplayModeState extends State<SetDisplayMode> {
List<DisplayMode> modes = <DisplayMode>[];
DisplayMode? active;
DisplayMode? preferred;
Box setting = GStorage.setting;
Box get setting => GStorage.setting;
final ValueNotifier<int> page = ValueNotifier<int>(0);
late final PageController controller = PageController()

View File

@@ -11,13 +11,14 @@ class FontSizeSelectPage extends StatefulWidget {
}
class _FontSizeSelectPageState extends State<FontSizeSelectPage> {
Box setting = GStorage.setting;
List<double> 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();

View File

@@ -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<TabbarSetPage> {
Box settingStorage = GStorage.setting;
late List defaultTabs;
late List<String> tabbarSort;
@@ -20,7 +18,7 @@ class _TabbarSetPageState extends State<TabbarSetPage> {
void initState() {
super.initState();
defaultTabs = tabsConfig;
tabbarSort = settingStorage
tabbarSort = GStorage.setting
.get(SettingBoxKey.tabbarSort,
defaultValue: ['live', 'rcmd', 'hot', 'rank', 'bangumi'])
.map<String>((i) => i.toString())
@@ -43,7 +41,7 @@ class _TabbarSetPageState extends State<TabbarSetPage> {
.where((i) => tabbarSort.contains((i['type'] as TabType).id))
.map<String>((i) => (i['type'] as TabType).id)
.toList();
settingStorage.put(SettingBoxKey.tabbarSort, sortedTabbar);
GStorage.setting.put(SettingBoxKey.tabbarSort, sortedTabbar);
SmartDialog.showToast('保存成功,下次启动时生效');
}

View File

@@ -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<PlaySpeedPage> {
},
];
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<PlaySpeedPage> {
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<PlaySpeedPage> {
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<PlaySpeedPage> {
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<PlaySpeedPage> {
actions: [
TextButton(
onPressed: () async {
await videoStorage.delete(VideoBoxKey.speedsList);
await video.delete(VideoBoxKey.speedsList);
speedList = GStorage.speedList;
setState(() {});
},

View File

@@ -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<PlaySetting> {
Box setting = GStorage.setting;
late String defaultSubtitlePreference;
late int defaultFullScreenMode;
late int defaultBtmProgressBehavior;
Box get setting => GStorage.setting;
@override
void initState() {
super.initState();

View File

@@ -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<PrivacySetting> {
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);

View File

@@ -19,10 +19,7 @@ class RecommendSetting extends StatefulWidget {
}
class _RecommendSettingState extends State<RecommendSetting> {
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<RecommendSetting> {
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 =

View File

@@ -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<SponsorBlockPage> {
late bool _blockTrack;
bool? _serverStatus;
Box get setting => GStorage.setting;
@override
void initState() {
super.initState();
@@ -116,8 +119,7 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
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<SponsorBlockPage> {
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<SponsorBlockPage> {
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<SponsorBlockPage> {
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<SponsorBlockPage> {
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<SponsorBlockPage> {
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<SponsorBlockPage> {
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<SponsorBlockPage> {
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(() {});
},

View File

@@ -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<StyleSetting> {
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();

View File

@@ -18,7 +18,6 @@ class VideoSetting extends StatefulWidget {
}
class _VideoSettingState extends State<VideoSetting> {
Box setting = GStorage.setting;
late dynamic defaultVideoQa;
late dynamic defaultVideoQaCellular;
late dynamic defaultAudioQa;
@@ -29,6 +28,8 @@ class _VideoSettingState extends State<VideoSetting> {
late dynamic videoSync;
late dynamic defaultCDNService;
Box get setting => GStorage.setting;
@override
void initState() {
super.initState();

View File

@@ -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<SetSelectItem> {
Box setting = GStorage.setting;
late dynamic currentVal;
late int currentIndex;
late List menus;
late List<PopupMenuEntry> popMenuItems;
Box get setting => GStorage.setting;
@override
void initState() {
super.initState();

View File

@@ -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<SubFolderModelData> subFolderData = SubFolderModelData().obs;
Box userInfoCache = GStorage.userInfo;
UserInfoData? userInfo;
int currentPage = 1;
int pageSize = 20;
RxBool hasMore = true.obs;
Future<dynamic> querySubFolder({type = 'init'}) async {
userInfo = userInfoCache.get('userInfoCache');
userInfo = GStorage.userInfo.get('userInfoCache');
if (userInfo == null) {
return {'status': false, 'msg': '账号未登录'};
}

View File

@@ -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;

View File

@@ -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 = 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();
}

View File

@@ -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'];

View File

@@ -73,8 +73,6 @@ class _VideoDetailPageState extends State<VideoDetailPage>
PlayerStatus playerStatus = PlayerStatus.playing;
double doubleOffset = 0;
final Box<dynamic> localCache = GStorage.localCache;
final Box<dynamic> setting = GStorage.setting;
late Future _futureBuilderFuture;
// 自动退出全屏
late bool autoExitFullscreen;
@@ -103,6 +101,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
StreamSubscription? _listenerLoadingState;
StreamSubscription? _listenerCid;
Box get setting => GStorage.setting;
@override
void initState() {
super.initState();

View File

@@ -55,8 +55,6 @@ class _HeaderControlState extends State<HeaderControl> {
static const TextStyle subTitleStyle = TextStyle(fontSize: 12);
static const TextStyle titleStyle = TextStyle(fontSize: 14);
Size get preferredSize => const Size(double.infinity, kToolbarHeight);
final Box<dynamic> localCache = GStorage.localCache;
final Box<dynamic> videoStorage = GStorage.video;
double buttonSpace = 8;
// bool isFullScreen = false;
late String heroTag;
@@ -68,6 +66,7 @@ class _HeaderControlState extends State<HeaderControl> {
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<HeaderControl> {
{'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<HeaderControl> {
arguments: widget.controller)
},
child: Text(
"屏蔽管理(${widget.controller!.danmakuFilterRule.value.length})")),
"屏蔽管理(${widget.controller!.danmakuFilterRule.length})")),
],
),
Padding(
@@ -1143,8 +1142,7 @@ class _HeaderControlState extends State<HeaderControl> {
label: '$danmakuWeight',
onChanged: (double val) {
danmakuWeight = val.toInt();
widget.controller!.danmakuWeight.value =
danmakuWeight;
widget.controller!.danmakuWeight = danmakuWeight;
widget.controller!.putDanmakuSettings();
setState(() {});
},

View File

@@ -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<dynamic>? 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('请先登录');

View File

@@ -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<WhisperDetailPage> {
final _whisperDetailController = Get.put(WhisperDetailController());
Box userInfoCache = GStorage.userInfo;
late final _controller = ChatBottomPanelContainerController<PanelType>();
late final _focusNode = FocusNode();
PanelType _currentPanelType = PanelType.none;