mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
fix: danmaku block
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,9 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:PiliPalaX/utils/storage.dart';
|
||||
|
||||
Box<dynamic> 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),
|
||||
|
||||
@@ -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<dynamic> setting = GStorage.setting;
|
||||
|
||||
class NetworkImgLayer extends StatelessWidget {
|
||||
const NetworkImgLayer({
|
||||
super.key,
|
||||
|
||||
@@ -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<Cookie> 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);
|
||||
|
||||
|
||||
@@ -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,
|
||||
// <String, String?>{'mid': mid, 'value': accessKey});
|
||||
// } catch (_) {}
|
||||
// }
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<LoadingState> rcmdVideoList(
|
||||
@@ -76,7 +72,7 @@ class VideoHttp {
|
||||
{bool loginStatus = true, required int freshIdx}) async {
|
||||
Map<String, String> 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)]
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
]),
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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>();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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或其他合适的值
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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'] ?? '';
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>()) {
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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('保存成功,下次启动时生效');
|
||||
}
|
||||
|
||||
|
||||
@@ -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(() {});
|
||||
},
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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(() {});
|
||||
},
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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': '账号未登录'};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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'];
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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(() {});
|
||||
},
|
||||
|
||||
@@ -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('请先登录');
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<Segment> segmentList = <Segment>[].obs;
|
||||
|
||||
Box get setting => GStorage.setting;
|
||||
|
||||
// final Durations durations;
|
||||
|
||||
static List<Map<String, dynamic>> videoFitType = [
|
||||
@@ -236,9 +234,8 @@ class PlPlayerController {
|
||||
Rx<bool> isOpenDanmu = false.obs;
|
||||
|
||||
/// 弹幕权重
|
||||
ValueNotifier<int> danmakuWeight = ValueNotifier(0);
|
||||
ValueNotifier<List<Map<String, dynamic>>> 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<Map<String, dynamic>>((e) {
|
||||
return Map<String, dynamic>.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<void> 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<void> 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<void> 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);
|
||||
|
||||
@@ -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<PLVideoPlayer>
|
||||
// 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<PLVideoPlayer>
|
||||
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 {
|
||||
|
||||
@@ -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<dynamic> setting = GStorage.setting;
|
||||
|
||||
class Routes {
|
||||
static final List<GetPage<dynamic>> getPages = [
|
||||
@@ -187,14 +181,13 @@ class CustomGetPage extends GetPage<dynamic> {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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<VideoPlayerServiceHandler> initAudioService() async {
|
||||
|
||||
class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler {
|
||||
static final List<MediaItem> _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
|
||||
|
||||
@@ -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']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'storage.dart';
|
||||
|
||||
Box<dynamic> 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();
|
||||
}
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -142,6 +142,9 @@ class GStorage {
|
||||
static List<int> get blackMidsList => List<int>.from(GStorage.localCache
|
||||
.get(LocalCacheKey.blackMidsList, defaultValue: <int>[]));
|
||||
|
||||
static List get danmakuFilterRule => GStorage.localCache
|
||||
.get(LocalCacheKey.danmakuFilterRule, defaultValue: []);
|
||||
|
||||
static void setBlackMidsList(blackMidsList) {
|
||||
if (blackMidsList is! List<int>) return;
|
||||
GStorage.localCache.put(LocalCacheKey.blackMidsList, blackMidsList);
|
||||
|
||||
@@ -9,7 +9,7 @@ import '../http/index.dart';
|
||||
import 'storage.dart';
|
||||
|
||||
class WbiSign {
|
||||
static Box<dynamic> localCache = GStorage.localCache;
|
||||
static Box get localCache => GStorage.localCache;
|
||||
final List<int> mixinKeyEncTab = <int>[
|
||||
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 可以从缓存中获取
|
||||
|
||||
Reference in New Issue
Block a user