diff --git a/lib/common/constants.dart b/lib/common/constants.dart index 9bb16bb31..5cc3b3b3f 100644 --- a/lib/common/constants.dart +++ b/lib/common/constants.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; - import 'package:flutter/material.dart'; class StyleString { diff --git a/lib/common/skeleton/skeleton.dart b/lib/common/skeleton/skeleton.dart index 34e87f552..b17a55fca 100644 --- a/lib/common/skeleton/skeleton.dart +++ b/lib/common/skeleton/skeleton.dart @@ -13,8 +13,8 @@ class Skeleton extends StatelessWidget { var shimmerGradient = LinearGradient( colors: [ Colors.transparent, - Theme.of(context).colorScheme.background.withAlpha(10), - Theme.of(context).colorScheme.background.withAlpha(10), + Theme.of(context).colorScheme.surface.withAlpha(10), + Theme.of(context).colorScheme.surface.withAlpha(10), Colors.transparent, ], stops: const [ diff --git a/lib/common/skeleton/video_card_v.dart b/lib/common/skeleton/video_card_v.dart index c7a922eb5..faaeb48b8 100644 --- a/lib/common/skeleton/video_card_v.dart +++ b/lib/common/skeleton/video_card_v.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'skeleton.dart'; class VideoCardVSkeleton extends StatelessWidget { - const VideoCardVSkeleton({Key? key}) : super(key: key); + const VideoCardVSkeleton({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/common/skeleton/video_reply.dart b/lib/common/skeleton/video_reply.dart index be632ee4e..9c7e15c69 100644 --- a/lib/common/skeleton/video_reply.dart +++ b/lib/common/skeleton/video_reply.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'skeleton.dart'; class VideoReplySkeleton extends StatelessWidget { - const VideoReplySkeleton({Key? key}) : super(key: key); + const VideoReplySkeleton({super.key}); @override Widget build(BuildContext context) { diff --git a/lib/common/widgets/animated_dialog.dart b/lib/common/widgets/animated_dialog.dart index c2823305a..a2668e306 100644 --- a/lib/common/widgets/animated_dialog.dart +++ b/lib/common/widgets/animated_dialog.dart @@ -4,10 +4,10 @@ import 'package:flutter/material.dart'; class AnimatedDialog extends StatefulWidget { const AnimatedDialog({ - Key? key, + super.key, required this.videoItem, required this.closeFn, - }) : super(key: key); + }); final dynamic videoItem; final Function closeFn; diff --git a/lib/common/widgets/appbar.dart b/lib/common/widgets/appbar.dart index 9e8fc8ca1..fa376c50b 100644 --- a/lib/common/widgets/appbar.dart +++ b/lib/common/widgets/appbar.dart @@ -5,8 +5,8 @@ class AppBarWidget extends StatelessWidget implements PreferredSizeWidget { required this.child, required this.controller, required this.visible, - Key? key, - }) : super(key: key); + super.key, + }); final PreferredSizeWidget child; final AnimationController controller; diff --git a/lib/common/widgets/audio_video_progress_bar.dart b/lib/common/widgets/audio_video_progress_bar.dart index 5e9972de1..6e1307e55 100644 --- a/lib/common/widgets/audio_video_progress_bar.dart +++ b/lib/common/widgets/audio_video_progress_bar.dart @@ -74,7 +74,7 @@ class ProgressBar extends LeafRenderObjectWidget { /// When a user drags the thumb to a new location you can be notified /// by the [onSeek] callback so that you can update your audio/video player. const ProgressBar({ - Key? key, + super.key, required this.progress, required this.total, this.buffered, @@ -96,7 +96,7 @@ class ProgressBar extends LeafRenderObjectWidget { this.timeLabelType, this.timeLabelTextStyle, this.timeLabelPadding = 0.0, - }) : super(key: key); + }); /// The elapsed playing time of the media. /// @@ -257,7 +257,7 @@ class ProgressBar extends LeafRenderObjectWidget { final theme = Theme.of(context); final primaryColor = theme.colorScheme.primary; final textStyle = timeLabelTextStyle ?? theme.textTheme.bodyLarge; - final textScaleFactor = MediaQuery.textScaleFactorOf(context); + final textScaleFactor = MediaQuery.textScalerOf(context).scale(1); return _RenderProgressBar( progress: progress, total: total, @@ -274,7 +274,7 @@ class ProgressBar extends LeafRenderObjectWidget { thumbRadius: thumbRadius, thumbColor: thumbColor ?? primaryColor, thumbGlowColor: - thumbGlowColor ?? (thumbColor ?? primaryColor).withAlpha(80), + thumbGlowColor ?? (thumbColor ?? primaryColor).withAlpha(80), thumbGlowRadius: thumbGlowRadius, thumbCanPaintOutsideBar: thumbCanPaintOutsideBar, timeLabelLocation: timeLabelLocation ?? TimeLabelLocation.below, @@ -290,7 +290,7 @@ class ProgressBar extends LeafRenderObjectWidget { final theme = Theme.of(context); final primaryColor = theme.colorScheme.primary; final textStyle = timeLabelTextStyle ?? theme.textTheme.bodyLarge; - final textScaleFactor = MediaQuery.textScaleFactorOf(context); + final textScaleFactor = MediaQuery.textScalerOf(context).scale(1); (renderObject as _RenderProgressBar) ..progress = progress ..total = total @@ -958,7 +958,7 @@ class _RenderProgressBar extends RenderBox { // progress bar final barDy = - (isLabelBelow) ? 0.0 : _leftLabelSize.height + _timeLabelPadding; + (isLabelBelow) ? 0.0 : _leftLabelSize.height + _timeLabelPadding; _drawProgressBar(canvas, Offset(0, barDy), Size(barWidth, barHeight)); } @@ -1042,9 +1042,9 @@ class _RenderProgressBar extends RenderBox { void _drawBar( {required Canvas canvas, - required Size availableSize, - required double widthProportion, - required Color color}) { + required Size availableSize, + required double widthProportion, + required Color color}) { final strokeCap = (_barCapShape == BarCapShape.round) ? StrokeCap.round : StrokeCap.square; @@ -1085,7 +1085,7 @@ class _RenderProgressBar extends RenderBox { String _getTimeString(Duration time) { final minutes = - time.inMinutes.remainder(Duration.minutesPerHour).toString(); + time.inMinutes.remainder(Duration.minutesPerHour).toString(); final seconds = time.inSeconds .remainder(Duration.secondsPerMinute) .toString() @@ -1101,7 +1101,7 @@ class _RenderProgressBar extends RenderBox { // description config.textDirection = TextDirection.ltr; - config.label = '进度条';//'Progress bar'; + config.label = '进度条'; //'Progress bar'; config.value = '${(_thumbValue * 100).round()}%'; // increase action diff --git a/lib/common/widgets/content_container.dart b/lib/common/widgets/content_container.dart index 0abd4bf2a..66f767131 100644 --- a/lib/common/widgets/content_container.dart +++ b/lib/common/widgets/content_container.dart @@ -6,13 +6,13 @@ class ContentContainer extends StatelessWidget { final bool isScrollable; final Clip? childClipBehavior; - const ContentContainer( - {Key? key, - this.contentWidget, - this.bottomWidget, - this.isScrollable = true, - this.childClipBehavior}) - : super(key: key); + const ContentContainer({ + super.key, + this.contentWidget, + this.bottomWidget, + this.isScrollable = true, + this.childClipBehavior, + }); @override Widget build(BuildContext context) { diff --git a/lib/common/widgets/html_render.dart b/lib/common/widgets/html_render.dart index 8ecf6a4a5..0dce51efc 100644 --- a/lib/common/widgets/html_render.dart +++ b/lib/common/widgets/html_render.dart @@ -1,7 +1,6 @@ import 'package:PiliPalaX/pages/preview/view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_html/flutter_html.dart'; -import '../../utils/storage.dart'; import 'network_img_layer.dart'; // ignore: must_be_immutable @@ -21,8 +20,8 @@ class HtmlRender extends StatelessWidget { @override Widget build(BuildContext context) { - double textScale = - setting.get(SettingBoxKey.defaultTextScale, defaultValue: 1.0); + // double textScale = + // setting.get(SettingBoxKey.defaultTextScale, defaultValue: 1.0); return SelectionArea( child: Html( data: htmlContent, diff --git a/lib/common/widgets/list_sheet.dart b/lib/common/widgets/list_sheet.dart index ae74b4b05..c9f05c108 100644 --- a/lib/common/widgets/list_sheet.dart +++ b/lib/common/widgets/list_sheet.dart @@ -166,7 +166,7 @@ class _ListSheetContentState extends State title = episode.pagePart!; } else if (episode.runtimeType.toString() == "Part") { title = episode.pagePart!; - // print("未知类型:${episode.runtimeType}"); + // debugPrint("未知类型:${episode.runtimeType}"); } return ListTile( onTap: () { diff --git a/lib/common/widgets/live_card.dart b/lib/common/widgets/live_card.dart index 1131f0ddf..d4eab75eb 100644 --- a/lib/common/widgets/live_card.dart +++ b/lib/common/widgets/live_card.dart @@ -4,13 +4,12 @@ import '../constants.dart'; import 'network_img_layer.dart'; class LiveCard extends StatelessWidget { - // ignore: prefer_typing_uninitialized_variables final dynamic liveItem; const LiveCard({ - Key? key, + super.key, required this.liveItem, - }) : super(key: key); + }); @override Widget build(BuildContext context) { @@ -75,9 +74,8 @@ class LiveCard extends StatelessWidget { } class LiveContent extends StatelessWidget { - // ignore: prefer_typing_uninitialized_variables - final liveItem; - const LiveContent({Key? key, required this.liveItem}) : super(key: key); + final dynamic liveItem; + const LiveContent({super.key, required this.liveItem}); @override Widget build(BuildContext context) { return Padding( diff --git a/lib/common/widgets/network_img_layer.dart b/lib/common/widgets/network_img_layer.dart index 5e6fc584c..d052aec06 100644 --- a/lib/common/widgets/network_img_layer.dart +++ b/lib/common/widgets/network_img_layer.dart @@ -1,6 +1,5 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'package:hive/hive.dart'; import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/global_data.dart'; diff --git a/lib/common/widgets/pull_to_refresh_header.dart b/lib/common/widgets/pull_to_refresh_header.dart index 46db5138b..1ae881d23 100644 --- a/lib/common/widgets/pull_to_refresh_header.dart +++ b/lib/common/widgets/pull_to_refresh_header.dart @@ -70,7 +70,7 @@ class PullToRefreshHeader extends StatelessWidget { child: Container( alignment: Alignment.centerRight, margin: const EdgeInsets.only(right: 12.0), - child: RefreshImage(top, null), + child: RefreshImage(top: top), ), ), Column( @@ -93,7 +93,10 @@ class PullToRefreshHeader extends StatelessWidget { } class RefreshImage extends StatelessWidget { - const RefreshImage(this.top, Key? key) : super(key: key); + const RefreshImage({ + super.key, + required this.top, + }); final double top; diff --git a/lib/common/widgets/stat/danmu.dart b/lib/common/widgets/stat/danmu.dart index a754e8e96..556e94104 100644 --- a/lib/common/widgets/stat/danmu.dart +++ b/lib/common/widgets/stat/danmu.dart @@ -6,15 +6,14 @@ class StatDanMu extends StatelessWidget { final dynamic danmu; final String? size; - const StatDanMu({Key? key, this.theme, this.danmu, this.size}) - : super(key: key); + const StatDanMu({super.key, this.theme, this.danmu, this.size}); @override Widget build(BuildContext context) { Map colorObject = { 'white': Colors.white, 'gray': Theme.of(context).colorScheme.outline.withOpacity(0.8), - 'black': Theme.of(context).colorScheme.onBackground.withOpacity(0.7), + 'black': Theme.of(context).colorScheme.onSurface.withOpacity(0.7), }; Color color = colorObject[theme]!; return Row( diff --git a/lib/common/widgets/stat/view.dart b/lib/common/widgets/stat/view.dart index c4f7630be..a56e088cd 100644 --- a/lib/common/widgets/stat/view.dart +++ b/lib/common/widgets/stat/view.dart @@ -7,15 +7,14 @@ class StatView extends StatelessWidget { final String? size; final String? goto; - const StatView({Key? key, this.theme, this.view, this.size, this.goto}) - : super(key: key); + const StatView({super.key, this.theme, this.view, this.size, this.goto}); @override Widget build(BuildContext context) { Map colorObject = { 'white': Colors.white, 'gray': Theme.of(context).colorScheme.outline.withOpacity(0.8), - 'black': Theme.of(context).colorScheme.onBackground.withOpacity(0.7), + 'black': Theme.of(context).colorScheme.onSurface.withOpacity(0.7), }; Color color = colorObject[theme]!; return Row( diff --git a/lib/common/widgets/video_card_h.dart b/lib/common/widgets/video_card_h.dart index 3fb07ae71..8b19c141d 100644 --- a/lib/common/widgets/video_card_h.dart +++ b/lib/common/widgets/video_card_h.dart @@ -24,8 +24,7 @@ class VideoCardH extends StatelessWidget { this.showDanmaku = true, this.showPubdate = false, }); - // ignore: prefer_typing_uninitialized_variables - final videoItem; + final dynamic videoItem; final Function()? longPress; final Function()? longPressEnd; final String source; @@ -149,8 +148,7 @@ class VideoCardH extends StatelessWidget { } class VideoContent extends StatelessWidget { - // ignore: prefer_typing_uninitialized_variables - final videoItem; + final dynamic videoItem; final String source; final bool showOwner; final bool showView; diff --git a/lib/common/widgets/video_card_h_grpc.dart b/lib/common/widgets/video_card_h_grpc.dart index c226e8672..f63d9836e 100644 --- a/lib/common/widgets/video_card_h_grpc.dart +++ b/lib/common/widgets/video_card_h_grpc.dart @@ -1,18 +1,11 @@ import 'package:PiliPalaX/grpc/app/card/v1/card.pb.dart' as card; import 'package:PiliPalaX/utils/app_scheme.dart'; -import 'package:PiliPalaX/utils/id_utils.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; -import '../../http/search.dart'; import '../../utils/utils.dart'; import '../constants.dart'; import 'badge.dart'; import 'network_img_layer.dart'; -import 'stat/danmu.dart'; -import 'stat/view.dart'; -import 'video_popup_menu.dart'; // 视频卡片 - 水平布局 class VideoCardHGrpc extends StatelessWidget { @@ -27,7 +20,6 @@ class VideoCardHGrpc extends StatelessWidget { this.showDanmaku = true, this.showPubdate = false, }); - // ignore: prefer_typing_uninitialized_variables final card.Card videoItem; final Function()? longPress; final Function()? longPressEnd; @@ -40,7 +32,7 @@ class VideoCardHGrpc extends StatelessWidget { @override Widget build(BuildContext context) { final int aid = videoItem.smallCoverV5.base.args.aid.toInt(); - final String bvid = IdUtils.av2bv(aid); + // final String bvid = IdUtils.av2bv(aid); String type = 'video'; // try { // type = videoItem.type; @@ -158,7 +150,6 @@ class VideoCardHGrpc extends StatelessWidget { } class VideoContent extends StatelessWidget { - // ignore: prefer_typing_uninitialized_variables final card.Card videoItem; final String source; final bool showOwner; diff --git a/lib/common/widgets/video_card_v.dart b/lib/common/widgets/video_card_v.dart index 77e21c0a5..2b80e8268 100644 --- a/lib/common/widgets/video_card_v.dart +++ b/lib/common/widgets/video_card_v.dart @@ -1,4 +1,3 @@ -import 'package:PiliPalaX/models/bangumi/info.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -8,8 +7,6 @@ import '../../models/model_rec_video_item.dart'; import 'stat/danmu.dart'; import 'stat/view.dart'; import '../../http/dynamics.dart'; -import '../../http/search.dart'; -import '../../models/common/search_type.dart'; import '../../utils/id_utils.dart'; import '../../utils/utils.dart'; import '../constants.dart'; @@ -24,11 +21,11 @@ class VideoCardV extends StatelessWidget { final Function()? longPressEnd; const VideoCardV({ - Key? key, + super.key, required this.videoItem, this.longPress, this.longPressEnd, - }) : super(key: key); + }); bool isStringNumeric(String str) { RegExp numericRegex = RegExp(r'^\d+$'); @@ -218,7 +215,7 @@ class VideoCardV extends StatelessWidget { class VideoContent extends StatelessWidget { final dynamic videoItem; - const VideoContent({Key? key, required this.videoItem}) : super(key: key); + const VideoContent({super.key, required this.videoItem}); @override Widget build(BuildContext context) { return Expanded( @@ -312,9 +309,9 @@ class VideoStat extends StatelessWidget { final dynamic videoItem; const VideoStat({ - Key? key, + super.key, required this.videoItem, - }) : super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/common/widgets/video_card_v_member_home.dart b/lib/common/widgets/video_card_v_member_home.dart index 73329cb9b..85f8ccadf 100644 --- a/lib/common/widgets/video_card_v_member_home.dart +++ b/lib/common/widgets/video_card_v_member_home.dart @@ -1,22 +1,11 @@ -import 'package:PiliPalaX/models/bangumi/info.dart'; import 'package:PiliPalaX/models/space/item.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import '../../models/home/rcmd/result.dart'; -import '../../models/model_rec_video_item.dart'; -import 'stat/danmu.dart'; -import 'stat/view.dart'; -import '../../http/dynamics.dart'; -import '../../http/search.dart'; -import '../../models/common/search_type.dart'; -import '../../utils/id_utils.dart'; import '../../utils/utils.dart'; import '../constants.dart'; import 'badge.dart'; import 'network_img_layer.dart'; -import 'video_popup_menu.dart'; // 视频卡片 - 垂直布局 class VideoCardVMemberHome extends StatelessWidget { diff --git a/lib/grpc/grpc_repo.dart b/lib/grpc/grpc_repo.dart index 3ee9dcdf8..4cefe7f0b 100644 --- a/lib/grpc/grpc_repo.dart +++ b/lib/grpc/grpc_repo.dart @@ -16,6 +16,7 @@ import 'package:PiliPalaX/utils/login.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:fixnum/src/int64.dart'; +import 'package:flutter/material.dart'; import 'package:grpc/grpc.dart'; class GrpcRepo { @@ -116,7 +117,7 @@ class GrpcRepo { return defMsg(); } } catch (e1) { - print(e1.toString()); + debugPrint(e1.toString()); return defMsg(); } } diff --git a/lib/http/html.dart b/lib/http/html.dart index 5767ce0eb..8cbb7dc03 100644 --- a/lib/http/html.dart +++ b/lib/http/html.dart @@ -1,8 +1,9 @@ import 'dart:convert'; import 'package:PiliPalaX/models/dynamics/article_content_model.dart'; -import 'package:html/dom.dart'; -import 'package:html/parser.dart'; +import 'package:flutter/material.dart'; +import 'package:html/dom.dart' as dom; +import 'package:html/parser.dart' as parser; import 'index.dart'; class HtmlHttp { @@ -25,11 +26,11 @@ class HtmlHttp { extra: {'ua': 'pc'}, ); } - Document rootTree = parse(response.data); + dom.Document rootTree = parser.parse(response.data); // log(response.data.body.toString()); - Element body = rootTree.body!; - Element appDom = body.querySelector('#app')!; - Element authorHeader = appDom.querySelector('.fixed-author-header')!; + dom.Element body = rootTree.body!; + dom.Element appDom = body.querySelector('#app')!; + dom.Element authorHeader = appDom.querySelector('.fixed-author-header')!; // 头像 String avatar = authorHeader.querySelector('img')!.attributes['src']!; avatar = 'https:${avatar.split('@')[0]}'; @@ -38,7 +39,7 @@ class HtmlHttp { .text; // 动态详情 - Element opusDetail = appDom.querySelector('.opus-detail')!; + dom.Element opusDetail = appDom.querySelector('.opus-detail')!; // 发布时间 String updateTime = opusDetail.querySelector('.opus-module-author__pub__text')!.text; @@ -62,11 +63,11 @@ class HtmlHttp { 'avatar': avatar, 'uname': uname, 'updateTime': updateTime, - 'content': (test ?? '') + opusContent, + 'content': test + opusContent, 'commentId': int.parse(commentId) }; } catch (err) { - print('err: $err'); + debugPrint('err: $err'); } } @@ -80,10 +81,10 @@ class HtmlHttp { return; } try { - Document rootTree = parse(response.data); - Element body = rootTree.body!; - Element appDom = body.querySelector('#app')!; - Element authorHeader = appDom.querySelector('.up-left')!; + dom.Document rootTree = parser.parse(response.data); + dom.Element body = rootTree.body!; + dom.Element appDom = body.querySelector('#app')!; + dom.Element authorHeader = appDom.querySelector('.up-left')!; // 头像 // String avatar = // authorHeader.querySelector('.bili-avatar-img')!.attributes['data-src']!; @@ -94,14 +95,14 @@ class HtmlHttp { .group(1)! .replaceAll(r'\u002F', '/') .split('@')[0]; - // print(avatar); + // debugPrint(avatar); String uname = authorHeader.querySelector('.up-name')!.text.trim(); // 动态详情 - Element opusDetail = appDom.querySelector('.article-content')!; + dom.Element opusDetail = appDom.querySelector('.article-content')!; // 发布时间 // String updateTime = // opusDetail.querySelector('.opus-module-author__pub__text')!.text; - // print(updateTime); + // debugPrint(updateTime); // dynamic opusContent = @@ -124,10 +125,10 @@ class HtmlHttp { .toList(); isJsonContent = true; } catch (e) { - print('second: $e'); + debugPrint('second: $e'); } } catch (e) { - print('first: $e'); + debugPrint('first: $e'); } } } @@ -146,7 +147,7 @@ class HtmlHttp { 'commentId': int.parse(number), }; } catch (e) { - print(e.toString()); + debugPrint(e.toString()); } } } diff --git a/lib/http/init.dart b/lib/http/init.dart index b84572954..a84cfefd9 100644 --- a/lib/http/init.dart +++ b/lib/http/init.dart @@ -8,6 +8,7 @@ import 'package:cookie_jar/cookie_jar.dart'; 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'; @@ -42,8 +43,8 @@ class Request { cookieManager = CookieManager(cookieJar); dio.interceptors.add(cookieManager); dio.interceptors.add(AnonymityInterceptor()); - final List cookie = await cookieManager.cookieJar - .loadForRequest(Uri.parse(HttpString.baseUrl)); + // final List cookie = await cookieManager.cookieJar + // .loadForRequest(Uri.parse(HttpString.baseUrl)); final userInfo = userInfoCache.get('userInfoCache'); if (userInfo != null && userInfo.mid != null) { final List cookie2 = await cookieManager.cookieJar @@ -97,7 +98,7 @@ class Request { var html = await Request().get(Api.dynamicSpmPrefix); String spmPrefix = spmPrefixExp.firstMatch(html.data)!.group(1)!; Random rand = Random(); - String rand_png_end = base64.encode( + String randPngEnd = base64.encode( List.generate(32, (_) => rand.nextInt(256)) + List.filled(4, 0) + [73, 69, 78, 68] + @@ -108,7 +109,7 @@ class Request { '39c8': '$spmPrefix.fp.risk', '3c43': { 'adca': 'Linux', - 'bfe9': rand_png_end.substring(rand_png_end.length - 50), + 'bfe9': randPngEnd.substring(randPngEnd.length - 50), }, }); @@ -224,7 +225,7 @@ class Request { * post请求 */ post(url, {data, queryParameters, options, cancelToken, extra}) async { - // print('post-data: $data'); + // debugPrint('post-data: $data'); Response response; try { response = await dio.post( @@ -234,7 +235,7 @@ class Request { options: options, cancelToken: cancelToken, ); - // print('post success: ${response.data}'); + // debugPrint('post success: ${response.data}'); return response; } on DioException catch (e) { Response errResponse = Response( @@ -257,13 +258,13 @@ class Request { response = await dio.download(urlPath, savePath, onReceiveProgress: (int count, int total) { //进度 - // print("$count $total"); + // debugPrint("$count $total"); }); - print('downloadFile success: ${response.data}'); + debugPrint('downloadFile success: ${response.data}'); return response.data; } on DioException catch (e) { - print('downloadFile error: $e'); + debugPrint('downloadFile error: $e'); return Future.error(ApiInterceptor.dioError(e)); } } diff --git a/lib/http/interceptor.dart b/lib/http/interceptor.dart index 6b959dc1c..3ea3e15f3 100644 --- a/lib/http/interceptor.dart +++ b/lib/http/interceptor.dart @@ -2,12 +2,13 @@ import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class ApiInterceptor extends Interceptor { // @override // void onRequest(RequestOptions options, RequestInterceptorHandler handler) { - // print("请求之前"); + // debugPrint("请求之前"); // // 在请求之前添加头部或认证信息 // options.headers['Authorization'] = 'Bearer token'; // options.headers['Content-Type'] = 'application/json'; @@ -21,7 +22,7 @@ class ApiInterceptor extends Interceptor { // final List locations = response.headers['location']!; // if (locations.isNotEmpty) { // if (locations.first.startsWith('https://www.mcbbs.net')) { - // print('ApiInterceptor@@@@@: ${locations.first}'); + // debugPrint('ApiInterceptor@@@@@: ${locations.first}'); // final Uri uri = Uri.parse(locations.first); // final String? accessKey = uri.queryParameters['access_key']; // final String? mid = uri.queryParameters['mid']; @@ -34,7 +35,7 @@ class ApiInterceptor extends Interceptor { // } // } // } catch (err) { - // print('ApiInterceptor: $err'); + // debugPrint('ApiInterceptor: $err'); // } // handler.next(response); @@ -45,7 +46,7 @@ class ApiInterceptor extends Interceptor { // 处理网络请求错误 // handler.next(err); String url = err.requestOptions.uri.toString(); - print('🌹🌹ApiInterceptor: $url'); + debugPrint('🌹🌹ApiInterceptor: $url'); // 屏蔽弹幕、心跳、人数请求的错误提示 if (!url.contains('heartbeat') && !url.contains('seg.so') && diff --git a/lib/http/login.dart b/lib/http/login.dart index a47f55e9c..daeb2e7e4 100644 --- a/lib/http/login.dart +++ b/lib/http/login.dart @@ -1,8 +1,8 @@ import 'dart:convert'; -import 'dart:math'; import 'package:crypto/crypto.dart'; import 'package:dio/dio.dart'; import 'package:encrypt/encrypt.dart'; +import 'package:flutter/material.dart'; import '../common/constants.dart'; import '../models/login/index.dart'; import '../utils/login.dart'; @@ -43,7 +43,6 @@ class LoginHttp { ); var res = await Request() .post(Api.getTVCode, queryParameters: {...params, 'sign': sign}); - print(res); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -143,7 +142,6 @@ class LoginHttp { headers: headers, ), ); - print(res); if (res.data['code'] == 0 && res.data['data']['recaptcha_url'] == "") { return {'status': true, 'data': res.data['data']}; } else { @@ -187,7 +185,7 @@ class LoginHttp { // contentType: Headers.formUrlEncodedContentType, // headers: headers, // )); - // print("getGuestId: $res"); + // debugPrint("getGuestId: $res"); // if (res.data['code'] == 0) { // return {'status': true, 'data': res.data['data']}; // } else { @@ -207,7 +205,6 @@ class LoginHttp { String? recaptcha_token, }) async { dynamic publicKey = RSAKeyParser().parse(key); - print(publicKey); String passwordEncrypted = Encrypter(RSA(publicKey: publicKey)).encrypt(salt + password).base64; @@ -250,7 +247,7 @@ class LoginHttp { ); data['sign'] = sign; data.map((key, value) { - print('$key: $value'); + debugPrint('$key: $value'); return MapEntry(key, value); }); var res = await Request().post( @@ -262,7 +259,6 @@ class LoginHttp { //responseType: ResponseType.plain ), ); - print(res); if (res.data['code'] == 0) { return { 'status': true, @@ -325,7 +321,7 @@ class LoginHttp { ); data['sign'] = sign; data.map((key, value) { - print('$key: $value'); + debugPrint('$key: $value'); return MapEntry(key, value); }); var res = await Request().post( @@ -337,7 +333,6 @@ class LoginHttp { //responseType: ResponseType.plain ), ); - print(res); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -357,7 +352,6 @@ class LoginHttp { var res = await Request().get(Api.safeCenterGetInfo, data: { 'tmp_code': tmpCode, }); - print(res); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -373,7 +367,6 @@ class LoginHttp { // 风控验证手机前的验证码 static Future preCapture() async { var res = await Request().post(Api.preCapture); - print(res); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -403,7 +396,6 @@ class LoginHttp { 'gee_validate': geeValidate, 'recaptcha_token': recaptchaToken, }); - print(res); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -431,7 +423,6 @@ class LoginHttp { 'source': source, 'captcha_key': captchaKey, }); - print(res); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { diff --git a/lib/http/member.dart b/lib/http/member.dart index aa88ced90..e7d568274 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -662,7 +662,7 @@ class MemberHttp { 'data': MemberSeasonsList.fromJson(res.data['data']) }; } catch (err) { - print(err); + debugPrint(err.toString()); } } else { return { diff --git a/lib/http/msg.dart b/lib/http/msg.dart index 0a55d5414..f2d9be6e6 100644 --- a/lib/http/msg.dart +++ b/lib/http/msg.dart @@ -1,9 +1,8 @@ -import 'dart:io'; import 'dart:math'; import 'package:PiliPalaX/http/constants.dart'; import 'package:PiliPalaX/pages/dynamics/view.dart' show ReplyOption; -import 'package:PiliPalaX/utils/storage.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; import '../models/msg/account.dart'; import '../models/msg/session.dart'; @@ -72,7 +71,6 @@ class MsgHttp { static Future msgFeedSysUserNotify() async { String csrf = await Request.getCsrf(); var res = await Request().get(Api.msgSysUserNotify, data: { - 'csrf': csrf, 'csrf': csrf, 'page_size': 20, }); @@ -93,7 +91,6 @@ class MsgHttp { static Future msgFeedSysUnifiedNotify() async { String csrf = await Request.getCsrf(); var res = await Request().get(Api.msgSysUnifiedNotify, data: { - 'csrf': csrf, 'csrf': csrf, 'page_size': 10, }); @@ -114,7 +111,6 @@ class MsgHttp { static Future msgSysUpdateCursor(int cursor) async { String csrf = await Request.getCsrf(); var res = await Request().get(Api.msgSysUpdateCursor, data: { - 'csrf': csrf, 'csrf': csrf, 'cursor': cursor, }); @@ -442,7 +438,7 @@ class MsgHttp { .toList(), }; } catch (err) { - print('err🔟: $err'); + debugPrint('err🔟: $err'); } } else { return { @@ -472,7 +468,7 @@ class MsgHttp { 'data': SessionMsgDataModel.fromJson(res.data['data']), }; } catch (err) { - print(err); + debugPrint(err.toString()); } } else { return { diff --git a/lib/http/reply.dart b/lib/http/reply.dart index 822bc39e8..398176c01 100644 --- a/lib/http/reply.dart +++ b/lib/http/reply.dart @@ -1,4 +1,3 @@ -import 'dart:ffi'; import 'dart:io'; import 'package:PiliPalaX/grpc/app/main/community/reply/v1/reply.pb.dart'; diff --git a/lib/http/search.dart b/lib/http/search.dart index 0dcdc256e..23c18b2f7 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -1,4 +1,5 @@ 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'; @@ -128,7 +129,7 @@ class SearchHttp { } return LoadingState.success(data); } catch (err) { - print(err); + debugPrint(err.toString()); return LoadingState.error(err.toString()); } } else { diff --git a/lib/http/user.dart b/lib/http/user.dart index 34af8bc09..a54cd7096 100644 --- a/lib/http/user.dart +++ b/lib/http/user.dart @@ -1,5 +1,4 @@ import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:PiliPalaX/utils/storage.dart'; import 'package:dio/dio.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import '../common/constants.dart'; diff --git a/lib/http/video.dart b/lib/http/video.dart index d81abd23d..c31ba7db0 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -1,9 +1,10 @@ import 'dart:convert'; import 'dart:developer'; -import 'package:PiliPalaX/grpc/app/card/v1/card.pb.dart'; +import 'package:PiliPalaX/grpc/app/card/v1/card.pb.dart' as card; import 'package:PiliPalaX/grpc/grpc_repo.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:hive/hive.dart'; import '../common/constants.dart'; @@ -201,10 +202,10 @@ class VideoHttp { static Future hotVideoListGrpc({required int idx}) async { dynamic res = await GrpcRepo.popular(idx); if (res['status']) { - List list = []; + List list = []; List blackMidsList = localCache.get(LocalCacheKey.blackMidsList, defaultValue: []); - for (Card item in res['data']) { + for (card.Card item in res['data']) { if (!blackMidsList.contains(item.smallCoverV5.up.id.toInt())) { list.add(item); } @@ -392,7 +393,7 @@ class VideoHttp { // 获取投币状态 static Future hasCoinVideo({required String bvid}) async { var res = await Request().get(Api.hasCoinVideo, data: {'bvid': bvid}); - print('res: $res'); + debugPrint('res: $res'); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -414,7 +415,6 @@ class VideoHttp { // 'csrf': await Request.getCsrf(), }, ); - print(res); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -512,7 +512,6 @@ class VideoHttp { 'access_key': accessKey, }, ); - print(res); if (res.data is! String && res.data['code'] == 0) { return {'status': true}; } else { @@ -546,7 +545,6 @@ class VideoHttp { 'access_key': accessKey, 'appkey': Constants.appKey, }); - print(res); if (res.data['code'] == 0) { return {'status': true}; } else { @@ -577,7 +575,6 @@ class VideoHttp { 'access_key': accessKey, 'appkey': Constants.appKey, }); - print(res); if (res.data['code'] == 0) { return {'status': true}; } else { @@ -729,7 +726,6 @@ class VideoHttp { 're_src': reSrc, 'csrf': await Request.getCsrf(), }); - print(res); if (res.data['code'] == 0) { return {'status': true}; } else { diff --git a/lib/models/common/dynamics_type.dart b/lib/models/common/dynamics_type.dart index 611d4fba9..59d0cf2f2 100644 --- a/lib/models/common/dynamics_type.dart +++ b/lib/models/common/dynamics_type.dart @@ -1,7 +1,3 @@ -import 'package:get/get.dart'; -import '../../pages/dynamics/tab/controller.dart'; -import '../../pages/dynamics/tab/view.dart'; - enum DynamicsType { all, video, diff --git a/lib/models/common/rank_type.dart b/lib/models/common/rank_type.dart index ac251d187..f4966f9eb 100644 --- a/lib/models/common/rank_type.dart +++ b/lib/models/common/rank_type.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:PiliPalaX/pages/rank/zone/index.dart'; enum RandType { all, diff --git a/lib/models/live/danmu_info.dart b/lib/models/live/danmu_info.dart index 88401cc7c..10850f4d1 100644 --- a/lib/models/live/danmu_info.dart +++ b/lib/models/live/danmu_info.dart @@ -1,5 +1,3 @@ -import 'dart:developer'; - class LiveDanmakuInfo { String message; int ttl, code; diff --git a/lib/models/space/card.dart b/lib/models/space/card.dart index 6f068e173..0cc61f6dc 100644 --- a/lib/models/space/card.dart +++ b/lib/models/space/card.dart @@ -11,11 +11,8 @@ import 'nameplate.dart'; import 'nft_certificate.dart'; import 'official_verify.dart'; import 'pendant.dart'; -import 'pr_info.dart'; -import 'profession.dart'; import 'profession_verify.dart'; import 'relation.dart'; -import 'school.dart'; import 'vip.dart'; part 'card.g.dart'; diff --git a/lib/models/space/data.dart b/lib/models/space/data.dart index 8d334bfab..9dd858232 100644 --- a/lib/models/space/data.dart +++ b/lib/models/space/data.dart @@ -1,12 +1,10 @@ import 'package:json_annotation/json_annotation.dart'; import 'archive.dart'; -import 'article.dart'; import 'attention_tip.dart'; import 'audios.dart'; import 'card.dart'; import 'coin_archive.dart'; -import 'fans_effect.dart'; import 'favourite2.dart'; import 'images.dart'; import 'like_archive.dart'; diff --git a/lib/models/space/item.dart b/lib/models/space/item.dart index 98cc36a5e..e24db96e6 100644 --- a/lib/models/space/item.dart +++ b/lib/models/space/item.dart @@ -1,7 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; -import 'three_point.dart'; - part 'item.g.dart'; @JsonSerializable() diff --git a/lib/models/space/layer_config.dart b/lib/models/space/layer_config.dart index ca1e1e20b..98eab37ca 100644 --- a/lib/models/space/layer_config.dart +++ b/lib/models/space/layer_config.dart @@ -1,7 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; -import 'tags.dart'; - part 'layer_config.g.dart'; @JsonSerializable() diff --git a/lib/pages/about/index.dart b/lib/pages/about/index.dart index 530ee1ad6..8095885bd 100644 --- a/lib/pages/about/index.dart +++ b/lib/pages/about/index.dart @@ -318,10 +318,10 @@ class AboutController extends GetxController { // DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); // if (Platform.isAndroid) { // AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; - // print(androidInfo.supportedAbis); + // debugPrint(androidInfo.supportedAbis); // } else if (Platform.isIOS) { // IosDeviceInfo iosInfo = await deviceInfo.iosInfo; - // print(iosInfo); + // debugPrint(iosInfo); // } // } diff --git a/lib/pages/bangumi/introduction/controller.dart b/lib/pages/bangumi/introduction/controller.dart index e17451a3d..226d460dc 100644 --- a/lib/pages/bangumi/introduction/controller.dart +++ b/lib/pages/bangumi/introduction/controller.dart @@ -21,10 +21,8 @@ import 'package:PiliPalaX/pages/video/detail/index.dart'; import 'package:PiliPalaX/pages/video/detail/reply/index.dart'; import 'package:PiliPalaX/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; -import 'package:PiliPalaX/utils/id_utils.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:share_plus/share_plus.dart'; -import 'package:url_launcher/url_launcher.dart'; import 'package:html/parser.dart' as html_parser; import 'package:html/dom.dart' as dom; diff --git a/lib/pages/bangumi/introduction/view.dart b/lib/pages/bangumi/introduction/view.dart index 8f29d8444..34cec7089 100644 --- a/lib/pages/bangumi/introduction/view.dart +++ b/lib/pages/bangumi/introduction/view.dart @@ -27,12 +27,12 @@ class BangumiIntroPanel extends StatefulWidget { final Function showIntroDetail; const BangumiIntroPanel({ - Key? key, + super.key, this.cid, required this.heroTag, required this.showEpisodes, required this.showIntroDetail, - }) : super(key: key); + }); @override State createState() => _BangumiIntroPanelState(); @@ -147,7 +147,7 @@ class _BangumiInfoState extends State videoDetailCtr = Get.find(tag: widget.heroTag); bangumiItem = bangumiIntroController.bangumiItem; cid = widget.cid!; - print('cid: $cid'); + debugPrint('cid: $cid'); videoDetailCtr.cid.listen((p0) { cid = p0; if (!mounted) return; diff --git a/lib/pages/bangumi/introduction/widgets/intro_detail.dart b/lib/pages/bangumi/introduction/widgets/intro_detail.dart index 5593d92dc..7e0ec2961 100644 --- a/lib/pages/bangumi/introduction/widgets/intro_detail.dart +++ b/lib/pages/bangumi/introduction/widgets/intro_detail.dart @@ -11,19 +11,19 @@ class IntroDetail extends StatelessWidget { final dynamic videoTags; const IntroDetail({ - Key? key, + super.key, this.bangumiDetail, this.videoTags, - }) : super(key: key); + }); @override Widget build(BuildContext context) { TextStyle smallTitle = TextStyle( fontSize: 12, - color: Theme.of(context).colorScheme.onBackground, + color: Theme.of(context).colorScheme.onSurface, ); return Container( - color: Theme.of(context).colorScheme.background, + color: Theme.of(context).colorScheme.surface, padding: const EdgeInsets.only(left: 14, right: 14), height: Utils.getSheetHeight(context), child: Column( diff --git a/lib/pages/bangumi/widgets/bangumi_card_v.dart b/lib/pages/bangumi/widgets/bangumi_card_v.dart index d439c8470..0313c4267 100644 --- a/lib/pages/bangumi/widgets/bangumi_card_v.dart +++ b/lib/pages/bangumi/widgets/bangumi_card_v.dart @@ -1,11 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/widgets/badge.dart'; -import 'package:PiliPalaX/http/search.dart'; -import 'package:PiliPalaX/models/bangumi/info.dart'; -import 'package:PiliPalaX/models/common/search_type.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; @@ -18,7 +13,7 @@ class BangumiCardV extends StatelessWidget { this.longPressEnd, }); - final bangumiItem; + final dynamic bangumiItem; final Function()? longPress; final Function()? longPressEnd; @@ -66,8 +61,8 @@ class BangumiCardV extends StatelessWidget { // String bvid = episode.bvid!; // int cid = episode.cid!; // String pic = episode.cover!; - // // print('epId'); - // // print(epId); + // // debugPrint('epId'); + // // debugPrint(epId); // String heroTag = Utils.makeHeroTag(cid); // Get.toNamed( // '/video?bvid=$bvid&cid=$cid&seasonId=$seasonId&epId=$epId', @@ -139,8 +134,7 @@ class BangumiCardV extends StatelessWidget { class BangumiContent extends StatelessWidget { const BangumiContent({super.key, required this.bangumiItem}); - // ignore: prefer_typing_uninitialized_variables - final bangumiItem; + final dynamic bangumiItem; @override Widget build(BuildContext context) { return Expanded( diff --git a/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart b/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart index dec9e5d6f..572c2d4c0 100644 --- a/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart +++ b/lib/pages/bangumi/widgets/bangumi_card_v_member_home.dart @@ -50,8 +50,8 @@ class BangumiCardVMemberHome extends StatelessWidget { // String bvid = episode.bvid!; // int cid = episode.cid!; // String pic = episode.cover!; - // // print('epId'); - // // print(epId); + // // debugPrint('epId'); + // // debugPrint(epId); // String heroTag = Utils.makeHeroTag(cid); // Get.toNamed( // '/video?bvid=$bvid&cid=$cid&seasonId=$seasonId&epId=$epId', diff --git a/lib/pages/danmaku/controller.dart b/lib/pages/danmaku/controller.dart index fb61f108f..cf6184a8c 100644 --- a/lib/pages/danmaku/controller.dart +++ b/lib/pages/danmaku/controller.dart @@ -23,12 +23,12 @@ class PlDanmakuController { return; } danmakuWeightNotifier.addListener(() { - print( + debugPrint( "danmakuWeight changed from $danmakuWeight to ${danmakuWeightNotifier.value}"); danmakuWeight = danmakuWeightNotifier.value; }); danmakuFilterNotifier.addListener(() { - print( + debugPrint( "danmakuFilter changed from $danmakuFilter to ${danmakuFilterNotifier.value}"); danmakuFilter = danmakuFilterNotifier.value; }); diff --git a/lib/pages/danmaku_block/index.dart b/lib/pages/danmaku_block/index.dart index 6f75956d1..95390a4df 100644 --- a/lib/pages/danmaku_block/index.dart +++ b/lib/pages/danmaku_block/index.dart @@ -49,7 +49,7 @@ class _DanmakuBlockPageState extends State { } return e.toMap(); }).toList(); - print("simpleRuleList:$simpleRuleList"); + // debugPrint("simpleRuleList:$simpleRuleList"); localCache.put(LocalCacheKey.danmakuFilterRule, simpleRuleList); plPlayerController.danmakuFilterRule.value = simpleRuleList; scrollController.removeListener(() {}); diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index 5757700d8..eecbb221b 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -10,9 +10,7 @@ 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/bangumi/info.dart'; import 'package:PiliPalaX/models/common/dynamics_type.dart'; -import 'package:PiliPalaX/models/common/search_type.dart'; import 'package:PiliPalaX/models/dynamics/result.dart'; import 'package:PiliPalaX/models/dynamics/up.dart'; import 'package:PiliPalaX/models/live/item.dart'; @@ -133,13 +131,13 @@ class DynamicsController extends GetxController break; case 'DYNAMIC_TYPE_PGC': - print('番剧'); + debugPrint('番剧'); SmartDialog.showToast('暂未支持的类型,请联系开发者'); break; /// 纯文字动态查看 case 'DYNAMIC_TYPE_WORD': - print('纯文本'); + debugPrint('纯文本'); Utils.toDupNamed('/dynamicDetail', arguments: {'item': item, 'floor': floor}); break; @@ -175,7 +173,7 @@ class DynamicsController extends GetxController /// 番剧查看 case 'DYNAMIC_TYPE_PGC_UNION': - print('DYNAMIC_TYPE_PGC_UNION 番剧'); + debugPrint('DYNAMIC_TYPE_PGC_UNION 番剧'); DynamicArchiveModel pgc = item.modules.moduleDynamic.major.pgc; if (pgc.epid != null) { Utils.viewBangumi(epId: pgc.epid); diff --git a/lib/pages/dynamics/detail/view.dart b/lib/pages/dynamics/detail/view.dart index 079caa87a..57ca3d945 100644 --- a/lib/pages/dynamics/detail/view.dart +++ b/lib/pages/dynamics/detail/view.dart @@ -14,7 +14,6 @@ import 'package:PiliPalaX/models/common/reply_type.dart'; import 'package:PiliPalaX/models/dynamics/result.dart'; import 'package:PiliPalaX/pages/dynamics/detail/index.dart'; import 'package:PiliPalaX/pages/dynamics/widgets/author_panel.dart'; -import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item.dart'; import 'package:PiliPalaX/pages/video/detail/reply_reply/index.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/id_utils.dart'; @@ -24,7 +23,7 @@ import '../widgets/dynamic_panel.dart'; class DynamicDetailPage extends StatefulWidget { // const DynamicDetailPage({super.key}); - const DynamicDetailPage({Key? key}) : super(key: key); + const DynamicDetailPage({super.key}); @override State createState() => _DynamicDetailPageState(); diff --git a/lib/pages/dynamics/tab/view.dart b/lib/pages/dynamics/tab/view.dart index e1929b244..22f702620 100644 --- a/lib/pages/dynamics/tab/view.dart +++ b/lib/pages/dynamics/tab/view.dart @@ -21,8 +21,7 @@ import '../widgets/dynamic_panel.dart'; import 'controller.dart'; class DynamicsTabPage extends StatefulWidget { - const DynamicsTabPage({Key? key, required this.dynamicsType}) - : super(key: key); + const DynamicsTabPage({super.key, required this.dynamicsType}); final String dynamicsType; @@ -70,7 +69,7 @@ class _DynamicsTabPageState extends State } }); dynamicsController.mid.listen((mid) { - print('midListen: $mid'); + // debugPrint('midListen: $mid'); _dynamicsTabController.mid = mid; _dynamicsTabController.scrollController.jumpTo(0); _dynamicsTabController.onReload(); @@ -89,7 +88,7 @@ class _DynamicsTabPageState extends State @override Widget build(BuildContext context) { super.build(context); - // print(widget.dynamicsType + widget.mid.value.toString()); + // debugPrint(widget.dynamicsType + widget.mid.value.toString()); return refreshIndicator( // key: // ValueKey(widget.dynamicsType + widget.mid.value.toString()), diff --git a/lib/pages/dynamics/view.dart b/lib/pages/dynamics/view.dart index 5113df4b1..ee49ddf4c 100644 --- a/lib/pages/dynamics/view.dart +++ b/lib/pages/dynamics/view.dart @@ -84,7 +84,7 @@ class _DynamicsPageState extends State // ..addListener(() { // if (!_dynamicsController.tabController.indexIsChanging) { // // if (!mounted) return; - // // print('indexChanging: ${_dynamicsController.tabController.index}'); + // // debugPrint('indexChanging: ${_dynamicsController.tabController.index}'); // _dynamicsController // .onSelectType(_dynamicsController.tabController.index); // } @@ -99,7 +99,7 @@ class _DynamicsPageState extends State upPanelPosition = UpPanelPosition.values[setting.get( SettingBoxKey.upPanelPosition, defaultValue: UpPanelPosition.leftFixed.code)]; - print('upPanelPosition: $upPanelPosition'); + debugPrint('upPanelPosition: $upPanelPosition'); if (GStorage.setting .get(SettingBoxKey.dynamicsShowAllFollowedUp, defaultValue: false)) { _dynamicsController.scrollController.addListener(() { diff --git a/lib/pages/dynamics/widgets/action_panel.dart b/lib/pages/dynamics/widgets/action_panel.dart index 348f91099..49a645dbe 100644 --- a/lib/pages/dynamics/widgets/action_panel.dart +++ b/lib/pages/dynamics/widgets/action_panel.dart @@ -17,8 +17,7 @@ class ActionPanel extends StatefulWidget { super.key, this.item, }); - // ignore: prefer_typing_uninitialized_variables - final item; + final dynamic item; @override State createState() => _ActionPanelState(); diff --git a/lib/pages/dynamics/widgets/additional_panel.dart b/lib/pages/dynamics/widgets/additional_panel.dart index 9c435fe25..e71f56b9f 100644 --- a/lib/pages/dynamics/widgets/additional_panel.dart +++ b/lib/pages/dynamics/widgets/additional_panel.dart @@ -19,7 +19,7 @@ Widget addWidget(item, context, type, {floor = 1}) { }; Color bgColor = floor == 1 ? Theme.of(context).dividerColor.withOpacity(0.08) - : Theme.of(context).colorScheme.background; + : Theme.of(context).colorScheme.surface; switch (type) { case 'ADDITIONAL_TYPE_UGC': // 转发的投稿 @@ -40,7 +40,7 @@ Widget addWidget(item, context, type, {floor = 1}) { SmartDialog.showToast(err.toString()); } } else { - print("No match found."); + debugPrint("No match found."); } }, child: Container( diff --git a/lib/pages/dynamics/widgets/dynamic_panel.dart b/lib/pages/dynamics/widgets/dynamic_panel.dart index f6bea46e0..923b69eb9 100644 --- a/lib/pages/dynamics/widgets/dynamic_panel.dart +++ b/lib/pages/dynamics/widgets/dynamic_panel.dart @@ -15,8 +15,8 @@ class DynamicPanel extends StatelessWidget { required this.item, this.source, this.onRemove, - Key? key, - }) : super(key: key); + super.key, + }); final DynamicsController _dynamicsController = Get.put(DynamicsController()); diff --git a/lib/pages/dynamics/widgets/rich_node_panel.dart b/lib/pages/dynamics/widgets/rich_node_panel.dart index b5a5c1cb2..4442e1266 100644 --- a/lib/pages/dynamics/widgets/rich_node_panel.dart +++ b/lib/pages/dynamics/widgets/rich_node_panel.dart @@ -364,7 +364,7 @@ InlineSpan richNode(item, context) { ); } } catch (err) { - print('❌rich_node_panel err: $err'); + debugPrint('❌rich_node_panel err: $err'); return spacer; } } diff --git a/lib/pages/dynamics/widgets/up_panel.dart b/lib/pages/dynamics/widgets/up_panel.dart index a15eef832..39a728cf1 100644 --- a/lib/pages/dynamics/widgets/up_panel.dart +++ b/lib/pages/dynamics/widgets/up_panel.dart @@ -12,8 +12,7 @@ import 'package:PiliPalaX/utils/utils.dart'; class UpPanel extends StatefulWidget { final FollowUpModel? upData; final ScrollController scrollController; - const UpPanel(this.upData, this.scrollController, {Key? key}) - : super(key: key); + const UpPanel(this.upData, this.scrollController, {super.key}); @override State createState() => _UpPanelState(); @@ -49,7 +48,7 @@ class _UpPanelState extends State { height: 45, child: TextButton( style: ButtonStyle( - padding: MaterialStateProperty.all(const EdgeInsets.only()), + padding: WidgetStateProperty.all(const EdgeInsets.only()), ), child: Column( children: [ diff --git a/lib/pages/fav/widgets/item.dart b/lib/pages/fav/widgets/item.dart index 5a7645c2f..f5b787848 100644 --- a/lib/pages/fav/widgets/item.dart +++ b/lib/pages/fav/widgets/item.dart @@ -5,8 +5,7 @@ import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/utils/utils.dart'; class FavItem extends StatelessWidget { - // ignore: prefer_typing_uninitialized_variables - final favFolderItem; + final dynamic favFolderItem; const FavItem({super.key, required this.favFolderItem}); @override diff --git a/lib/pages/fav_detail/controller.dart b/lib/pages/fav_detail/controller.dart index 00800fee3..4f06b6a11 100644 --- a/lib/pages/fav_detail/controller.dart +++ b/lib/pages/fav_detail/controller.dart @@ -5,7 +5,6 @@ import 'package:PiliPalaX/utils/storage.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/http/video.dart'; -import 'package:PiliPalaX/models/user/fav_folder.dart'; class FavDetailController extends CommonController { // FavFolderItemData? item; diff --git a/lib/pages/fav_detail/widget/fav_video_card.dart b/lib/pages/fav_detail/widget/fav_video_card.dart index d851aaf13..c8930fe65 100644 --- a/lib/pages/fav_detail/widget/fav_video_card.dart +++ b/lib/pages/fav_detail/widget/fav_video_card.dart @@ -19,11 +19,11 @@ class FavVideoCardH extends StatelessWidget { final int? searchType; const FavVideoCardH({ - Key? key, + super.key, required this.videoItem, this.callFn, this.searchType, - }) : super(key: key); + }); @override Widget build(BuildContext context) { @@ -215,7 +215,7 @@ class VideoContent extends StatelessWidget { child: IconButton( tooltip: '取消收藏', style: ButtonStyle( - padding: MaterialStateProperty.all(EdgeInsets.zero), + padding: WidgetStateProperty.all(EdgeInsets.zero), ), onPressed: () { showDialog( diff --git a/lib/pages/follow/widgets/follow_item.dart b/lib/pages/follow/widgets/follow_item.dart index 1bd3b5089..28b106ec0 100644 --- a/lib/pages/follow/widgets/follow_item.dart +++ b/lib/pages/follow/widgets/follow_item.dart @@ -3,7 +3,6 @@ import 'package:get/get.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/models/follow/result.dart'; import 'package:PiliPalaX/pages/follow/index.dart'; -import 'package:PiliPalaX/pages/video/detail/introduction/widgets/group_panel.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/utils.dart'; diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index b85d89fe7..c5c303099 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -265,8 +265,8 @@ class AppBarWidget extends StatelessWidget implements PreferredSizeWidget { required this.child1, required this.child2, required this.visible, - Key? key, - }) : super(key: key); + super.key, + }); final PreferredSizeWidget child1; final PreferredSizeWidget child2; diff --git a/lib/pages/history/widgets/item.dart b/lib/pages/history/widgets/item.dart index 310fe8681..daed61cb7 100644 --- a/lib/pages/history/widgets/item.dart +++ b/lib/pages/history/widgets/item.dart @@ -9,9 +9,7 @@ import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/http/search.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/http/video.dart'; -import 'package:PiliPalaX/models/bangumi/info.dart'; import 'package:PiliPalaX/models/common/business_type.dart'; -import 'package:PiliPalaX/models/common/search_type.dart'; import 'package:PiliPalaX/models/live/item.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/id_utils.dart'; @@ -82,7 +80,7 @@ class HistoryItem extends StatelessWidget { if (result['status']) { String bvid = result['data'].bvid!; int cid = result['data'].cid!; - String pic = result['data'].pic!; + // String pic = result['data'].pic!; String heroTag = Utils.makeHeroTag(cid); var epid = result['data'].epId; if (epid != null) { @@ -254,11 +252,10 @@ class HistoryItem extends StatelessWidget { child: IconButton( tooltip: '取消选择', style: ButtonStyle( - padding: MaterialStateProperty.all( + padding: WidgetStateProperty.all( EdgeInsets.zero), backgroundColor: - MaterialStateProperty - .resolveWith( + WidgetStateProperty.resolveWith( (states) { return Colors.white .withOpacity(0.8); diff --git a/lib/pages/home/view.dart b/lib/pages/home/view.dart index 2115fb527..d21588c5e 100644 --- a/lib/pages/home/view.dart +++ b/lib/pages/home/view.dart @@ -8,7 +8,7 @@ import 'package:PiliPalaX/utils/feed_back.dart'; import './controller.dart'; class HomePage extends StatefulWidget { - const HomePage({Key? key}) : super(key: key); + const HomePage({super.key}); @override State createState() => _HomePageState(); @@ -135,9 +135,9 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget { class SearchBarAndUser extends StatelessWidget { const SearchBarAndUser({ - Key? key, + super.key, required this.ctr, - }) : super(key: key); + }); final HomeController ctr; @@ -198,9 +198,9 @@ class SearchBarAndUser extends StatelessWidget { class UserAndSearchVertical extends StatelessWidget { const UserAndSearchVertical({ - Key? key, + super.key, required this.ctr, - }) : super(key: key); + }); final HomeController ctr; @@ -274,8 +274,8 @@ class DefaultUser extends StatelessWidget { child: IconButton( tooltip: '默认用户头像', style: ButtonStyle( - padding: MaterialStateProperty.all(EdgeInsets.zero), - backgroundColor: MaterialStateProperty.resolveWith((states) { + padding: WidgetStateProperty.all(EdgeInsets.zero), + backgroundColor: WidgetStateProperty.resolveWith((states) { return Theme.of(context).colorScheme.onInverseSurface; }), ), @@ -367,8 +367,7 @@ class CustomChip extends StatelessWidget { : BorderSide.none, // backgroundColor: colorTheme.primaryContainer.withOpacity(0.1), // selectedColor: colorTheme.secondaryContainer.withOpacity(0.8), - color: - MaterialStateProperty.resolveWith((Set states) { + color: WidgetStateProperty.resolveWith((Set states) { return colorTheme.secondaryContainer.withOpacity(0.6); }), padding: const EdgeInsets.fromLTRB(6, 1, 6, 1), @@ -383,9 +382,9 @@ class CustomChip extends StatelessWidget { class SearchBar extends StatelessWidget { const SearchBar({ - Key? key, + super.key, required this.ctr, - }) : super(key: key); + }); final HomeController? ctr; diff --git a/lib/pages/hot/controller.dart b/lib/pages/hot/controller.dart index c77615611..e50abd566 100644 --- a/lib/pages/hot/controller.dart +++ b/lib/pages/hot/controller.dart @@ -4,8 +4,6 @@ import 'package:PiliPalaX/pages/common/popup_controller.dart'; import 'package:PiliPalaX/http/video.dart'; class HotController extends PopupController { - final int _count = 20; - int idx = 0; @override diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 01ce2819f..0c0e74db8 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -10,7 +10,6 @@ import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/widgets/animated_dialog.dart'; import 'package:PiliPalaX/common/skeleton/video_card_h.dart'; import 'package:PiliPalaX/common/widgets/http_error.dart'; -import 'package:PiliPalaX/common/widgets/video_card_h.dart'; import 'package:PiliPalaX/pages/home/index.dart'; import 'package:PiliPalaX/pages/hot/controller.dart'; import 'package:PiliPalaX/pages/main/index.dart'; @@ -18,7 +17,7 @@ import 'package:PiliPalaX/pages/main/index.dart'; import '../../utils/grid.dart'; class HotPage extends StatefulWidget { - const HotPage({Key? key}) : super(key: key); + const HotPage({super.key}); @override State createState() => _HotPageState(); diff --git a/lib/pages/html/view.dart b/lib/pages/html/view.dart index 4efd07100..d7ee52ca8 100644 --- a/lib/pages/html/view.dart +++ b/lib/pages/html/view.dart @@ -14,7 +14,6 @@ import 'package:PiliPalaX/common/skeleton/video_reply.dart'; import 'package:PiliPalaX/common/widgets/html_render.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/models/common/reply_type.dart'; -import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item.dart'; import 'package:PiliPalaX/pages/video/detail/reply_reply/index.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:share_plus/share_plus.dart'; diff --git a/lib/pages/live/widgets/live_item.dart b/lib/pages/live/widgets/live_item.dart index 03ae3c855..0ad9d6bdf 100644 --- a/lib/pages/live/widgets/live_item.dart +++ b/lib/pages/live/widgets/live_item.dart @@ -12,11 +12,11 @@ class LiveCardV extends StatelessWidget { final Function()? longPressEnd; const LiveCardV({ - Key? key, + super.key, required this.liveItem, this.longPress, this.longPressEnd, - }) : super(key: key); + }); @override Widget build(BuildContext context) { @@ -80,7 +80,7 @@ class LiveCardV extends StatelessWidget { class LiveContent extends StatelessWidget { final dynamic liveItem; - const LiveContent({Key? key, required this.liveItem}) : super(key: key); + const LiveContent({super.key, required this.liveItem}); @override Widget build(BuildContext context) { return Expanded( @@ -129,9 +129,9 @@ class VideoStat extends StatelessWidget { final LiveItemModel? liveItem; const VideoStat({ - Key? key, + super.key, required this.liveItem, - }) : super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/pages/live_room/widgets/bottom_control.dart b/lib/pages/live_room/widgets/bottom_control.dart index 50459ec4e..a350fa30e 100644 --- a/lib/pages/live_room/widgets/bottom_control.dart +++ b/lib/pages/live_room/widgets/bottom_control.dart @@ -17,8 +17,8 @@ class BottomControl extends StatefulWidget implements PreferredSizeWidget { this.controller, this.liveRoomCtr, this.floating, - Key? key, - }) : super(key: key); + super.key, + }); @override State createState() => _BottomControlState(); @@ -91,7 +91,7 @@ class _BottomControlState extends State { child: IconButton( tooltip: '画中画', style: ButtonStyle( - padding: MaterialStateProperty.all(EdgeInsets.zero), + padding: WidgetStateProperty.all(EdgeInsets.zero), ), onPressed: () async { bool canUsePiP = false; diff --git a/lib/pages/live_room/widgets/chat.dart b/lib/pages/live_room/widgets/chat.dart index 5cdda13d0..282b790f1 100644 --- a/lib/pages/live_room/widgets/chat.dart +++ b/lib/pages/live_room/widgets/chat.dart @@ -67,7 +67,7 @@ class _LiveRoomChatState extends State { }, ); } catch (err) { - print(err.toString()); + debugPrint(err.toString()); // SmartDialog.showToast(err.toString()); } }, diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index fa502f24d..ed6ae2b5f 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -69,8 +69,8 @@ class LoginPageController extends GetxController qrCodeTimer?.cancel(); codeInfo.value = res; codeInfo.refresh(); - print("codeInfo"); - print(codeInfo); + debugPrint("codeInfo"); + debugPrint(codeInfo.toString()); qrCodeTimer = Timer.periodic(const Duration(milliseconds: 1000), (t) { qrCodeLeftTime.value = 180 - t.tick; if (qrCodeLeftTime <= 0) { @@ -85,7 +85,6 @@ class LoginPageController extends GetxController if (value['status']) { t.cancel(); statusQRCode.value = '扫码成功'; - print(value['data']); await afterLoginByApp( value['data'], value['data']['cookie_info']); Get.back(); @@ -104,7 +103,7 @@ class LoginPageController extends GetxController } void _handleTabChange() { - print('tabController.index ${tabController.index}'); + debugPrint('tabController.index ${tabController.index}'); if (tabController.index == 2) { if (qrCodeTimer == null || qrCodeTimer!.isActive == false) { refreshQRCode(); @@ -121,8 +120,8 @@ class LoginPageController extends GetxController 'refresh': token_info['refresh_token'] }); List cookieInfo = cookie_info['cookies']; - print("cookieInfo"); - print(cookieInfo); + debugPrint("cookieInfo"); + debugPrint(cookieInfo.toString()); List cookies = []; String cookieStrings = cookieInfo.map((cookie) { String cstr = @@ -139,11 +138,7 @@ class LoginPageController extends GetxController await Request.cookieManager.cookieJar .saveFromResponse(Uri.parse(url), cookies); } - print(cookieStrings); - print(Request.cookieManager.cookieJar - .loadForRequest(Uri.parse(HttpString.apiBaseUrl))); Request.dio.options.headers['cookie'] = cookieStrings; - print(Request.dio.options); await WebviewCookieManager().setCookies(cookies); for (Cookie item in cookies) { await web.CookieManager().setCookie( @@ -285,14 +280,12 @@ class LoginPageController extends GetxController } // if ((passwordFormKey.currentState as FormState).validate()) { var webKeyRes = await LoginHttp.getWebKey(); - print(webKeyRes); if (!webKeyRes['status']) { SmartDialog.showToast(webKeyRes['msg']); return; } String salt = webKeyRes['data']['hash']; String key = webKeyRes['data']['key']; - print(key); var res = await LoginHttp.loginByPwd( username: username, password: password, @@ -303,11 +296,10 @@ class LoginPageController extends GetxController gee_challenge: captchaData.geetest?.challenge, recaptcha_token: captchaData.token, ); - print(res); if (res['status']) { var data = res['data']; for (var key in data.keys) { - print('$key: ${data[key]}'); + debugPrint('$key: ${data[key]}'); } if (data == null) { SmartDialog.showToast('登录异常,接口未返回数据:${res["msg"]}'); @@ -318,100 +310,100 @@ class LoginPageController extends GetxController return; //{"code":0,"message":"0","ttl":1,"data":{"status":2,"message":"本次登录环境存在风险, 需使用手机号进行验证或绑定","url":"https://passport.bilibili.com/h5-app/passport/risk/verify?tmp_token=9e785433940891dfa78f033fb7928181&request_id=e5a6d6480df04097870be56c6e60f7ef&source=risk","token_info":null,"cookie_info":null,"sso":null,"is_new":false,"is_tourist":false}} //todo: 后续登录流程:https://ivan.hanloth.cn/archives/530/ - String Url = data['url']!; - Uri currentUri = Uri.parse(Url); - var safeCenterRes = await LoginHttp.safeCenterGetInfo( - tmpCode: currentUri.queryParameters['tmp_token']!); - //{"code":0,"message":"0","ttl":1,"data":{"account_info":{"hide_tel":"111*****111","hide_mail":"aaa*****aaaa.aaa","bind_mail":true,"bind_tel":true,"tel_verify":true,"mail_verify":true,"unneeded_check":false,"bind_safe_question":false,"mid":1111111},"member_info":{"nickname":"xxxxxxx","face":"https://i0.hdslb.com/bfs/face/xxxxxxx.jpg","realname_status":false},"sns_info":{"bind_google":false,"bind_fb":false,"bind_apple":false,"bind_qq":true,"bind_weibo":true,"bind_wechat":false},"account_safe":{"score":80}}} - if (!safeCenterRes['status']) { - SmartDialog.showToast("获取安全验证信息失败,请尝试其它登录方式\n" - "(${safeCenterRes['code']}) ${safeCenterRes['msg']}"); - return; - } - Map accountInfo = { - "hindTel": safeCenterRes['data']['account_info']!["hide_tel"], - "hindMail": safeCenterRes['data']['account_info']!["hide_mail"], - }; - if (!safeCenterRes['data']['account_info']!['tel_verify']) { - SmartDialog.showToast("当前账号未支持手机号验证,请尝试其它登录方式"); - return; - } - TextEditingController _textFieldController = TextEditingController(); - String captchaKey = ''; - Get.dialog(AlertDialog( - title: const Text("本次登录需要验证您的手机号"), - content: Column(children: [ - Text(accountInfo['hindTel'] ?? '未能获取手机号'), - TextField( - controller: _textFieldController, - decoration: const InputDecoration(hintText: "请输入短信验证码"), - ), - ]), - actions: [ - TextButton( - child: const Text("发送验证码 "), - onPressed: () async { - var preCaptureRes = await LoginHttp.preCapture(); - if (!preCaptureRes['status']) { - SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n" - "(${preCaptureRes['code']}) ${preCaptureRes['msg']}"); - return; - } - String geeGt = preCaptureRes['data']['gee_gt']!; - String geeChallenge = preCaptureRes['data']['gee_challenge']; - captchaData.token = preCaptureRes['data']['recaptcha_token']!; + // String Url = data['url']!; + // Uri currentUri = Uri.parse(Url); + // var safeCenterRes = await LoginHttp.safeCenterGetInfo( + // tmpCode: currentUri.queryParameters['tmp_token']!); + // //{"code":0,"message":"0","ttl":1,"data":{"account_info":{"hide_tel":"111*****111","hide_mail":"aaa*****aaaa.aaa","bind_mail":true,"bind_tel":true,"tel_verify":true,"mail_verify":true,"unneeded_check":false,"bind_safe_question":false,"mid":1111111},"member_info":{"nickname":"xxxxxxx","face":"https://i0.hdslb.com/bfs/face/xxxxxxx.jpg","realname_status":false},"sns_info":{"bind_google":false,"bind_fb":false,"bind_apple":false,"bind_qq":true,"bind_weibo":true,"bind_wechat":false},"account_safe":{"score":80}}} + // if (!safeCenterRes['status']) { + // SmartDialog.showToast("获取安全验证信息失败,请尝试其它登录方式\n" + // "(${safeCenterRes['code']}) ${safeCenterRes['msg']}"); + // return; + // } + // Map accountInfo = { + // "hindTel": safeCenterRes['data']['account_info']!["hide_tel"], + // "hindMail": safeCenterRes['data']['account_info']!["hide_mail"], + // }; + // if (!safeCenterRes['data']['account_info']!['tel_verify']) { + // SmartDialog.showToast("当前账号未支持手机号验证,请尝试其它登录方式"); + // return; + // } + // TextEditingController _textFieldController = TextEditingController(); + // String captchaKey = ''; + // Get.dialog(AlertDialog( + // title: const Text("本次登录需要验证您的手机号"), + // content: Column(children: [ + // Text(accountInfo['hindTel'] ?? '未能获取手机号'), + // TextField( + // controller: _textFieldController, + // decoration: const InputDecoration(hintText: "请输入短信验证码"), + // ), + // ]), + // actions: [ + // TextButton( + // child: const Text("发送验证码 "), + // onPressed: () async { + // var preCaptureRes = await LoginHttp.preCapture(); + // if (!preCaptureRes['status']) { + // SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n" + // "(${preCaptureRes['code']}) ${preCaptureRes['msg']}"); + // return; + // } + // String geeGt = preCaptureRes['data']['gee_gt']!; + // String geeChallenge = preCaptureRes['data']['gee_challenge']; + // captchaData.token = preCaptureRes['data']['recaptcha_token']!; - getCaptcha(geeGt, geeChallenge, () async { - var safeCenterSendSmsCodeRes = - await LoginHttp.safeCenterSmsCode( - tmpCode: currentUri.queryParameters['tmp_token']!, - geeChallenge: geeChallenge, - geeSeccode: captchaData.seccode!, - geeValidate: captchaData.validate!, - recaptchaToken: captchaData.token!); - if (!safeCenterSendSmsCodeRes['status']) { - SmartDialog.showToast("发送短信验证码失败,请尝试其它登录方式\n" - "(${safeCenterSendSmsCodeRes['code']}) ${safeCenterSendSmsCodeRes['msg']}"); - return; - } - SmartDialog.showToast("短信验证码已发送,请查收"); - captchaKey = safeCenterSendSmsCodeRes['data']['captcha_key']; - }); - }, - ), - TextButton( - onPressed: Get.back, - child: const Text(" 取消"), - ), - TextButton( - onPressed: () async { - String? code = _textFieldController.text; - if (code.isEmpty) { - SmartDialog.showToast("请输入短信验证码"); - return; - } - var safeCenterSmsVerifyRes = - await LoginHttp.safeCenterSmsVerify( - code: code, - tmpCode: currentUri.queryParameters['tmp_token']!, - requestId: currentUri.queryParameters['request_id']!, - source: currentUri.queryParameters['source']!, - captchaKey: captchaKey, - ); - if (!safeCenterSmsVerifyRes['status']) { - SmartDialog.showToast("验证短信验证码失败,请尝试其它登录方式\n" - "(${safeCenterSmsVerifyRes['code']}) ${safeCenterSmsVerifyRes['msg']}"); - return; - } - SmartDialog.showToast("验证成功,正在登录"); - // loginByPassword(); - }, - child: const Text("确认"), - ), - ], - )); + // getCaptcha(geeGt, geeChallenge, () async { + // var safeCenterSendSmsCodeRes = + // await LoginHttp.safeCenterSmsCode( + // tmpCode: currentUri.queryParameters['tmp_token']!, + // geeChallenge: geeChallenge, + // geeSeccode: captchaData.seccode!, + // geeValidate: captchaData.validate!, + // recaptchaToken: captchaData.token!); + // if (!safeCenterSendSmsCodeRes['status']) { + // SmartDialog.showToast("发送短信验证码失败,请尝试其它登录方式\n" + // "(${safeCenterSendSmsCodeRes['code']}) ${safeCenterSendSmsCodeRes['msg']}"); + // return; + // } + // SmartDialog.showToast("短信验证码已发送,请查收"); + // captchaKey = safeCenterSendSmsCodeRes['data']['captcha_key']; + // }); + // }, + // ), + // TextButton( + // onPressed: Get.back, + // child: const Text(" 取消"), + // ), + // TextButton( + // onPressed: () async { + // String? code = _textFieldController.text; + // if (code.isEmpty) { + // SmartDialog.showToast("请输入短信验证码"); + // return; + // } + // var safeCenterSmsVerifyRes = + // await LoginHttp.safeCenterSmsVerify( + // code: code, + // tmpCode: currentUri.queryParameters['tmp_token']!, + // requestId: currentUri.queryParameters['request_id']!, + // source: currentUri.queryParameters['source']!, + // captchaKey: captchaKey, + // ); + // if (!safeCenterSmsVerifyRes['status']) { + // SmartDialog.showToast("验证短信验证码失败,请尝试其它登录方式\n" + // "(${safeCenterSmsVerifyRes['code']}) ${safeCenterSmsVerifyRes['msg']}"); + // return; + // } + // SmartDialog.showToast("验证成功,正在登录"); + // // loginByPassword(); + // }, + // child: const Text("确认"), + // ), + // ], + // )); - return; + // return; } if (data['token_info'] == null || data['cookie_info'] == null) { SmartDialog.showToast( @@ -479,12 +471,11 @@ class LoginPageController extends GetxController cid: selectedCountryCodeId['country_id'], key: key, ); - print(res); if (res['status']) { SmartDialog.showToast('登录成功'); var data = res['data']; for (var key in data.keys) { - print('$key: ${data[key]}'); + debugPrint('$key: ${data[key]}'); } await afterLoginByApp(data['token_info'], data['cookie_info']); Get.back(); @@ -522,7 +513,6 @@ class LoginPageController extends GetxController gee_challenge: captchaData.geetest?.challenge, recaptcha_token: captchaData.token, ); - print(res); if (res['status']) { SmartDialog.showToast('发送成功'); smsSendTimestamp = DateTime.now().millisecondsSinceEpoch; diff --git a/lib/pages/login/view.dart b/lib/pages/login/view.dart index 265f56cad..98e970983 100644 --- a/lib/pages/login/view.dart +++ b/lib/pages/login/view.dart @@ -95,7 +95,7 @@ class _LoginPageState extends State { RepaintBoundary( key: globalKey, child: Obx(() => QrImageView( - backgroundColor: Theme.of(context).colorScheme.background, + backgroundColor: Theme.of(context).colorScheme.surface, eyeStyle: QrEyeStyle( eyeShape: QrEyeShape.square, color: Theme.of(context).colorScheme.primary, diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index efc4dd65f..b98a65d09 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -25,7 +25,6 @@ class MainController extends GetxController { final StreamController bottomBarStream = StreamController.broadcast(); Box setting = GStorage.setting; - DateTime? _lastPressedAt; late bool hideTabBar; late PageController pageController; int selectedIndex = 0; diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 70ea422cb..69e8600eb 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -7,7 +7,6 @@ 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'; -import 'package:PiliPalaX/pages/media/index.dart'; import 'package:PiliPalaX/utils/event_bus.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/storage.dart'; @@ -24,7 +23,6 @@ class _MainAppState extends State with SingleTickerProviderStateMixin { final MainController _mainController = Get.put(MainController()); final HomeController _homeController = Get.put(HomeController()); final DynamicsController _dynamicController = Get.put(DynamicsController()); - final MediaController _mediaController = Get.put(MediaController()); int? _lastSelectTime; //上次点击时间 Box setting = GStorage.setting; diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index cca6be3af..57d17e22b 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -73,7 +73,7 @@ class MemberController extends GetxController { wwebid = jsonDecode( Uri.decodeComponent(scriptElement?.text ?? ''))['access_id']; } catch (e) { - print('failed to get wwebid: $e'); + debugPrint('failed to get wwebid: $e'); } } @@ -109,7 +109,7 @@ class MemberController extends GetxController { SmartDialog.showToast('账号未登录'); return; } - if (memberInfo.value == null) { + if (memberInfo.value.mid == null) { SmartDialog.showToast('尚未获取到用户信息'); return; } diff --git a/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite_ctr.dart b/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite_ctr.dart index ce6e8b2d9..7518b58bd 100644 --- a/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite_ctr.dart +++ b/lib/pages/member/new/content/member_contribute/content/favorite/member_favorite_ctr.dart @@ -4,9 +4,8 @@ import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/models/space_fav/datum.dart'; import 'package:PiliPalaX/models/space_fav/list.dart'; -import 'package:PiliPalaX/models/space_fav/space_fav.dart'; -import 'package:PiliPalaX/models/user/fav_folder.dart'; 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'; @@ -51,7 +50,7 @@ class MemberFavoriteCtr extends CommonController { secondEnd.value = (res[1].mediaListResponse?.count ?? -1) <= (res[1].mediaListResponse?.list?.length ?? -1); } catch (e) { - print(e.toString()); + debugPrint(e.toString()); } loadingState.value = response; return true; diff --git a/lib/pages/member/new/content/member_dynamic/member_dynamic.dart b/lib/pages/member/new/content/member_dynamic/member_dynamic.dart index 78882a9bd..55575288f 100644 --- a/lib/pages/member/new/content/member_dynamic/member_dynamic.dart +++ b/lib/pages/member/new/content/member_dynamic/member_dynamic.dart @@ -28,13 +28,6 @@ class _MemberDynamicState extends State @override Widget build(BuildContext context) { super.build(context); - return ListView.separated( - itemCount: 100, - itemBuilder: (_, index) { - return ListTile(title: Text(index.toString())); - }, - separatorBuilder: (_, index) => const SizedBox(height: 10), - ); return Obx(() => _buildBody(_controller.loadingState.value)); } diff --git a/lib/pages/member/new/content/member_home/member_home.dart b/lib/pages/member/new/content/member_home/member_home.dart index ccd75d521..89435fe6c 100644 --- a/lib/pages/member/new/content/member_home/member_home.dart +++ b/lib/pages/member/new/content/member_home/member_home.dart @@ -250,10 +250,10 @@ class _MemberHomeState extends State if (contributeCtr.tabController?.index != index1) { contributeCtr.tabController?.index = index1; } - print('initialized'); + debugPrint('initialized'); } catch (e) { _ctr.contributeInitialIndex.value = index1; - print('not initialized'); + debugPrint('not initialized'); } } _ctr.tabController?.animateTo(index); diff --git a/lib/pages/member/new/member_page.dart b/lib/pages/member/new/member_page.dart index 397800fc8..d79613171 100644 --- a/lib/pages/member/new/member_page.dart +++ b/lib/pages/member/new/member_page.dart @@ -6,7 +6,6 @@ import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/pages/member/new/content/member_contribute/content/bangumi/member_bangumi.dart'; import 'package:PiliPalaX/pages/member/new/content/member_contribute/content/favorite/member_favorite.dart'; import 'package:PiliPalaX/pages/member/new/content/member_contribute/member_contribute.dart'; -import 'package:PiliPalaX/pages/member/new/content/member_dynamic/member_dynamic.dart'; import 'package:PiliPalaX/pages/member/new/content/member_home/member_home.dart'; import 'package:PiliPalaX/pages/member/new/controller.dart'; import 'package:PiliPalaX/pages/member/new/widget/user_info_card.dart'; diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index 19deba3a8..36ab9d59c 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -1,10 +1,6 @@ import 'dart:async'; -import 'package:PiliPalaX/grpc/app/dynamic/v2/dynamic.pb.dart' as dyn; -import 'package:PiliPalaX/grpc/grpc_repo.dart'; import 'package:PiliPalaX/http/member.dart'; -import 'package:PiliPalaX/http/user.dart'; -import 'package:PiliPalaX/models/member/info.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; diff --git a/lib/pages/member/widgets/seasons.dart b/lib/pages/member/widgets/seasons.dart index 9601ef86a..3836be0fa 100644 --- a/lib/pages/member/widgets/seasons.dart +++ b/lib/pages/member/widgets/seasons.dart @@ -48,7 +48,7 @@ class MemberSeasonsPanel extends StatelessWidget { onPressed: () => Get.toNamed( '/memberSeasons?mid=${item.meta!.mid}&seasonId=${item.meta!.seasonId}'), style: ButtonStyle( - padding: MaterialStateProperty.all(EdgeInsets.zero), + padding: WidgetStateProperty.all(EdgeInsets.zero), ), icon: const Icon( Icons.arrow_forward_ios, diff --git a/lib/pages/member_coin/widgets/item.dart b/lib/pages/member_coin/widgets/item.dart index fc745ec76..b97ed52ab 100644 --- a/lib/pages/member_coin/widgets/item.dart +++ b/lib/pages/member_coin/widgets/item.dart @@ -12,9 +12,9 @@ class MemberCoinsItem extends StatelessWidget { final MemberCoinsDataModel coinItem; const MemberCoinsItem({ - Key? key, + super.key, required this.coinItem, - }) : super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/pages/member_seasons/widgets/item.dart b/lib/pages/member_seasons/widgets/item.dart index 2514b07fe..e6146b203 100644 --- a/lib/pages/member_seasons/widgets/item.dart +++ b/lib/pages/member_seasons/widgets/item.dart @@ -11,9 +11,9 @@ class MemberSeasonsItem extends StatelessWidget { final dynamic seasonItem; const MemberSeasonsItem({ - Key? key, + super.key, required this.seasonItem, - }) : super(key: key); + }); @override Widget build(BuildContext context) { @@ -25,7 +25,7 @@ class MemberSeasonsItem extends StatelessWidget { child: InkWell( onTap: () async { int cid = - await SearchHttp.ab2c(aid: seasonItem.aid, bvid: seasonItem.bvid); + await SearchHttp.ab2c(aid: seasonItem.aid, bvid: seasonItem.bvid); Get.toNamed('/video?bvid=${seasonItem.bvid}&cid=$cid', arguments: {'videoItem': seasonItem, 'heroTag': heroTag}); }, diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index 34fd82dee..83f062d47 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -363,11 +363,11 @@ class ActionItem extends StatelessWidget { final String? text; const ActionItem({ - Key? key, + super.key, this.icon, this.onTap, this.text, - }) : super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/pages/msg_feed_top/sys_msg/view.dart b/lib/pages/msg_feed_top/sys_msg/view.dart index 67458dde1..b722b2169 100644 --- a/lib/pages/msg_feed_top/sys_msg/view.dart +++ b/lib/pages/msg_feed_top/sys_msg/view.dart @@ -171,7 +171,7 @@ class _SysMsgPageState extends State { InlineSpan _buildContent(String content) { final List spanChildren = []; RegExp urlRegExp = RegExp( - r'#\{([^}]*)\}\{([^}]*)\}|https?:\/\/[^\s/\$.?#].[^\s]*|www\.[^\s/\$.?#].[^\s]*|\【(.*?)\】'); + r'#\{([^}]*)\}\{([^}]*)\}|https?:\/\/[^\s/\$.?#].[^\s]*|www\.[^\s/\$.?#].[^\s]*|【(.*?)】'); content.splitMapJoin( urlRegExp, onMatch: (Match match) { diff --git a/lib/pages/preview/view.dart b/lib/pages/preview/view.dart index 0ed9a910a..18ee001ba 100644 --- a/lib/pages/preview/view.dart +++ b/lib/pages/preview/view.dart @@ -18,10 +18,10 @@ class ImagePreview extends StatefulWidget { final int? initialPage; final List? imgList; const ImagePreview({ - Key? key, + super.key, this.initialPage, this.imgList, - }) : super(key: key); + }); @override _ImagePreviewState createState() => _ImagePreviewState(); @@ -35,7 +35,6 @@ class _ImagePreviewState extends State Animation? _doubleClickAnimation; late DoubleClickAnimationListener _doubleClickAnimationListener; List doubleTapScales = [1.0, 2.0]; - bool _dismissDisabled = false; List? imgList; @override @@ -192,14 +191,10 @@ class _ImagePreviewState extends State _doubleClickAnimationController.reset(); if (begin == doubleTapScales[0]) { - setState(() { - _dismissDisabled = true; - }); + setState(() {}); end = doubleTapScales[1]; } else { - setState(() { - _dismissDisabled = false; - }); + setState(() {}); end = doubleTapScales[0]; } diff --git a/lib/pages/rank/view.dart b/lib/pages/rank/view.dart index 44b43234a..8d600376b 100644 --- a/lib/pages/rank/view.dart +++ b/lib/pages/rank/view.dart @@ -3,7 +3,7 @@ import 'package:get/get.dart'; import './controller.dart'; class RankPage extends StatefulWidget { - const RankPage({Key? key}) : super(key: key); + const RankPage({super.key}); @override State createState() => _RankPageState(); diff --git a/lib/pages/rank/zone/view.dart b/lib/pages/rank/zone/view.dart index d7d5485eb..a878f8465 100644 --- a/lib/pages/rank/zone/view.dart +++ b/lib/pages/rank/zone/view.dart @@ -17,7 +17,7 @@ import 'package:PiliPalaX/pages/rank/zone/index.dart'; import '../../../utils/grid.dart'; class ZonePage extends StatefulWidget { - const ZonePage({Key? key, required this.rid}) : super(key: key); + const ZonePage({super.key, required this.rid}); final int rid; diff --git a/lib/pages/search_panel/view.dart b/lib/pages/search_panel/view.dart index fdf282075..d7600ae78 100644 --- a/lib/pages/search_panel/view.dart +++ b/lib/pages/search_panel/view.dart @@ -20,9 +20,12 @@ class SearchPanel extends StatefulWidget { final String? keyword; final SearchType? searchType; final String? tag; - const SearchPanel( - {required this.keyword, required this.searchType, this.tag, Key? key}) - : super(key: key); + const SearchPanel({ + super.key, + required this.keyword, + required this.searchType, + this.tag, + }); @override State createState() => _SearchPanelState(); diff --git a/lib/pages/search_panel/widgets/live_panel.dart b/lib/pages/search_panel/widgets/live_panel.dart index 6ff7f2cf0..aeb0e28bc 100644 --- a/lib/pages/search_panel/widgets/live_panel.dart +++ b/lib/pages/search_panel/widgets/live_panel.dart @@ -42,7 +42,7 @@ Widget searchLivePanel(BuildContext context, ctr, loadingState) { class LiveItem extends StatelessWidget { final dynamic liveItem; - const LiveItem({Key? key, required this.liveItem}) : super(key: key); + const LiveItem({super.key, required this.liveItem}); @override Widget build(BuildContext context) { @@ -109,7 +109,7 @@ class LiveItem extends StatelessWidget { class LiveContent extends StatelessWidget { final dynamic liveItem; - const LiveContent({Key? key, required this.liveItem}) : super(key: key); + const LiveContent({super.key, required this.liveItem}); @override Widget build(BuildContext context) { return Expanded( @@ -159,8 +159,7 @@ class LiveStat extends StatelessWidget { final int? online; final String? cateName; - const LiveStat({Key? key, required this.online, this.cateName}) - : super(key: key); + const LiveStat({super.key, required this.online, this.cateName}); @override Widget build(BuildContext context) { diff --git a/lib/pages/search_panel/widgets/media_bangumi_panel.dart b/lib/pages/search_panel/widgets/media_bangumi_panel.dart index e9488e4e9..63aecd684 100644 --- a/lib/pages/search_panel/widgets/media_bangumi_panel.dart +++ b/lib/pages/search_panel/widgets/media_bangumi_panel.dart @@ -1,14 +1,9 @@ import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/http/loading_state.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:get/get.dart'; import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/widgets/badge.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; -import 'package:PiliPalaX/http/search.dart'; -import 'package:PiliPalaX/models/bangumi/info.dart'; -import 'package:PiliPalaX/models/common/search_type.dart'; import 'package:PiliPalaX/utils/utils.dart'; import '../../../utils/grid.dart'; diff --git a/lib/pages/search_panel/widgets/video_panel.dart b/lib/pages/search_panel/widgets/video_panel.dart index 2366df9f6..ca1768e49 100644 --- a/lib/pages/search_panel/widgets/video_panel.dart +++ b/lib/pages/search_panel/widgets/video_panel.dart @@ -18,8 +18,8 @@ class SearchVideoPanel extends StatelessWidget { SearchVideoPanel({ required this.ctr, required this.loadingState, - Key? key, - }) : super(key: key); + super.key, + }); final SearchPanelController ctr; final dynamic loadingState; @@ -55,7 +55,7 @@ class SearchVideoPanel extends StatelessWidget { type: i['type'], selectedType: controller.selectedType.value, callFn: (bool selected) async { - print('selected: $selected'); + debugPrint('selected: $selected'); controller.selectedType.value = i['type']; ctr.order.value = i['type'].toString().split('.').last; @@ -136,8 +136,8 @@ class CustomFilterChip extends StatelessWidget { this.type, this.selectedType, this.callFn, - Key? key, - }) : super(key: key); + super.key, + }); final String? label; final ArchiveFilterType? type; diff --git a/lib/pages/setting/controller.dart b/lib/pages/setting/controller.dart index 66a756a00..424a2b138 100644 --- a/lib/pages/setting/controller.dart +++ b/lib/pages/setting/controller.dart @@ -79,7 +79,7 @@ class SettingController extends GetxController { controller.clearLocalStorage(); WebViewCookieManager().clearCookies(); } catch (e) { - print(e); + debugPrint(e.toString()); } userLogin.value = false; if (Get.isRegistered()) { diff --git a/lib/pages/setting/extra_setting.dart b/lib/pages/setting/extra_setting.dart index 5301bc701..54487bfb8 100644 --- a/lib/pages/setting/extra_setting.dart +++ b/lib/pages/setting/extra_setting.dart @@ -158,10 +158,10 @@ class _ExtraSettingState extends State { alignment: Alignment.centerRight, scale: 0.8, child: Switch( - thumbIcon: MaterialStateProperty.resolveWith( - (Set states) { + thumbIcon: WidgetStateProperty.resolveWith( + (Set states) { if (states.isNotEmpty && - states.first == MaterialState.selected) { + states.first == WidgetState.selected) { return const Icon(Icons.done); } return null; // All other states will use the default thumbIcon. @@ -287,10 +287,10 @@ class _ExtraSettingState extends State { alignment: Alignment.centerRight, scale: 0.8, child: Switch( - thumbIcon: MaterialStateProperty.resolveWith( - (Set states) { + thumbIcon: WidgetStateProperty.resolveWith( + (Set states) { if (states.isNotEmpty && - states.first == MaterialState.selected) { + states.first == WidgetState.selected) { return const Icon(Icons.done); } return null; // All other states will use the default thumbIcon. diff --git a/lib/pages/setting/hidden_settings.dart b/lib/pages/setting/hidden_settings.dart deleted file mode 100644 index fed22c1fb..000000000 --- a/lib/pages/setting/hidden_settings.dart +++ /dev/null @@ -1,89 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -class HiddenSetting extends StatefulWidget { - const HiddenSetting({super.key}); - - @override - State createState() => _HiddenSettingState(); -} - -class _HiddenSettingState extends State { - - @override - void initState() { - super.initState(); - } - - void test(Object? val) { - print(val); - } - - @override - Widget build(BuildContext context) { - TextStyle titleStyle = Theme.of(context).textTheme.titleMedium!; - return Scaffold( - appBar: AppBar( - centerTitle: false, - titleSpacing: 0, - title: Text( - '开发人员选项', - style: Theme.of(context).textTheme.titleMedium, - ), - ), - body: Column( - children: [ - ListTile( - title: Text('手动产生异常', style: titleStyle), - dense: false, - subtitle: Column( - children: [ - ListTile( - onTap: () { - test([][0]); - }, - dense: true, - title: const Text('数组越界'), - ), - ListTile( - onTap: () { - test(null!.value); - }, - dense: true, - title: const Text('非空断言'), - ), - ListTile( - onTap: () { - test(int.parse("壹")); - }, - dense: true, - title: const Text('非法整数解析'), - ), - ListTile( - onTap: () { - test(DateTime.parse("2050-01-aa")); - }, - dense: true, - title: const Text('非法日期解析'), - ), - ListTile( - onTap: () { - throw Exception("测试异常"); - }, - dense: true, - title: const Text('抛出测试异常'), - ), - ], - ), - ), - ListTile( - title: const Text('查看日志'), - onTap: () { - Get.toNamed('/logs'); - }, - ), - ], - ), - ); - } -} diff --git a/lib/pages/setting/pages/display_mode.dart b/lib/pages/setting/pages/display_mode.dart index 1d95f8a9d..7cb1951f2 100644 --- a/lib/pages/setting/pages/display_mode.dart +++ b/lib/pages/setting/pages/display_mode.dart @@ -52,7 +52,7 @@ class _SetDisplayModeState extends State { try { modes = await FlutterDisplayMode.supported; } on PlatformException catch (e) { - print(e); + debugPrint(e.toString()); } var res = await getDisplayModeType(modes); diff --git a/lib/pages/setting/privacy_setting.dart b/lib/pages/setting/privacy_setting.dart index 212d8cc7e..cde9525d0 100644 --- a/lib/pages/setting/privacy_setting.dart +++ b/lib/pages/setting/privacy_setting.dart @@ -1,17 +1,11 @@ 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/http/interceptor_anonymity.dart'; -import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/utils/storage.dart'; -import '../../http/user.dart'; import '../../models/user/info.dart'; -import '../../utils/login.dart'; -import '../home/controller.dart'; -import '../media/controller.dart'; import '../mine/controller.dart'; class PrivacySetting extends StatefulWidget { @@ -132,5 +126,4 @@ class _PrivacySettingState extends State { ), ); } - } diff --git a/lib/pages/setting/recommend_setting.dart b/lib/pages/setting/recommend_setting.dart index 9b6f83af2..415c21ad3 100644 --- a/lib/pages/setting/recommend_setting.dart +++ b/lib/pages/setting/recommend_setting.dart @@ -1,12 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:hive/hive.dart'; -import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/models/common/rcmd_type.dart'; import 'package:PiliPalaX/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPalaX/utils/recommend_filter.dart'; import 'package:PiliPalaX/utils/storage.dart'; -import 'package:get/get.dart'; import 'widgets/switch_item.dart'; @@ -94,12 +92,10 @@ class _RecommendSettingState extends State { SmartDialog.showToast('尚未登录,无法收到个性化推荐'); } } - if (result != null) { - defaultRcmdType = result; - setting.put(SettingBoxKey.defaultRcmdType, result); - SmartDialog.showToast('下次启动时生效'); - setState(() {}); - } + defaultRcmdType = result; + setting.put(SettingBoxKey.defaultRcmdType, result); + SmartDialog.showToast('下次启动时生效'); + setState(() {}); } }, ), diff --git a/lib/pages/setting/widgets/select_item.dart b/lib/pages/setting/widgets/select_item.dart index 2218d8c0c..71e985b44 100644 --- a/lib/pages/setting/widgets/select_item.dart +++ b/lib/pages/setting/widgets/select_item.dart @@ -11,8 +11,8 @@ class SetSelectItem extends StatefulWidget { this.title, this.subTitle, this.setKey, - Key? key, - }) : super(key: key); + super.key, + }); @override State createState() => _SetSelectItemState(); diff --git a/lib/pages/setting/widgets/switch_item.dart b/lib/pages/setting/widgets/switch_item.dart index 0247c4fd8..25991c43f 100644 --- a/lib/pages/setting/widgets/switch_item.dart +++ b/lib/pages/setting/widgets/switch_item.dart @@ -23,8 +23,8 @@ class SetSwitchItem extends StatefulWidget { this.needReboot, this.leading, this.onTap, - Key? key, - }) : super(key: key); + super.key, + }); @override State createState() => _SetSwitchItemState(); diff --git a/lib/pages/subscription_detail/widget/sub_video_card.dart b/lib/pages/subscription_detail/widget/sub_video_card.dart index da803e816..2973e05f8 100644 --- a/lib/pages/subscription_detail/widget/sub_video_card.dart +++ b/lib/pages/subscription_detail/widget/sub_video_card.dart @@ -16,10 +16,10 @@ class SubVideoCardH extends StatelessWidget { final int? searchType; const SubVideoCardH({ - Key? key, + super.key, required this.videoItem, this.searchType, - }) : super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index 4601e27a0..2393146c3 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -282,7 +282,7 @@ class VideoDetailController extends GetxController ); }).toList(); } catch (e) { - print(e.toString()); + debugPrint(e.toString()); } } } @@ -572,7 +572,7 @@ class VideoDetailController extends GetxController return result; } final List allVideosList = data.dash!.video!; - // print("allVideosList:${allVideosList}"); + // debugPrint("allVideosList:${allVideosList}"); // 当前可播放的最高质量视频 int currentHighVideoQa = allVideosList.first.quality!.code; // 预设的画质为null,则当前可用的最高质量 diff --git a/lib/pages/video/detail/introduction/controller.dart b/lib/pages/video/detail/introduction/controller.dart index ae48ca69e..644fe911d 100644 --- a/lib/pages/video/detail/introduction/controller.dart +++ b/lib/pages/video/detail/introduction/controller.dart @@ -3,7 +3,6 @@ import 'dart:math'; import 'package:PiliPalaX/grpc/grpc_repo.dart'; import 'package:PiliPalaX/http/loading_state.dart'; -import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -24,8 +23,6 @@ import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/id_utils.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:share_plus/share_plus.dart'; -import 'package:PiliPalaX/pages/member/controller.dart'; -import 'package:url_launcher/url_launcher.dart'; import '../../../../http/search.dart'; import '../../../../models/model_hot_video_item.dart'; @@ -180,7 +177,6 @@ class VideoIntroController extends GetxController Future queryUserStat() async { var result = await UserHttp.userStat(mid: videoDetail.value.owner!.mid!); if (result['status']) { - print(result['data']); userStat.value = result['data']; userStat.refresh(); } @@ -288,7 +284,6 @@ class VideoIntroController extends GetxController void coinVideo(int coin) async { var res = await VideoHttp.coinVideo(bvid: bvid, multiply: coin); if (res['status']) { - print(res); SmartDialog.showToast('投币成功'); hasCoin.value = true; videoDetail.value.stat!.coin = videoDetail.value.stat!.coin! + coin; @@ -393,7 +388,7 @@ class VideoIntroController extends GetxController } } catch (e) { // ignore: avoid_print - print(e); + debugPrint(e.toString()); } SmartDialog.showLoading(msg: '请求中'); var result = await VideoHttp.favVideo( diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index a8e1d9d84..42e177998 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -115,14 +115,14 @@ class VideoInfo extends StatefulWidget { final Function showEpisodes; const VideoInfo({ - Key? key, + super.key, this.loadingStatus = false, this.videoDetail, this.heroTag, required this.showAiBottomSheet, required this.showIntroDetail, required this.showEpisodes, - }) : super(key: key); + }); @override State createState() => _VideoInfoState(); @@ -300,10 +300,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { const SizedBox(height: 0), Obx( () => Text( - Utils.numFormat(videoIntroController - .userStat.value['follower']), - semanticsLabel: - "${Utils.numFormat(videoIntroController.userStat.value['follower'])}粉丝", + '${Utils.numFormat(videoIntroController.userStat.value['follower'])}粉丝', style: TextStyle( fontSize: 12, color: t.colorScheme.outline, diff --git a/lib/pages/video/detail/introduction/widgets/action_item.dart b/lib/pages/video/detail/introduction/widgets/action_item.dart index 0407c9ebf..b1d562176 100644 --- a/lib/pages/video/detail/introduction/widgets/action_item.dart +++ b/lib/pages/video/detail/introduction/widgets/action_item.dart @@ -17,7 +17,7 @@ class ActionItem extends StatefulWidget { final Function? callBack; const ActionItem({ - Key? key, + super.key, this.icon, this.selectIcon, this.onTap, @@ -29,7 +29,7 @@ class ActionItem extends StatefulWidget { this.hasOneThree = false, this.callBack, required this.semanticsLabel, - }) : super(key: key); + }); @override State createState() => ActionItemState(); diff --git a/lib/pages/video/detail/introduction/widgets/action_row_item.dart b/lib/pages/video/detail/introduction/widgets/action_row_item.dart index 66404f3c2..bb5df3460 100644 --- a/lib/pages/video/detail/introduction/widgets/action_row_item.dart +++ b/lib/pages/video/detail/introduction/widgets/action_row_item.dart @@ -11,7 +11,7 @@ class ActionRowItem extends StatelessWidget { final Function? onLongPress; const ActionRowItem({ - Key? key, + super.key, this.icon, this.selectIcon, this.onTap, @@ -19,7 +19,7 @@ class ActionRowItem extends StatelessWidget { this.text, this.selectStatus = false, this.onLongPress, - }) : super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/pages/video/detail/introduction/widgets/group_panel.dart b/lib/pages/video/detail/introduction/widgets/group_panel.dart index 01995bf74..826758aec 100644 --- a/lib/pages/video/detail/introduction/widgets/group_panel.dart +++ b/lib/pages/video/detail/introduction/widgets/group_panel.dart @@ -6,8 +6,6 @@ import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/models/member/tags.dart'; import 'package:PiliPalaX/utils/feed_back.dart'; -import '../../../../../utils/utils.dart'; - class GroupPanel extends StatefulWidget { final int? mid; final List? tags; diff --git a/lib/pages/video/detail/introduction/widgets/menu_row.dart b/lib/pages/video/detail/introduction/widgets/menu_row.dart index f741332fb..8ed4b729d 100644 --- a/lib/pages/video/detail/introduction/widgets/menu_row.dart +++ b/lib/pages/video/detail/introduction/widgets/menu_row.dart @@ -12,7 +12,7 @@ class MenuRow extends StatelessWidget { Widget build(BuildContext context) { return Container( width: double.infinity, - color: Theme.of(context).colorScheme.background, + color: Theme.of(context).colorScheme.surface, padding: const EdgeInsets.only(top: 9, bottom: 9, left: 12), child: SingleChildScrollView( scrollDirection: Axis.horizontal, @@ -84,7 +84,7 @@ class MenuRow extends StatelessWidget { style: TextStyle( fontSize: 13, color: selectStatus - ? Theme.of(context).colorScheme.onBackground + ? Theme.of(context).colorScheme.onSurface : Theme.of(context).colorScheme.outline), ), ), diff --git a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart index 6fa66eb3d..4920a81cf 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart @@ -770,7 +770,7 @@ InlineSpan buildContent( 0; isValid = seek * 1000 <= duration; } catch (e) { - print('failed to validate: $e'); + debugPrint('failed to validate: $e'); } spanChildren.add( TextSpan( diff --git a/lib/pages/video/detail/reply_new/view.dart b/lib/pages/video/detail/reply_new/view.dart index ad6feddb4..3b5e6969a 100644 --- a/lib/pages/video/detail/reply_new/view.dart +++ b/lib/pages/video/detail/reply_new/view.dart @@ -155,7 +155,7 @@ class _VideoReplyNewDialogState extends State topLeft: Radius.circular(12), topRight: Radius.circular(12), ), - color: Theme.of(context).colorScheme.background, + color: Theme.of(context).colorScheme.surface, ), child: Column( mainAxisSize: MainAxisSize.min, diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index e81d1cee1..a135497f7 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -43,7 +43,7 @@ import '../../../services/shutdown_timer_service.dart'; import 'widgets/header_control.dart'; class VideoDetailPage extends StatefulWidget { - const VideoDetailPage({Key? key}) : super(key: key); + const VideoDetailPage({super.key}); @override State createState() => _VideoDetailPageState(); @@ -355,7 +355,7 @@ class _VideoDetailPageState extends State } super.didPopNext(); videoDetailController.isFirstTime = false; - final bool autoplay = autoPlayEnable; + // final bool autoplay = autoPlayEnable; videoDetailController.autoPlay.value = !videoDetailController.isShowCover.value; if (videoDetailController.videoUrl != null) { @@ -372,11 +372,11 @@ class _VideoDetailPageState extends State videoIntroController.isPaused = false; // if (autoplay) { // // await Future.delayed(const Duration(milliseconds: 300)); - // print(plPlayerController); + // debugPrint(plPlayerController); // if (plPlayerController?.buffered.value == Duration.zero) { // _bufferedListener = plPlayerController?.buffered.listen((p0) { - // print("p0"); - // print(p0); + // debugPrint("p0"); + // debugPrint(p0); // if (p0 > Duration.zero) { // _bufferedListener!.cancel(); // plPlayerController?.seekTo(videoDetailController.defaultST); @@ -463,7 +463,7 @@ class _VideoDetailPageState extends State () { double videoHeight = context.width * 9 / 16; final double videoWidth = context.width; - // print(videoDetailController.tabCtr.index); + // debugPrint(videoDetailController.tabCtr.index); if (enableVerticalExpand && plPlayerController?.direction.value == 'vertical') { videoHeight = context.width; diff --git a/lib/pages/video/detail/widgets/ai_detail.dart b/lib/pages/video/detail/widgets/ai_detail.dart index 22409c422..7fa819b07 100644 --- a/lib/pages/video/detail/widgets/ai_detail.dart +++ b/lib/pages/video/detail/widgets/ai_detail.dart @@ -10,9 +10,9 @@ class AiDetail extends StatelessWidget { final ModelResult? modelResult; const AiDetail({ - Key? key, + super.key, this.modelResult, - }) : super(key: key); + }); @override Widget build(BuildContext context) { diff --git a/lib/pages/video/detail/widgets/app_bar.dart b/lib/pages/video/detail/widgets/app_bar.dart index db9d0368e..b267983ec 100644 --- a/lib/pages/video/detail/widgets/app_bar.dart +++ b/lib/pages/video/detail/widgets/app_bar.dart @@ -6,12 +6,12 @@ class ScrollAppBar extends StatelessWidget { final Function callback; final PlayerStatus playerStatus; - const ScrollAppBar( - this.scrollVal, - this.callback, - this.playerStatus, - Key? key, - ) : super(key: key); + const ScrollAppBar({ + super.key, + required this.scrollVal, + required this.callback, + required this.playerStatus, + }); @override Widget build(BuildContext context) { @@ -29,7 +29,7 @@ class ScrollAppBar extends StatelessWidget { opacity: scrollDistance / (videoHeight - kToolbarHeight), child: Container( height: statusBarHeight + kToolbarHeight, - color: Theme.of(context).colorScheme.background, + color: Theme.of(context).colorScheme.surface, padding: EdgeInsets.only(top: statusBarHeight), child: AppBar( primary: false, diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index 6a0a3094c..105e0ba0f 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -167,9 +167,9 @@ class _HeaderControlState extends State { // scale: 0.75, // child: Switch( // thumbIcon: WidgetStateProperty.resolveWith( - // (Set states) { + // (Set states) { // if (states.isNotEmpty && - // states.first == MaterialState.selected) { + // states.first == WidgetState.selected) { // return const Icon(Icons.done); // } // return null; // All other states will use the default thumbIcon. @@ -1328,7 +1328,7 @@ class _HeaderControlState extends State { @override Widget build(BuildContext context) { - final _ = widget.controller!; + final plPlayerController = widget.controller!; // final bool isLandscape = // MediaQuery.of(context).orientation == Orientation.landscape; @@ -1475,20 +1475,22 @@ class _HeaderControlState extends State { height: 34, child: Obx( () => IconButton( - tooltip: "${_.isOpenDanmu.value ? '关闭' : '开启'}弹幕", + tooltip: + "${plPlayerController.isOpenDanmu.value ? '关闭' : '开启'}弹幕", style: ButtonStyle( padding: WidgetStateProperty.all(EdgeInsets.zero), ), onPressed: () { - _.isOpenDanmu.value = !_.isOpenDanmu.value; - setting.put( - SettingBoxKey.enableShowDanmaku, _.isOpenDanmu.value); + plPlayerController.isOpenDanmu.value = + !plPlayerController.isOpenDanmu.value; + setting.put(SettingBoxKey.enableShowDanmaku, + plPlayerController.isOpenDanmu.value); SmartDialog.showToast( - "已${_.isOpenDanmu.value ? '开启' : '关闭'}弹幕", + "已${plPlayerController.isOpenDanmu.value ? '开启' : '关闭'}弹幕", displayTime: const Duration(seconds: 1)); }, icon: Icon( - _.isOpenDanmu.value + plPlayerController.isOpenDanmu.value ? Icons.subtitles_outlined : Icons.subtitles_off_outlined, size: 19, @@ -1514,7 +1516,7 @@ class _HeaderControlState extends State { bool enableBackgroundPlay = setting.get( SettingBoxKey.enableBackgroundPlay, defaultValue: false); - if (!enableBackgroundPlay) { + if (!enableBackgroundPlay && context.mounted) { // SmartDialog.showToast('建议开启【后台播放】功能\n避免画中画没有暂停按钮'); // await Future.delayed(const Duration(seconds: 2), () { // }); @@ -1551,7 +1553,8 @@ class _HeaderControlState extends State { }), ), onPressed: () async { - _.setBackgroundPlay(true); + plPlayerController + .setBackgroundPlay(true); SmartDialog.showToast("请重新载入本页面刷新"); // Get.back(); }, diff --git a/lib/pages/webview/controller.dart b/lib/pages/webview/controller.dart index 5ce14adc4..0354d5b8f 100644 --- a/lib/pages/webview/controller.dart +++ b/lib/pages/webview/controller.dart @@ -1,5 +1,6 @@ // ignore_for_file: avoid_print +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/http/init.dart'; import 'package:PiliPalaX/utils/event_bus.dart'; @@ -56,17 +57,16 @@ class WebviewController extends GetxController { }, onPageFinished: (String url) async { if (type.value == 'liveRoom') { - print("adding"); //注入js controller.runJavaScriptReturningResult(''' document.styleSheets[0].insertRule('div.open-app-btn.bili-btn-warp {display:none;}', 0); document.styleSheets[0].insertRule('#app__display-area > div.control-panel {display:none;}', 0); - ''').then((value) => print(value)); + ''').then((value) => debugPrint(value.toString())); } else if (type.value == 'whisper') { controller.runJavaScriptReturningResult(''' document.querySelector('#internationalHeader').remove(); document.querySelector('#message-navbar').remove(); - ''').then((value) => print(value)); + ''').then((value) => debugPrint(value.toString())); } pageTitle.value = await controller.getTitle() ?? ''; }, diff --git a/lib/pages/webview/view.dart b/lib/pages/webview/view.dart index f4d89a644..c9324e83a 100644 --- a/lib/pages/webview/view.dart +++ b/lib/pages/webview/view.dart @@ -3,7 +3,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:url_launcher/url_launcher.dart'; import 'controller.dart'; import 'package:webview_flutter/webview_flutter.dart'; diff --git a/lib/pages/whisper_detail/controller.dart b/lib/pages/whisper_detail/controller.dart index 7a7f1ae73..9f83dadef 100644 --- a/lib/pages/whisper_detail/controller.dart +++ b/lib/pages/whisper_detail/controller.dart @@ -39,8 +39,8 @@ class WhisperDetailController extends GetxController { if (messageList.length == 1 && messageList.last.msgType == 18 && messageList.last.msgSource == 18) { - // print(messageList.last); - // print(messageList.last.content); + // debugPrint(messageList.last); + // debugPrint(messageList.last.content); //{content: [{"text":"对方主动回复或关注你前,最多发送1条消息","color_day":"#9499A0","color_nig":"#9499A0"}]} } else { ackSessionMsg(); @@ -96,7 +96,7 @@ class WhisperDetailController extends GetxController { msgType: picMsg != null ? 2 : 1, ); if (result['status']) { - // print(result['data']); + // debugPrint(result['data']); querySessionMsg(); replyContentController.text = ""; SmartDialog.dismiss(); diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index 8a2f9fa32..66c5b9d85 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -163,7 +163,7 @@ class _WhisperDetailPageState extends State { itemBuilder: (_, int i) { return ChatItem( item: messageList[i], - e_infos: _whisperDetailController.eInfos, + eInfos: _whisperDetailController.eInfos, ); }, padding: const EdgeInsets.only(bottom: 20), diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index bdc7245c8..76590df69 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -1,5 +1,3 @@ -// ignore_for_file: must_be_immutable - import 'dart:convert'; import 'package:flutter/material.dart'; @@ -40,13 +38,13 @@ enum MsgType { } class ChatItem extends StatelessWidget { - dynamic item; - List? e_infos; + final dynamic item; + final List? eInfos; - ChatItem({ + const ChatItem({ super.key, this.item, - this.e_infos, + this.eInfos, }); @override @@ -55,11 +53,11 @@ class ChatItem extends StatelessWidget { item.senderUid == GStorage.userInfo.get('userInfoCache')?.mid; bool isPic = item.msgType == MsgType.pic.value; // 图片 - bool isText = item.msgType == MsgType.text.value; // 文本 + // bool isText = item.msgType == MsgType.text.value; // 文本 // bool isArchive = item.msgType == 11; // 投稿 // bool isArticle = item.msgType == 12; // 专栏 bool isRevoke = item.msgType == MsgType.revoke.value; // 撤回消息 - bool isShareV2 = item.msgType == MsgType.share_v2.value; + // bool isShareV2 = item.msgType == MsgType.share_v2.value; bool isSystem = item.msgType == MsgType.notify_text.value || item.msgType == MsgType.notify_msg.value || item.msgType == MsgType.pic_card.value || @@ -73,17 +71,16 @@ class ChatItem extends StatelessWidget { Widget richTextMessage(BuildContext context) { var text = content['content']; - if (e_infos != null) { + if (eInfos != null) { final List children = []; Map emojiMap = {}; - for (var e in e_infos!) { + for (var e in eInfos!) { emojiMap[e['text']] = e['url']; } text.splitMapJoin( RegExp(r"\[[^\[\]]+\]"), onMatch: (Match match) { final String emojiKey = match[0]!; - print(emojiKey); if (emojiMap.containsKey(emojiKey)) { children.add(WidgetSpan( child: NetworkImgLayer( @@ -457,8 +454,8 @@ class ChatItem extends StatelessWidget { } class SystemNotice extends StatelessWidget { - dynamic item; - SystemNotice({super.key, this.item}); + final dynamic item; + const SystemNotice({super.key, this.item}); @override Widget build(BuildContext context) { @@ -515,8 +512,8 @@ class SystemNotice extends StatelessWidget { } class SystemNotice2 extends StatelessWidget { - dynamic item; - SystemNotice2({super.key, this.item}); + final dynamic item; + const SystemNotice2({super.key, this.item}); @override Widget build(BuildContext context) { diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 42191c0a4..d004b323d 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -25,8 +25,6 @@ import 'package:screen_brightness/screen_brightness.dart'; import 'package:universal_platform/universal_platform.dart'; import '../../models/video/play/subtitle.dart'; -import '../../pages/video/detail/controller.dart'; -// import 'package:wakelock_plus/wakelock_plus.dart'; Box videoStorage = GStorage.video; Box setting = GStorage.setting; @@ -497,7 +495,7 @@ class PlPlayerController { } catch (err, stackTrace) { dataStatus.status.value = DataStatus.error; debugPrint(stackTrace.toString()); - print('plPlayer err: $err'); + debugPrint('plPlayer err: $err'); } } @@ -711,9 +709,7 @@ class PlPlayerController { /// 触发回调事件 for (var element in _statusListeners) { - if (element != null) { - element(event ? PlayerStatus.playing : PlayerStatus.paused); - } + element(event ? PlayerStatus.playing : PlayerStatus.paused); } if (videoPlayerController!.state.position.inSeconds != 0) { makeHeartBeat(positionSeconds.value, type: 'status'); @@ -759,8 +755,8 @@ class PlPlayerController { playerStatus.status.value, event); }), // videoPlayerController!.stream.log.listen((event) { - // print('videoPlayerController!.stream.log.listen'); - // print(event); + // debugPrint('videoPlayerController!.stream.log.listen'); + // debugPrint(event); // SmartDialog.showToast('视频加载日志: $event'); // }), videoPlayerController!.stream.error.listen((String event) { @@ -774,8 +770,8 @@ class PlPlayerController { EasyThrottle.throttle('videoPlayerController!.stream.error.listen', const Duration(milliseconds: 10000), () { Future.delayed(const Duration(milliseconds: 3000), () { - print("isBuffering.value: ${isBuffering.value}"); - print("_buffered.value: ${_buffered.value}"); + debugPrint("isBuffering.value: ${isBuffering.value}"); + debugPrint("_buffered.value: ${_buffered.value}"); if (isBuffering.value && _buffered.value == Duration.zero) { refreshPlayer(); SmartDialog.showToast('视频链接打开失败,重试中', @@ -785,8 +781,7 @@ class PlPlayerController { }); return; } - print('videoPlayerController!.stream.error.listen'); - print(event); + debugPrint('videoPlayerController!.stream.error.listen: '); if (event.startsWith('Could not open codec')) { SmartDialog.showToast('无法加载解码器, $event,可能会切换至软解'); return; @@ -841,7 +836,7 @@ class PlPlayerController { // play(); // } } else { - print('seek duration else'); + debugPrint('seek duration else'); _timerForSeek?.cancel(); _timerForSeek = Timer.periodic(const Duration(milliseconds: 200), (Timer t) async { @@ -1006,7 +1001,7 @@ class PlPlayerController { FlutterVolumeController.updateShowSystemUI(false); await FlutterVolumeController.setVolume(volumeNew); } catch (err) { - print(err); + debugPrint(err.toString()); } } @@ -1021,7 +1016,7 @@ class PlPlayerController { /// 亮度 Future getCurrentBrightness() async { try { - _currentBrightness.value = await ScreenBrightness().current; + _currentBrightness.value = await ScreenBrightness().application; } catch (e) { throw 'Failed to get current brightness'; //return 0; @@ -1161,7 +1156,7 @@ class PlPlayerController { await setPlaybackSpeed( enableAutoLongPressSpeed ? playbackSpeed * 2 : longPressSpeed); } else { - print(playbackSpeed); + debugPrint('$playbackSpeed'); await setPlaybackSpeed(playbackSpeed); } } @@ -1333,7 +1328,7 @@ class PlPlayerController { _instance = null; videoPlayerServiceHandler.clear(); } catch (err) { - print(err); + debugPrint(err.toString()); } } @@ -1364,7 +1359,6 @@ class PlPlayerController { return; } Map s = _vttSubtitles[index]; - debugPrint(s['text']); _videoPlayerController?.setSubtitleTrack(SubtitleTrack.data( s['text']!, title: s['title']!, diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 857f1d529..81b8d3945 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:ui'; import 'package:PiliPalaX/common/widgets/segment_progress_bar.dart'; import 'package:PiliPalaX/http/loading_state.dart'; @@ -7,7 +6,6 @@ import 'package:PiliPalaX/pages/video/detail/introduction/controller.dart'; import 'package:PiliPalaX/utils/id_utils.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; 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'; @@ -27,7 +25,6 @@ import 'package:screen_brightness/screen_brightness.dart'; import '../../common/widgets/audio_video_progress_bar.dart'; import '../../models/video_detail_res.dart'; import '../../pages/bangumi/introduction/controller.dart'; -import '../../common/widgets/list_sheet.dart'; import '../../utils/utils.dart'; import 'models/bottom_control_type.dart'; import 'models/bottom_progress_behavior.dart'; @@ -91,7 +88,7 @@ class _PLVideoPlayerState extends State final RxBool _volumeIndicator = false.obs; Timer? _volumeTimer; - final RxDouble _distance = 0.0.obs; + // final RxDouble _distance = 0.0.obs; final RxBool _volumeInterceptEventStream = false.obs; Box setting = GStorage.setting; @@ -108,8 +105,8 @@ class _PLVideoPlayerState extends State // 是否在调整固定进度条 RxBool draggingFixedProgressBar = false.obs; // 阅读器限制 - Timer? _accessibilityDebounce; - double _lastAnnouncedValue = -1; + // Timer? _accessibilityDebounce; + // double _lastAnnouncedValue = -1; void onDoubleTapSeekBackward() { _mountSeekBackwardButton.value = true; @@ -121,8 +118,8 @@ class _PLVideoPlayerState extends State // 双击播放、暂停 void onDoubleTapCenter() { - final PlPlayerController _ = widget.controller; - _.videoPlayerController!.playOrPause(); + final PlPlayerController plPlayerController = widget.controller; + plPlayerController.videoPlayerController!.playOrPause(); } void doubleTapFuc(String type) { @@ -176,8 +173,10 @@ class _PLVideoPlayerState extends State Future.microtask(() async { try { - _brightnessValue.value = await ScreenBrightness().current; - ScreenBrightness().onCurrentBrightnessChanged.listen((double value) { + _brightnessValue.value = await ScreenBrightness().application; + ScreenBrightness() + .onApplicationScreenBrightnessChanged + .listen((double value) { if (mounted) { _brightnessValue.value = value; } @@ -226,7 +225,7 @@ class _PLVideoPlayerState extends State // 动态构建底部控制条 List buildBottomControl() { - final PlPlayerController _ = widget.controller; + final PlPlayerController plPlayerController = widget.controller; bool isSeason = videoIntroController?.videoDetail.value.ugcSeason != null; bool isPage = videoIntroController?.videoDetail.value.pages != null && videoIntroController!.videoDetail.value.pages!.length > 1; @@ -262,7 +261,7 @@ class _PLVideoPlayerState extends State /// 播放暂停 BottomControlType.playOrPause: PlayOrPauseButton( - controller: _, + controller: plPlayerController, ), /// 下一集 @@ -299,7 +298,7 @@ class _PLVideoPlayerState extends State // 播放时间 Obx(() { return Text( - Utils.timeFormat(_.positionSeconds.value), + Utils.timeFormat(plPlayerController.positionSeconds.value), style: const TextStyle( color: Colors.white, fontSize: 10, @@ -307,12 +306,12 @@ class _PLVideoPlayerState extends State fontFeatures: [FontFeature.tabularFigures()], ), semanticsLabel: - '已播放${Utils.durationReadFormat(Utils.timeFormat(_.positionSeconds.value))}', + '已播放${Utils.durationReadFormat(Utils.timeFormat(plPlayerController.positionSeconds.value))}', ); }), Obx( () => Text( - Utils.timeFormat(_.durationSeconds.value), + Utils.timeFormat(plPlayerController.durationSeconds.value), style: const TextStyle( color: Color(0xFFD0D0D0), fontSize: 10, @@ -320,7 +319,7 @@ class _PLVideoPlayerState extends State fontFeatures: [FontFeature.tabularFigures()], ), semanticsLabel: - '共${Utils.durationReadFormat(Utils.timeFormat(_.durationSeconds.value))}', + '共${Utils.durationReadFormat(Utils.timeFormat(plPlayerController.durationSeconds.value))}', ), ), ], @@ -346,12 +345,12 @@ class _PLVideoPlayerState extends State int currentCid = widget.controller.cid; String bvid = widget.controller.bvid; List episodes = []; - late Function changeFucCall; + // late Function changeFucCall; if (isPage) { final List pages = videoIntroController!.videoDetail.value.pages!; episodes = pages; - changeFucCall = videoIntroController!.changeSeasonOrbangu; + // changeFucCall = videoIntroController!.changeSeasonOrbangu; } else if (isSeason) { final List sections = videoIntroController!.videoDetail.value.ugcSeason!.sections!; @@ -365,12 +364,12 @@ class _PLVideoPlayerState extends State } } } - changeFucCall = videoIntroController!.changeSeasonOrbangu; + // changeFucCall = videoIntroController!.changeSeasonOrbangu; } else if (isBangumi) { episodes = (bangumiIntroController!.loadingState.value as Success) .response .episodes!; - changeFucCall = bangumiIntroController!.changeSeasonOrbangu; + // changeFucCall = bangumiIntroController!.changeSeasonOrbangu; } if (widget.showEpisodes != null) { widget.showEpisodes!( @@ -393,13 +392,13 @@ class _PLVideoPlayerState extends State width: 42, height: 30, child: TextButton( - onPressed: () => _.toggleVideoFit(), + onPressed: () => plPlayerController.toggleVideoFit(), style: ButtonStyle( - padding: MaterialStateProperty.all(EdgeInsets.zero), + padding: WidgetStateProperty.all(EdgeInsets.zero), ), child: Obx( () => Text( - _.videoFitDEsc.value, + plPlayerController.videoFitDEsc.value, style: const TextStyle(color: Colors.white, fontSize: 13), ), ), @@ -408,22 +407,25 @@ class _PLVideoPlayerState extends State /// 字幕 BottomControlType.subtitle: Obx( - () => _.vttSubtitles.isEmpty + () => plPlayerController.vttSubtitles.isEmpty ? const SizedBox.shrink() : SizedBox( width: 42, height: 30, child: PopupMenuButton( onSelected: (int value) { - _.setSubtitle(value); + plPlayerController.setSubtitle(value); }, - initialValue: - _.vttSubtitles.length < _.vttSubtitlesIndex.value - ? 0 - : _.vttSubtitlesIndex.value, + initialValue: plPlayerController.vttSubtitles.length < + plPlayerController.vttSubtitlesIndex.value + ? 0 + : plPlayerController.vttSubtitlesIndex.value, color: Colors.black.withOpacity(0.8), itemBuilder: (BuildContext context) { - return _.vttSubtitles.asMap().entries.map((entry) { + return plPlayerController.vttSubtitles + .asMap() + .entries + .map((entry) { return PopupMenuItem( value: entry.key, child: Text( @@ -454,12 +456,12 @@ class _PLVideoPlayerState extends State height: 30, child: PopupMenuButton( onSelected: (double value) { - _.setPlaybackSpeed(value); + plPlayerController.setPlaybackSpeed(value); }, - initialValue: _.playbackSpeed, + initialValue: plPlayerController.playbackSpeed, color: Colors.black.withOpacity(0.8), itemBuilder: (BuildContext context) { - return _.speedsList.map((double speed) { + return plPlayerController.speedsList.map((double speed) { return PopupMenuItem( height: 35, padding: const EdgeInsets.only(left: 30), @@ -476,9 +478,9 @@ class _PLVideoPlayerState extends State width: 42, height: 30, alignment: Alignment.center, - child: Obx(() => Text("${_.playbackSpeed}X", + child: Obx(() => Text("${plPlayerController.playbackSpeed}X", style: const TextStyle(color: Colors.white, fontSize: 13), - semanticsLabel: "${_.playbackSpeed}倍速")), + semanticsLabel: "${plPlayerController.playbackSpeed}倍速")), ), ), ), @@ -489,12 +491,16 @@ class _PLVideoPlayerState extends State height: 30, child: Obx(() => ComBtn( icon: Icon( - _.isFullScreen.value ? Icons.fullscreen_exit : Icons.fullscreen, - semanticLabel: _.isFullScreen.value ? '退出全屏' : '全屏', + plPlayerController.isFullScreen.value + ? Icons.fullscreen_exit + : Icons.fullscreen, + semanticLabel: + plPlayerController.isFullScreen.value ? '退出全屏' : '全屏', size: 24, color: Colors.white, ), - fuc: () => _.triggerFullScreen!(status: !_.isFullScreen.value), + fuc: () => plPlayerController.triggerFullScreen( + status: !plPlayerController.isFullScreen.value), )), ), }; @@ -507,7 +513,7 @@ class _PLVideoPlayerState extends State if (anySeason) BottomControlType.next, BottomControlType.space, if (anySeason) BottomControlType.episode, - if (_.isFullScreen.value) BottomControlType.fit, + if (plPlayerController.isFullScreen.value) BottomControlType.fit, BottomControlType.subtitle, BottomControlType.speed, BottomControlType.fullscreen, @@ -529,7 +535,7 @@ class _PLVideoPlayerState extends State @override Widget build(BuildContext context) { - final PlPlayerController _ = widget.controller; + final PlPlayerController plPlayerController = widget.controller; final Color colorTheme = Theme.of(context).colorScheme.primary; const TextStyle subTitleStyle = TextStyle( height: 1.5, @@ -551,19 +557,19 @@ class _PLVideoPlayerState extends State Obx( () => InteractiveViewer( panEnabled: false, // 启用平移 //单指平移会与横竖手势冲突 - scaleEnabled: !_.controlsLock.value, // 启用缩放 + scaleEnabled: !plPlayerController.controlsLock.value, // 启用缩放 minScale: 1.0, maxScale: 2.0, panAxis: PanAxis.aligned, onInteractionStart: (ScaleStartDetails details) { - if (_.controlsLock.value) return; + if (plPlayerController.controlsLock.value) return; // 如果起点太靠上则屏蔽 if (details.localFocalPoint.dy < 40) return; if (details.pointerCount == 2) { interacting = true; } _initialFocalPoint = details.localFocalPoint; - // print("_initialFocalPoint$_initialFocalPoint"); + // debugPrint("_initialFocalPoint$_initialFocalPoint"); _gestureType = null; }, @@ -578,7 +584,7 @@ class _PLVideoPlayerState extends State } /// 锁定时禁用 - if (_.controlsLock.value) return; + if (plPlayerController.controlsLock.value) return; RenderBox renderBox = _playerKey.currentContext!.findRenderObject() as RenderBox; @@ -612,17 +618,17 @@ class _PLVideoPlayerState extends State if (_gestureType == 'horizontal') { // live模式下禁用 - if (_.videoType.value == 'live') return; + if (plPlayerController.videoType.value == 'live') return; final int curSliderPosition = - _.sliderPosition.value.inMilliseconds; + plPlayerController.sliderPosition.value.inMilliseconds; final double scale = 90000 / renderBox.size.width; final Duration pos = Duration( milliseconds: curSliderPosition + (delta.dx * scale).round()); final Duration result = - pos.clamp(Duration.zero, _.duration.value); - _.onUpdatedSliderProgress(result); - _.onChangedSliderStart(); + pos.clamp(Duration.zero, plPlayerController.duration.value); + plPlayerController.onUpdatedSliderProgress(result); + plPlayerController.onChangedSliderStart(); } else if (_gestureType == 'left') { // 左边区域 👈 final double level = renderBox.size.height * 3; @@ -640,22 +646,24 @@ class _PLVideoPlayerState extends State EasyThrottle.throttle( 'fullScreen', const Duration(milliseconds: 800), () async { - await _.triggerFullScreen(status: status); + await plPlayerController.triggerFullScreen(status: status); }); } if (cumulativeDy > threshold) { _gestureType = 'center_down'; - if (_.isFullScreen.value ^ fullScreenGestureReverse) { + if (plPlayerController.isFullScreen.value ^ + fullScreenGestureReverse) { fullScreenTrigger(fullScreenGestureReverse); } - // print('center_down:$cumulativeDy'); + // debugPrint('center_down:$cumulativeDy'); } else if (cumulativeDy < -threshold) { _gestureType = 'center_up'; - if (!_.isFullScreen.value ^ fullScreenGestureReverse) { + if (!plPlayerController.isFullScreen.value ^ + fullScreenGestureReverse) { fullScreenTrigger(!fullScreenGestureReverse); } - // print('center_up:$cumulativeDy'); + // debugPrint('center_up:$cumulativeDy'); } } else if (_gestureType == 'right') { // 右边区域 @@ -669,27 +677,30 @@ class _PLVideoPlayerState extends State } }, onInteractionEnd: (ScaleEndDetails details) { - if (_.isSliderMoving.value) { - _.onChangedSliderEnd(); - _.seekTo(_.sliderPosition.value, type: 'slider'); + if (plPlayerController.isSliderMoving.value) { + plPlayerController.onChangedSliderEnd(); + plPlayerController.seekTo( + plPlayerController.sliderPosition.value, + type: 'slider'); } interacting = false; _initialFocalPoint = Offset.zero; _gestureType = null; }, child: Video( - key: ValueKey('${_.videoFit.value}'), + key: ValueKey('${plPlayerController.videoFit.value}'), controller: videoController, controls: NoVideoControls, pauseUponEnteringBackgroundMode: - !_.continuePlayInBackground.value, + !plPlayerController.continuePlayInBackground.value, resumeUponEnteringForegroundMode: true, // 字幕尺寸调节 subtitleViewConfiguration: SubtitleViewConfiguration( - style: subTitleStyle, - padding: const EdgeInsets.all(24.0), - textScaleFactor: MediaQuery.textScaleFactorOf(context)), - fit: _.videoFit.value, + style: subTitleStyle, + padding: const EdgeInsets.all(24.0), + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + ), + fit: plPlayerController.videoFit.value, ), ), ), @@ -702,7 +713,7 @@ class _PLVideoPlayerState extends State translation: const Offset(0.0, 0.3), // 上下偏移量(负数向上偏移) child: AnimatedOpacity( curve: Curves.easeInOut, - opacity: _.doubleSpeedStatus.value ? 1.0 : 0.0, + opacity: plPlayerController.doubleSpeedStatus.value ? 1.0 : 0.0, duration: const Duration(milliseconds: 150), child: Container( alignment: Alignment.center, @@ -714,7 +725,7 @@ class _PLVideoPlayerState extends State width: 70.0, child: Center( child: Obx(() => Text( - '${_.enableAutoLongPressSpeed ? _.playbackSpeed * 2 : _.longPressSpeed}倍速中', + '${plPlayerController.enableAutoLongPressSpeed ? plPlayerController.playbackSpeed * 2 : plPlayerController.longPressSpeed}倍速中', style: const TextStyle( color: Colors.white, fontSize: 13), )), @@ -734,7 +745,7 @@ class _PLVideoPlayerState extends State child: Obx( () => AnimatedOpacity( curve: Curves.easeInOut, - opacity: _.isSliderMoving.value ? 1.0 : 0.0, + opacity: plPlayerController.isSliderMoving.value ? 1.0 : 0.0, duration: const Duration(milliseconds: 150), child: IntrinsicWidth( child: Container( @@ -750,8 +761,8 @@ class _PLVideoPlayerState extends State children: [ Obx(() { return Text( - Utils.timeFormat( - _.sliderTempPosition.value.inSeconds), + Utils.timeFormat(plPlayerController + .sliderTempPosition.value.inSeconds), style: textStyle, ); }), @@ -760,9 +771,11 @@ class _PLVideoPlayerState extends State const SizedBox(width: 2), Obx( () => Text( - _.duration.value.inMinutes >= 60 - ? printDurationWithHours(_.duration.value) - : printDuration(_.duration.value), + plPlayerController.duration.value.inMinutes >= 60 + ? printDurationWithHours( + plPlayerController.duration.value) + : printDuration( + plPlayerController.duration.value), style: textStyle, ), ), @@ -917,11 +930,13 @@ class _PLVideoPlayerState extends State label: '双击开关控件', child: GestureDetector( onTap: () { - _.controls = !_.showControls.value; + plPlayerController.controls = + !plPlayerController.showControls.value; }, onDoubleTapDown: (TapDownDetails details) { // live模式下禁用 锁定时🔒禁用 - if (_.videoType.value == 'live' || _.controlsLock.value) { + if (plPlayerController.videoType.value == 'live' || + plPlayerController.controlsLock.value) { return; } RenderBox renderBox = @@ -940,11 +955,11 @@ class _PLVideoPlayerState extends State doubleTapFuc(type); }, onLongPressStart: (LongPressStartDetails detail) { - _.setDoubleSpeedStatus(true); + plPlayerController.setDoubleSpeedStatus(true); feedBack(); }, onLongPressEnd: (LongPressEndDetails details) { - _.setDoubleSpeedStatus(false); + plPlayerController.setDoubleSpeedStatus(false); }, ), ), @@ -954,26 +969,30 @@ class _PLVideoPlayerState extends State Obx( () => Column( children: [ - if (widget.headerControl != null || _.headerControl != null) + if (widget.headerControl != null || + plPlayerController.headerControl != null) ClipRect( child: AppBarAni( controller: animationController, - visible: !_.controlsLock.value && _.showControls.value, + visible: !plPlayerController.controlsLock.value && + plPlayerController.showControls.value, position: 'top', - child: widget.headerControl ?? _.headerControl!, + child: widget.headerControl ?? + plPlayerController.headerControl!, ), ), const Spacer(), ClipRect( child: AppBarAni( controller: animationController, - visible: !_.controlsLock.value && _.showControls.value, + visible: !plPlayerController.controlsLock.value && + plPlayerController.showControls.value, position: 'bottom', child: widget.bottomControl ?? BottomControl( controller: widget.controller, buildBottomControl: buildBottomControl(), - segmentList: _.segmentList, + segmentList: plPlayerController.segmentList, ), ), ), @@ -985,10 +1004,10 @@ class _PLVideoPlayerState extends State Obx( () { - final int value = _.sliderPositionSeconds.value; - final int max = _.durationSeconds.value; - final int buffer = _.bufferedSeconds.value; - if (_.showControls.value) { + final int value = plPlayerController.sliderPositionSeconds.value; + final int max = plPlayerController.durationSeconds.value; + final int buffer = plPlayerController.bufferedSeconds.value; + if (plPlayerController.showControls.value) { return Container(); } if (defaultBtmProgressBehavior == @@ -997,15 +1016,15 @@ class _PLVideoPlayerState extends State } if (defaultBtmProgressBehavior == BtmProgressBehavior.onlyShowFullScreen.code && - !_.isFullScreen.value) { + !plPlayerController.isFullScreen.value) { return const SizedBox(); } else if (defaultBtmProgressBehavior == BtmProgressBehavior.onlyHideFullScreen.code && - _.isFullScreen.value) { + plPlayerController.isFullScreen.value) { return const SizedBox(); } - if (_.videoType.value == 'live') { + if (plPlayerController.videoType.value == 'live') { return Container(); } if (value > max || max <= 0) { @@ -1066,12 +1085,12 @@ class _PLVideoPlayerState extends State // TextDirection.ltr); // }, ), - if (_.segmentList.isNotEmpty) + if (plPlayerController.segmentList.isNotEmpty) CustomPaint( size: Size(double.infinity, 3.5), painter: SegmentProgressBar( progress: 1, - segmentColors: _.segmentList, + segmentColors: plPlayerController.segmentList, ), ), ], @@ -1092,24 +1111,28 @@ class _PLVideoPlayerState extends State // 锁 Obx( () => Visibility( - visible: _.videoType.value != 'live' && _.isFullScreen.value, + visible: plPlayerController.videoType.value != 'live' && + plPlayerController.isFullScreen.value, child: Align( alignment: Alignment.centerLeft, child: FractionalTranslation( translation: const Offset(1, -0.4), child: Visibility( - visible: _.showControls.value && - (_.isFullScreen.value || _.controlsLock.value), + visible: plPlayerController.showControls.value && + (plPlayerController.isFullScreen.value || + plPlayerController.controlsLock.value), child: ComBtn( icon: Icon( - _.controlsLock.value + plPlayerController.controlsLock.value ? FontAwesomeIcons.lock : FontAwesomeIcons.lockOpen, - semanticLabel: _.controlsLock.value ? '解锁' : '锁定', + semanticLabel: + plPlayerController.controlsLock.value ? '解锁' : '锁定', size: 15, color: Colors.white, ), - fuc: () => _.onLockControl(!_.controlsLock.value), + fuc: () => plPlayerController + .onLockControl(!plPlayerController.controlsLock.value), ), ), ), @@ -1124,7 +1147,8 @@ class _PLVideoPlayerState extends State child: FractionalTranslation( translation: const Offset(-1, -0.4), child: Visibility( - visible: _.showControls.value && _.isFullScreen.value, + visible: plPlayerController.showControls.value && + plPlayerController.isFullScreen.value, child: ComBtn( icon: const Icon( Icons.photo_camera, @@ -1134,10 +1158,10 @@ class _PLVideoPlayerState extends State ), fuc: () { SmartDialog.showToast('截图中'); - _.videoPlayerController + plPlayerController.videoPlayerController ?.screenshot(format: 'image/png') .then((value) { - if (value != null) { + if (value != null && context.mounted) { SmartDialog.showToast('点击弹窗保存截图'); showDialog( context: context, @@ -1192,11 +1216,12 @@ class _PLVideoPlayerState extends State ), // Obx(() { - if (_.dataStatus.loading || _.isBuffering.value) { + if (plPlayerController.dataStatus.loading || + plPlayerController.isBuffering.value) { return Center( child: GestureDetector( onTap: () { - _.refreshPlayer(); + plPlayerController.refreshPlayer(); }, child: Container( padding: const EdgeInsets.all(30), @@ -1212,14 +1237,16 @@ class _PLVideoPlayerState extends State height: 25, semanticLabel: "加载中", ), - if (_.isBuffering.value) + if (plPlayerController.isBuffering.value) Obx(() { - if (_.buffered.value == Duration.zero) { + if (plPlayerController.buffered.value == + Duration.zero) { return const Text('Buffering...', style: TextStyle( color: Colors.white, fontSize: 12)); } - String bufferStr = _.buffered.toString(); + String bufferStr = + plPlayerController.buffered.toString(); return Text( bufferStr.substring(0, bufferStr.length - 3), style: const TextStyle( diff --git a/lib/plugin/pl_player/widgets/app_bar_ani.dart b/lib/plugin/pl_player/widgets/app_bar_ani.dart index df4f47d59..6e5a3f668 100644 --- a/lib/plugin/pl_player/widgets/app_bar_ani.dart +++ b/lib/plugin/pl_player/widgets/app_bar_ani.dart @@ -6,8 +6,8 @@ class AppBarAni extends StatelessWidget implements PreferredSizeWidget { required this.controller, required this.visible, this.position, - Key? key, - }) : super(key: key); + super.key, + }); final PreferredSizeWidget child; final AnimationController controller; diff --git a/lib/plugin/pl_player/widgets/backward_seek.dart b/lib/plugin/pl_player/widgets/backward_seek.dart index 35de0ae63..f4ccd8fd1 100644 --- a/lib/plugin/pl_player/widgets/backward_seek.dart +++ b/lib/plugin/pl_player/widgets/backward_seek.dart @@ -6,10 +6,10 @@ class BackwardSeekIndicator extends StatefulWidget { final void Function(Duration) onChanged; final void Function(Duration) onSubmitted; const BackwardSeekIndicator({ - Key? key, + super.key, required this.onChanged, required this.onSubmitted, - }) : super(key: key); + }); @override State createState() => BackwardSeekIndicatorState(); diff --git a/lib/plugin/pl_player/widgets/bottom_control.dart b/lib/plugin/pl_player/widgets/bottom_control.dart index 51289b413..0f14f2373 100644 --- a/lib/plugin/pl_player/widgets/bottom_control.dart +++ b/lib/plugin/pl_player/widgets/bottom_control.dart @@ -18,8 +18,8 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { this.controller, this.buildBottomControl, this.segmentList, - Key? key, - }) : super(key: key); + super.key, + }); @override Size get preferredSize => const Size(double.infinity, kToolbarHeight); @@ -27,10 +27,9 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { @override Widget build(BuildContext context) { Color colorTheme = Theme.of(context).colorScheme.primary; - final _ = controller!; //阅读器限制 - Timer? _accessibilityDebounce; - double _lastAnnouncedValue = -1; + Timer? accessibilityDebounce; + double lastAnnouncedValue = -1; return Container( color: Colors.transparent, height: 90, @@ -40,9 +39,9 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { children: [ Obx( () { - final int value = _.sliderPositionSeconds.value; - final int max = _.durationSeconds.value; - final int buffer = _.bufferedSeconds.value; + final int value = controller!.sliderPositionSeconds.value; + final int max = controller!.durationSeconds.value; + final int buffer = controller!.bufferedSeconds.value; if (value > max || max <= 0) { return nil; } @@ -68,28 +67,31 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { thumbRadius: 7, onDragStart: (duration) { feedBack(); - _.onChangedSliderStart(); + controller!.onChangedSliderStart(); }, onDragUpdate: (duration) { double newProgress = duration.timeStamp.inSeconds / max; - if ((newProgress - _lastAnnouncedValue).abs() > + if ((newProgress - lastAnnouncedValue).abs() > 0.02) { - _accessibilityDebounce?.cancel(); - _accessibilityDebounce = + accessibilityDebounce?.cancel(); + accessibilityDebounce = Timer(const Duration(milliseconds: 200), () { SemanticsService.announce( "${(newProgress * 100).round()}%", TextDirection.ltr); - _lastAnnouncedValue = newProgress; + lastAnnouncedValue = newProgress; }); } - _.onUpdatedSliderProgress(duration.timeStamp); + controller! + .onUpdatedSliderProgress(duration.timeStamp); }, onSeek: (duration) { - _.onChangedSliderEnd(); - _.onChangedSlider(duration.inSeconds.toDouble()); - _.seekTo(Duration(seconds: duration.inSeconds), + controller!.onChangedSliderEnd(); + controller! + .onChangedSlider(duration.inSeconds.toDouble()); + controller!.seekTo( + Duration(seconds: duration.inSeconds), type: 'slider'); SemanticsService.announce( "${(duration.inSeconds / max * 100).round()}%", diff --git a/lib/plugin/pl_player/widgets/forward_seek.dart b/lib/plugin/pl_player/widgets/forward_seek.dart index 43ddd322a..e7c483f87 100644 --- a/lib/plugin/pl_player/widgets/forward_seek.dart +++ b/lib/plugin/pl_player/widgets/forward_seek.dart @@ -6,10 +6,10 @@ class ForwardSeekIndicator extends StatefulWidget { final void Function(Duration) onChanged; final void Function(Duration) onSubmitted; const ForwardSeekIndicator({ - Key? key, + super.key, required this.onChanged, required this.onSubmitted, - }) : super(key: key); + }); @override State createState() => ForwardSeekIndicatorState(); diff --git a/lib/router/app_pages.dart b/lib/router/app_pages.dart index c83e25204..8f0522651 100644 --- a/lib/router/app_pages.dart +++ b/lib/router/app_pages.dart @@ -31,7 +31,6 @@ import '../pages/later/index.dart'; import '../pages/live_room/view.dart'; import '../pages/login/index.dart'; import '../pages/media/index.dart'; -import '../pages/member/index.dart'; import '../pages/member_archive/index.dart'; import '../pages/member_coin/index.dart'; import '../pages/member_dynamics/index.dart'; @@ -53,7 +52,6 @@ import '../pages/setting/play_setting.dart'; import '../pages/setting/video_setting.dart'; import '../pages/setting/privacy_setting.dart'; import '../pages/setting/style_setting.dart'; -import '../pages/setting/hidden_settings.dart'; import '../pages/subscription/index.dart'; import '../pages/subscription_detail/index.dart'; import '../pages/video/detail/index.dart'; @@ -133,8 +131,6 @@ class Routes { // CustomGetPage(name: '/blackListPage', page: () => const BlackListPage()), CustomGetPage(name: '/colorSetting', page: () => const ColorSelectPage()), - // 开发人员选项 - CustomGetPage(name: '/hiddenSetting', page: () => const HiddenSetting()), // 首页tabbar CustomGetPage(name: '/tabbarSetting', page: () => const TabbarSetPage()), CustomGetPage( diff --git a/lib/services/audio_handler.dart b/lib/services/audio_handler.dart index d37c00429..0ca0bd8c7 100644 --- a/lib/services/audio_handler.dart +++ b/lib/services/audio_handler.dart @@ -60,9 +60,9 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { Future setMediaItem(MediaItem newMediaItem) async { if (!enableBackgroundPlay) return; - // print("此时调用栈为:"); - // print(newMediaItem); - // print(newMediaItem.title); + // debugPrint("此时调用栈为:"); + // debugPrint(newMediaItem); + // debugPrint(newMediaItem.title); // debugPrint(StackTrace.current.toString()); if (!mediaItem.isClosed) mediaItem.add(newMediaItem); } @@ -106,8 +106,8 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { onVideoDetailChange(dynamic data, int cid) { if (!enableBackgroundPlay) return; - // print('当前调用栈为:'); - // print(StackTrace.current); + // debugPrint('当前调用栈为:'); + // debugPrint(StackTrace.current); if (!PlPlayerController.instanceExists()) return; if (data == null) return; @@ -144,7 +144,7 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { ); } if (mediaItem == null) return; - // print("exist: ${PlPlayerController.instanceExists()}"); + // debugPrint("exist: ${PlPlayerController.instanceExists()}"); if (!PlPlayerController.instanceExists()) return; _item.add(mediaItem); setMediaItem(mediaItem); diff --git a/lib/services/loggeer.dart b/lib/services/loggeer.dart index 88f75999a..15cc8ba11 100644 --- a/lib/services/loggeer.dart +++ b/lib/services/loggeer.dart @@ -2,6 +2,7 @@ import 'dart:io'; +import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart' as p; @@ -45,7 +46,7 @@ Future clearLogs() async { try { await file.writeAsString(''); } catch (e) { - print('Error clearing file: $e'); + debugPrint('Error clearing file: $e'); return false; } return true; diff --git a/lib/services/shutdown_timer_service.dart b/lib/services/shutdown_timer_service.dart index 84367280d..35d0acc58 100644 --- a/lib/services/shutdown_timer_service.dart +++ b/lib/services/shutdown_timer_service.dart @@ -5,8 +5,6 @@ import 'package:PiliPalaX/plugin/pl_player/index.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import '../plugin/pl_player/controller.dart'; - class ShutdownTimerService with WidgetsBindingObserver { static final ShutdownTimerService _instance = ShutdownTimerService._internal(); @@ -70,7 +68,7 @@ class ShutdownTimerService with WidgetsBindingObserver { void _showShutdownDialog() { if (isInBackground) { - print("app在后台运行,不弹窗"); + debugPrint("app在后台运行,不弹窗"); _executeShutdown(); return; } diff --git a/lib/tcp/live.dart b/lib/tcp/live.dart index 454d59eba..839eb05fa 100644 --- a/lib/tcp/live.dart +++ b/lib/tcp/live.dart @@ -212,7 +212,7 @@ class LiveMessageStream { case 3: decompressedData = const BrotliDecoder().convert(data.sublist(0x10)); - //print('Body: ${utf8.decode()}'); + //debugPrint('Body: ${utf8.decode()}'); } _processingData(decompressedData); } catch (e) { diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index 942e6c943..adeb2b338 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -1,16 +1,12 @@ import 'dart:async'; -import 'package:PiliPalaX/models/bangumi/info.dart'; import 'package:PiliPalaX/models/common/reply_type.dart'; -import 'package:PiliPalaX/pages/video/detail/reply/widgets/reply_item.dart'; import 'package:PiliPalaX/utils/extension.dart'; import 'package:app_links/app_links.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:path/path.dart'; import '../http/search.dart'; -import '../models/common/search_type.dart'; import '../pages/video/detail/reply_reply/view.dart'; import 'id_utils.dart'; import 'url_utils.dart'; @@ -36,7 +32,7 @@ class PiliScheme { final String path = value.path; if (scheme == 'bilibili') { - print(value); + debugPrint('$value'); if (host == 'root') { Navigator.popUntil( Get.context!, (Route route) => route.isFirst); @@ -130,15 +126,15 @@ class PiliScheme { } else if (host == 'comment' && path.startsWith("/detail/")) { //bilibili://comment/detail/17/832703053858603029/238686570016/?subType=0&anchor=238686628816&showEnter=1&extraIntentId=0&scene=1&enterName=%E6%9F%A5%E7%9C%8B%E5%8A%A8%E6%80%81%E8%AF%A6%E6%83%85&enterUri=bilibili://following/detail/832703053858603029 //fmt.Sprintf("bilibili://comment/detail/%d/%d/%d/?subType=%d&anchor=%d&showEnter=1&extraIntentId=%d", rp.Type, rp.Oid, rootID, subType, rp.RpID, extraIntentID) - print(value.queryParameters); + debugPrint('${value.queryParameters}'); List pathParts = path.split('/'); - int type = int.parse(pathParts[2]); + // int type = int.parse(pathParts[2]); int oid = int.parse(pathParts[3]); - int rootId = int.parse(pathParts[4]); - int subType = int.parse(value.queryParameters['subType'] ?? '0'); - int RpID = int.parse(value.queryParameters['anchor'] ?? '0'); - int extraIntentId = - int.parse(value.queryParameters['extraIntentId'] ?? '0'); + // int rootId = int.parse(pathParts[4]); + // int subType = int.parse(value.queryParameters['subType'] ?? '0'); + int rpID = int.parse(value.queryParameters['anchor'] ?? '0'); + // int extraIntentId = + // int.parse(value.queryParameters['extraIntentId'] ?? '0'); Get.to( () => Scaffold( resizeToAvoidBottomInset: false, @@ -164,7 +160,7 @@ class PiliScheme { ), body: VideoReplyReplyPanel( oid: oid, - rpid: RpID, + rpid: rpID, source: 'routePush', replyType: ReplyType.dynamics, firstFloor: null), @@ -216,7 +212,7 @@ class PiliScheme { getToOpusWeb(); } } else { - print(value); + debugPrint('$value'); SmartDialog.showToast('未知路径:$value,请截图反馈给开发者'); //Utils.toDupNamed( // '/webviewnew', @@ -274,7 +270,7 @@ class PiliScheme { // 番剧跳转 static Future bangumiPush(int? seasonId, int? epId) async { - print('seasonId: $seasonId, epId: $epId'); + debugPrint('seasonId: $seasonId, epId: $epId'); // SmartDialog.showLoading(msg: '获取中...'); try { Utils.viewBangumi(seasonId: seasonId, epId: epId); @@ -321,10 +317,10 @@ class PiliScheme { // final String scheme = value.scheme!; final String host = value.host; final String? path = value.path; - Map? query = value.queryParameters; + Map query = value.queryParameters; RegExp regExp = RegExp(r'^((www\.)|(m\.))?bilibili\.com$'); if (regExp.hasMatch(host)) { - print('bilibili.com'); + debugPrint('bilibili.com'); } else if (host.contains('live')) { int roomId = int.parse(path!.split('/').last); Utils.toDupNamed( @@ -383,21 +379,19 @@ class PiliScheme { final String area = pathPart[1] == 'mobile' ? pathPart[2] : pathPart[1]; switch (area) { case 'bangumi': - print('番剧'); + debugPrint('番剧'); for (var pathSegment in pathPart) { if (pathSegment.startsWith('ss')) { - print(pathSegment); bangumiPush(matchNum(pathSegment).first, null); break; } else if (pathSegment.startsWith('ep')) { - print(pathSegment); bangumiPush(null, matchNum(pathSegment).first); break; } } break; case 'video': - print('投稿'); + debugPrint('投稿'); final Map map = IdUtils.matchAvorBv(input: path); if (map.containsKey('AV')) { videoPush(map['AV']! as int, null); @@ -408,9 +402,9 @@ class PiliScheme { } break; case 'read': - print('专栏'); + debugPrint('专栏'); late String id; - if (query != null && query['id'] != null) { + if (query['id'] != null) { id = 'cv${matchNum(query['id']!).first}'; } else { id = 'cv${matchNum(path).firstOrNull}'; @@ -423,7 +417,7 @@ class PiliScheme { }); break; case 'space': - print('个人空间'); + debugPrint('个人空间'); Utils.toDupNamed( '/member?mid=${pathPart[1] == 'mobile' ? pathPart.getOrNull(3) : pathPart.getOrNull(2)}', arguments: {'face': ''}); diff --git a/lib/utils/download.dart b/lib/utils/download.dart index d5ea017a9..fbe356f82 100644 --- a/lib/utils/download.dart +++ b/lib/utils/download.dart @@ -1,6 +1,5 @@ import 'dart:typed_data'; -import 'package:PiliPalaX/http/index.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; @@ -110,7 +109,6 @@ class DownloadUtils { Uint8List.fromList(response.data), quality: 100, fileName: picName, - extension: 'jpg', // 保存到 PiliPalaX文件夹 androidRelativePath: "Pictures/PiliPalaX", skipIfExists: false, diff --git a/lib/utils/grid.dart b/lib/utils/grid.dart index aa41d484d..1fdde8f74 100644 --- a/lib/utils/grid.dart +++ b/lib/utils/grid.dart @@ -1,10 +1,11 @@ import 'dart:math'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/rendering.dart'; import 'storage.dart'; + class Grid { - static double maxRowWidth = GStorage.setting.get(SettingBoxKey.maxRowWidth, defaultValue: 240.0) as double; + static double maxRowWidth = GStorage.setting + .get(SettingBoxKey.maxRowWidth, defaultValue: 240.0) as double; // // static double calculateActualWidth(BuildContext context, double maxCrossAxisExtent, double crossAxisSpacing, {double? screenWidthOffset}) { // double screenWidth = MediaQuery.of(context).size.width; @@ -22,6 +23,7 @@ class Grid { // return columnWidth; // } } + class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate { /// Creates a delegate that makes grid layouts with tiles that have a maximum /// cross-axis extent. @@ -35,7 +37,7 @@ class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate { this.crossAxisSpacing = 0.0, this.childAspectRatio = 1.0, this.mainAxisExtent = 0.0, - }) : assert(maxCrossAxisExtent > 0), + }) : assert(maxCrossAxisExtent > 0), assert(mainAxisSpacing >= 0), assert(crossAxisSpacing >= 0), assert(childAspectRatio > 0); @@ -62,13 +64,10 @@ class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate { /// The ratio of the cross-axis to the main-axis extent of each child. final double childAspectRatio; - /// The extent of each tile in the main axis. If provided, it would add /// after [childAspectRatio] is used. final double mainAxisExtent; - - bool _debugAssertIsValid(double crossAxisExtent) { assert(crossAxisExtent > 0.0); assert(maxCrossAxisExtent > 0.0); @@ -81,7 +80,9 @@ class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate { @override SliverGridLayout getLayout(SliverConstraints constraints) { assert(_debugAssertIsValid(constraints.crossAxisExtent)); - int crossAxisCount = ((constraints.crossAxisExtent - crossAxisSpacing) / (maxCrossAxisExtent + crossAxisSpacing)).ceil(); + int crossAxisCount = ((constraints.crossAxisExtent - crossAxisSpacing) / + (maxCrossAxisExtent + crossAxisSpacing)) + .ceil(); // Ensure a minimum count of 1, can be zero and result in an infinite extent // below when the window size is 0. crossAxisCount = max(1, crossAxisCount); @@ -90,7 +91,8 @@ class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate { constraints.crossAxisExtent - crossAxisSpacing * (crossAxisCount - 1), ); final double childCrossAxisExtent = usableCrossAxisExtent / crossAxisCount; - final double childMainAxisExtent = childCrossAxisExtent / childAspectRatio + mainAxisExtent; + final double childMainAxisExtent = + childCrossAxisExtent / childAspectRatio + mainAxisExtent; return SliverGridRegularTileLayout( crossAxisCount: crossAxisCount, mainAxisStride: childMainAxisExtent + mainAxisSpacing, @@ -103,10 +105,10 @@ class SliverGridDelegateWithExtentAndRatio extends SliverGridDelegate { @override bool shouldRelayout(SliverGridDelegateWithExtentAndRatio oldDelegate) { - return oldDelegate.maxCrossAxisExtent != maxCrossAxisExtent - || oldDelegate.mainAxisSpacing != mainAxisSpacing - || oldDelegate.crossAxisSpacing != crossAxisSpacing - || oldDelegate.childAspectRatio != childAspectRatio - || oldDelegate.mainAxisExtent != mainAxisExtent; + return oldDelegate.maxCrossAxisExtent != maxCrossAxisExtent || + oldDelegate.mainAxisSpacing != mainAxisSpacing || + oldDelegate.crossAxisSpacing != crossAxisSpacing || + oldDelegate.childAspectRatio != childAspectRatio || + oldDelegate.mainAxisExtent != mainAxisExtent; } -} \ No newline at end of file +} diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 6cc95b878..24b2588c2 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -177,6 +177,7 @@ class SettingBoxKey { allowRotateScreen = 'allowRotateScreen', horizontalScreen = 'horizontalScreen', p1080 = 'p1080', + // ignore: constant_identifier_names CDNService = 'CDNService', disableAudioCDN = 'disableAudioCDN', // enableCDN = 'enableCDN', diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 0d69fa49d..1ac0a6425 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -775,8 +775,6 @@ class Utils { WidgetsBinding.instance.platformDispatcher.views.single) .padding .top; - print("paddingTop"); - print(paddingTop); paddingTop += width * 9 / 16; return height - paddingTop; } diff --git a/lib/utils/video_utils.dart b/lib/utils/video_utils.dart index afa255f9e..c76eeffb4 100644 --- a/lib/utils/video_utils.dart +++ b/lib/utils/video_utils.dart @@ -1,6 +1,7 @@ import 'package:PiliPalaX/models/video/play/CDN.dart'; import 'package:PiliPalaX/models/video/play/url.dart'; import 'package:PiliPalaX/utils/storage.dart'; +import 'package:flutter/material.dart'; import '../models/live/room_info.dart'; @@ -42,10 +43,10 @@ class VideoUtils { if (videoUrl == null) { return ""; } - print("videoUrl:$videoUrl"); + debugPrint("videoUrl:$videoUrl"); String defaultCDNHost = CDNServiceCode.fromCode(defaultCDNService)!.host; - print("defaultCDNHost:$defaultCDNHost"); + debugPrint("defaultCDNHost:$defaultCDNHost"); if (videoUrl.contains("szbdyd.com")) { String hostname = Uri.parse(videoUrl).queryParameters['xy_usource'] ?? defaultCDNHost; @@ -62,7 +63,7 @@ class VideoUtils { .replace(host: defaultCDNHost, port: 443) .toString(); } - print("videoUrl:$videoUrl"); + debugPrint("videoUrl:$videoUrl"); // /// 先获取backupUrl 一般是upgcxcode地址 播放更稳定 // if (item is VideoItem) {