diff --git a/lib/common/widgets/progress_bar/segment_progress_bar.dart b/lib/common/widgets/progress_bar/segment_progress_bar.dart index 9b373051..697f3297 100644 --- a/lib/common/widgets/progress_bar/segment_progress_bar.dart +++ b/lib/common/widgets/progress_bar/segment_progress_bar.dart @@ -33,18 +33,19 @@ class SegmentProgressBar extends CustomPainter { final paint = Paint()..style = PaintingStyle.fill; for (int i = 0; i < segmentColors.length; i++) { - paint.color = segmentColors[i].color; - final segmentStart = segmentColors[i].start * size.width; - final segmentEnd = segmentColors[i].end * size.width; + final item = segmentColors[i]; + paint.color = item.color; + final segmentStart = item.start * size.width; + final segmentEnd = item.end * size.width; if (segmentEnd > segmentStart || (segmentEnd == segmentStart && segmentStart > 0)) { - if (segmentColors[i].title != null) { + if (item.title != null) { double fontSize = 10; _defHeight ??= (TextPainter( text: TextSpan( - text: segmentColors[i].title, + text: item.title, style: TextStyle( fontSize: fontSize, ), @@ -56,7 +57,7 @@ class SegmentProgressBar extends CustomPainter { TextPainter getTextPainter() => TextPainter( text: TextSpan( - text: segmentColors[i].title, + text: item.title, style: TextStyle( color: Colors.white, fontSize: fontSize, diff --git a/lib/grpc/grpc_repo.dart b/lib/grpc/grpc_repo.dart index 00988615..85173874 100644 --- a/lib/grpc/grpc_repo.dart +++ b/lib/grpc/grpc_repo.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'dart:typed_data'; -import 'package:PiliPlus/build_config.dart'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/grpc/bilibili/metadata.pb.dart'; import 'package:PiliPlus/grpc/bilibili/metadata/device.pb.dart'; @@ -19,6 +18,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:archive/archive.dart'; import 'package:dio/dio.dart'; import 'package:fixnum/fixnum.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:protobuf/protobuf.dart' show GeneratedMessage; class GrpcUrl { @@ -214,7 +214,7 @@ class GrpcRepo { // UNKNOWN : -400 : msg final errMsg = grpcMsg.details.map((e) => e.status.message).join('\n'); - msg = BuildConfig.isDebug + msg = kDebugMode ? 'CODE: ${grpcMsg.code}(${grpcMsg.message})\nMSG: $errMsg' : errMsg; } catch (e) { diff --git a/lib/http/init.dart b/lib/http/init.dart index b0f0f8e3..e2a29de1 100644 --- a/lib/http/init.dart +++ b/lib/http/init.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'package:PiliPlus/build_config.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/retry_interceptor.dart'; import 'package:PiliPlus/http/user.dart'; @@ -15,6 +14,7 @@ import 'package:brotli/brotli.dart'; import 'package:dio/dio.dart'; import 'package:dio/io.dart'; import 'package:dio_http2_adapter/dio_http2_adapter.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter_inappwebview/flutter_inappwebview.dart' as web; class Request { @@ -170,7 +170,7 @@ class Request { .add(RetryInterceptor(GStorage.retryCount, GStorage.retryDelay)); // 日志拦截器 输出请求、响应内容 - if (BuildConfig.isDebug) { + if (kDebugMode) { dio.interceptors.add(LogInterceptor( request: false, requestHeader: false, @@ -228,7 +228,7 @@ class Request { Options? options, CancelToken? cancelToken, }) async { - // debugPrint('post-data: $data'); + // if (kDebugMode) debugPrint('post-data: $data'); try { return await dio.post( url, @@ -260,14 +260,14 @@ class Request { savePath, cancelToken: cancelToken, // onReceiveProgress: (int count, int total) { - //进度 - // debugPrint("$count $total"); + // 进度 + // if (kDebugMode) debugPrint("$count $total"); // }, ); - // debugPrint('downloadFile success: ${response.data}'); + // if (kDebugMode) debugPrint('downloadFile success: ${response.data}'); return response; } on DioException catch (e) { - // debugPrint('downloadFile error: $e'); + // if (kDebugMode) debugPrint('downloadFile error: $e'); return Response( data: { 'message': await AccountManager.dioError(e), diff --git a/lib/main.dart b/lib/main.dart index 4ecee979..26823d8a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,6 +18,7 @@ import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:catcher_2/catcher_2.dart'; import 'package:dynamic_color/dynamic_color.dart'; import 'package:flex_seed_scheme/flex_seed_scheme.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_displaymode/flutter_displaymode.dart'; @@ -234,8 +235,7 @@ class MyApp extends StatelessWidget { } class _CustomHttpOverrides extends HttpOverrides { - final badCertificateCallback = - BuildConfig.isDebug || GStorage.badCertificateCallback; + final badCertificateCallback = kDebugMode || GStorage.badCertificateCallback; @override HttpClient createHttpClient(SecurityContext? context) { diff --git a/lib/models/dynamics/result.dart b/lib/models/dynamics/result.dart index abb27506..47315081 100644 --- a/lib/models/dynamics/result.dart +++ b/lib/models/dynamics/result.dart @@ -161,7 +161,7 @@ class ItemModulesModel { // case 'MODULE_TYPE_BOTTOM': // break; // default: - // debugPrint('unknown type: ${i}'); + // if (kDebugMode) debugPrint('unknown type: ${i}'); } } } diff --git a/lib/models/video_detail/honor_reply.dart b/lib/models/video_detail/honor_reply.dart deleted file mode 100644 index ded775b6..00000000 --- a/lib/models/video_detail/honor_reply.dart +++ /dev/null @@ -1,13 +0,0 @@ -class HonorReply { - HonorReply(); - - factory HonorReply.fromJson(Map json) { - // TODO: implement fromJson - throw UnimplementedError('HonorReply.fromJson($json) is not implemented'); - } - - Map toJson() { - // TODO: implement toJson - throw UnimplementedError(); - } -} diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index b9ac4e52..e9064bdd 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -30,6 +30,7 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -362,14 +363,14 @@ class _ArticlePageState extends State if (_articleCtr.isLoaded.value) { late Widget content; if (_articleCtr.opus != null) { - debugPrint('json page'); + if (kDebugMode) debugPrint('json page'); content = OpusContent( opus: _articleCtr.opus!, callback: _getImageCallback, maxWidth: maxWidth, ); } else if (_articleCtr.opusData?.modules.moduleBlocked != null) { - debugPrint('moduleBlocked'); + if (kDebugMode) debugPrint('moduleBlocked'); final moduleBlocked = _articleCtr.opusData!.modules.moduleBlocked!; content = SliverToBoxAdapter( @@ -380,7 +381,7 @@ class _ArticlePageState extends State // json return ReadOpus(ops: _articleCtr.articleData?.ops); } - debugPrint('html page'); + if (kDebugMode) debugPrint('html page'); final res = parser.parse(_articleCtr.articleData!.content!); if (res.body!.children.isEmpty) { content = SliverToBoxAdapter( diff --git a/lib/pages/article/widgets/html_render.dart b/lib/pages/article/widgets/html_render.dart index be9a9020..3edf0db7 100644 --- a/lib/pages/article/widgets/html_render.dart +++ b/lib/pages/article/widgets/html_render.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_html/flutter_html.dart'; import 'package:html/dom.dart' as dom; @@ -15,7 +16,7 @@ Widget htmlRender({ required double maxWidth, Function(List, int)? callback, }) { - debugPrint('htmlRender'); + if (kDebugMode) debugPrint('htmlRender'); final extensions = [ TagExtension( tagsToExtend: {'img'}, @@ -71,7 +72,7 @@ Widget htmlRender({ ), ); } catch (err) { - debugPrint('错误的HTML: $element'); + if (kDebugMode) debugPrint('错误的HTML: $element'); return const SizedBox.shrink(); } }, diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index 103c4274..d04f94e2 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -14,6 +14,7 @@ import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_svg_image/cached_network_svg_image.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -55,7 +56,7 @@ class OpusContent extends StatelessWidget { @override Widget build(BuildContext context) { - debugPrint('opusContent'); + if (kDebugMode) debugPrint('opusContent'); if (opus.isEmpty) { return const SliverToBoxAdapter(); @@ -552,7 +553,7 @@ class OpusContent extends StatelessWidget { child: SelectionArea(child: Text.rich(renderer.span!)), ); default: - debugPrint('unknown type ${element.paraType}'); + if (kDebugMode) debugPrint('unknown type ${element.paraType}'); if (element.text?.nodes?.isNotEmpty == true) { return SelectionArea( child: Text.rich( diff --git a/lib/pages/common/common_publish_page.dart b/lib/pages/common/common_publish_page.dart index f13e987a..d5a29492 100644 --- a/lib/pages/common/common_publish_page.dart +++ b/lib/pages/common/common_publish_page.dart @@ -252,7 +252,7 @@ abstract class CommonPublishPageState } }, onPanelTypeChange: (panelType, data) { - // debugPrint('panelType: $panelType'); + // if (kDebugMode) debugPrint('panelType: $panelType'); switch (panelType) { case ChatBottomPanelType.none: this.panelType.value = PanelType.none; diff --git a/lib/pages/dynamics/widgets/additional_panel.dart b/lib/pages/dynamics/widgets/additional_panel.dart index 495a98cc..15c06537 100644 --- a/lib/pages/dynamics/widgets/additional_panel.dart +++ b/lib/pages/dynamics/widgets/additional_panel.dart @@ -1,4 +1,3 @@ -import 'package:PiliPlus/build_config.dart'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/http/dynamics.dart'; @@ -7,6 +6,7 @@ import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -708,7 +708,7 @@ Widget addWidget(ThemeData theme, DynamicItemModel item, BuildContext context, ), ); default: - if (BuildConfig.isDebug) { + if (kDebugMode) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 12), child: Text('additional panel\ntype: $type'), diff --git a/lib/pages/dynamics/widgets/module_panel.dart b/lib/pages/dynamics/widgets/module_panel.dart index ff9a81f0..effa2d8c 100644 --- a/lib/pages/dynamics/widgets/module_panel.dart +++ b/lib/pages/dynamics/widgets/module_panel.dart @@ -204,26 +204,27 @@ Widget module( const SizedBox(width: 10), Expanded( child: Column( + spacing: 2, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( item.modules.moduleDynamic!.major!.common!.title!, - style: TextStyle( - color: theme.colorScheme.primary, - ), + style: TextStyle(color: theme.colorScheme.primary), maxLines: 1, overflow: TextOverflow.ellipsis, ), - const SizedBox(height: 2), - Text( - item.modules.moduleDynamic!.major!.common!.desc!, - style: TextStyle( - color: theme.colorScheme.outline, - fontSize: theme.textTheme.labelMedium!.fontSize, + if (item.modules.moduleDynamic!.major!.common!.desc + ?.isNotEmpty == + true) + Text( + item.modules.moduleDynamic!.major!.common!.desc!, + style: TextStyle( + color: theme.colorScheme.outline, + fontSize: theme.textTheme.labelMedium!.fontSize, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), ], ), ), diff --git a/lib/pages/dynamics/widgets/rich_node_panel.dart b/lib/pages/dynamics/widgets/rich_node_panel.dart index e066f496..ae72a304 100644 --- a/lib/pages/dynamics/widgets/rich_node_panel.dart +++ b/lib/pages/dynamics/widgets/rich_node_panel.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -258,16 +259,14 @@ TextSpan? richNode( ); break; default: - spanChildren.add( - TextSpan(text: i.text, style: style), - ); + spanChildren.add(TextSpan(text: i.text, style: style)); break; } } return TextSpan(children: spanChildren); } } catch (err) { - debugPrint('❌rich_node_panel err: $err'); + if (kDebugMode) debugPrint('❌rich_node_panel err: $err'); return null; } } diff --git a/lib/pages/dynamics_create/view.dart b/lib/pages/dynamics_create/view.dart index f10639e6..47f0c162 100644 --- a/lib/pages/dynamics_create/view.dart +++ b/lib/pages/dynamics_create/view.dart @@ -19,6 +19,7 @@ import 'package:PiliPlus/pages/emote/controller.dart'; import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart' hide DraggableScrollableSheet; import 'package:flutter/services.dart' show LengthLimitingTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -614,7 +615,7 @@ class _CreateDynPanelState extends CommonPublishPageState { ); } else { SmartDialog.showToast(result['msg']); - debugPrint('failed to publish: ${result['msg']}'); + if (kDebugMode) debugPrint('failed to publish: ${result['msg']}'); } } diff --git a/lib/pages/episode_panel/view.dart b/lib/pages/episode_panel/view.dart index 5febf7c6..32879600 100644 --- a/lib/pages/episode_panel/view.dart +++ b/lib/pages/episode_panel/view.dart @@ -24,6 +24,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/page.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart' hide TabBarView; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -601,7 +602,7 @@ class _EpisodePanelState extends CommonSlidePageState { duration: const Duration(milliseconds: 200), ); } catch (e) { - debugPrint('to top: $e'); + if (kDebugMode) debugPrint('to top: $e'); } }, ), @@ -617,7 +618,7 @@ class _EpisodePanelState extends CommonSlidePageState { duration: const Duration(milliseconds: 200), ); } catch (e) { - debugPrint('to bottom: $e'); + if (kDebugMode) debugPrint('to bottom: $e'); } }, ), diff --git a/lib/pages/fav/pgc/controller.dart b/lib/pages/fav/pgc/controller.dart index f32bb258..ab94e1d8 100644 --- a/lib/pages/fav/pgc/controller.dart +++ b/lib/pages/fav/pgc/controller.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/models/pgc/list.dart'; import 'package:PiliPlus/pages/common/multi_select_controller.dart'; import 'package:PiliPlus/utils/storage.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -88,7 +89,7 @@ class FavPgcController ctr.allSelected.value = false; } } catch (e) { - debugPrint('fav pgc onUpdate: $e'); + if (kDebugMode) debugPrint('fav pgc onUpdate: $e'); } } SmartDialog.showToast(res['msg']); @@ -112,7 +113,7 @@ class FavPgcController ctr.allSelected.value = false; } } catch (e) { - debugPrint('fav pgc bangumiUpdate: $e'); + if (kDebugMode) debugPrint('fav pgc bangumiUpdate: $e'); } } SmartDialog.showToast(result['msg']); diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index 1cac9641..e44d77ca 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/skeleton/video_card_h.dart'; +import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; @@ -212,7 +213,8 @@ class _HistoryPageState extends State controller: _historyController.tabController, children: [ - _buildPage, + KeepAliveWrapper( + builder: (context) => _buildPage), ..._historyController.tabs.map( (item) => HistoryPage(type: item.type), ), @@ -294,7 +296,7 @@ class _HistoryPageState extends State } @override - bool get wantKeepAlive => true; + bool get wantKeepAlive => widget.type != null; } class AppBarWidget extends StatelessWidget implements PreferredSizeWidget { diff --git a/lib/pages/home/controller.dart b/lib/pages/home/controller.dart index c8f2a30c..18012c67 100644 --- a/lib/pages/home/controller.dart +++ b/lib/pages/home/controller.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/pages/common/common_controller.dart'; import 'package:PiliPlus/pages/mine/view.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/storage.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -60,7 +61,9 @@ class HomeController extends GetxController @override Future onRefresh() { - return controller.onRefresh().catchError((e) => debugPrint(e.toString())); + return controller.onRefresh().catchError((e) { + if (kDebugMode) debugPrint(e.toString()); + }); } void setTabConfig() { diff --git a/lib/pages/live_room/widgets/bottom_control.dart b/lib/pages/live_room/widgets/bottom_control.dart index aabeac7f..710f759b 100644 --- a/lib/pages/live_room/widgets/bottom_control.dart +++ b/lib/pages/live_room/widgets/bottom_control.dart @@ -6,7 +6,7 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -class BottomControl extends StatelessWidget implements PreferredSizeWidget { +class BottomControl extends StatelessWidget { const BottomControl({ super.key, required this.plPlayerController, @@ -23,9 +23,6 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { final TextStyle subTitleStyle; final TextStyle titleStyle; - @override - Size get preferredSize => const Size(double.infinity, kToolbarHeight); - @override Widget build(BuildContext context) { return AppBar( diff --git a/lib/pages/live_room/widgets/chat.dart b/lib/pages/live_room/widgets/chat.dart index a6f9ee6d..fbd6f00d 100644 --- a/lib/pages/live_room/widgets/chat.dart +++ b/lib/pages/live_room/widgets/chat.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/pages/live_room/controller.dart'; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -66,7 +67,7 @@ class LiveRoomChat extends StatelessWidget { }, ); } catch (err) { - debugPrint(err.toString()); + if (kDebugMode) debugPrint(err.toString()); } }, ), diff --git a/lib/pages/live_room/widgets/header_control.dart b/lib/pages/live_room/widgets/header_control.dart index 9e81b518..baf1d31a 100644 --- a/lib/pages/live_room/widgets/header_control.dart +++ b/lib/pages/live_room/widgets/header_control.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; -class LiveHeaderControl extends StatelessWidget implements PreferredSizeWidget { +class LiveHeaderControl extends StatelessWidget { const LiveHeaderControl({ required this.plPlayerController, required this.onSendDanmaku, @@ -17,9 +17,6 @@ class LiveHeaderControl extends StatelessWidget implements PreferredSizeWidget { final PlPlayerController plPlayerController; final VoidCallback onSendDanmaku; - @override - Size get preferredSize => const Size(double.infinity, kToolbarHeight); - @override Widget build(BuildContext context) { return AppBar( diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index 9a9f7300..5acaec64 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/models/login/model.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -124,7 +125,7 @@ class LoginPageController extends GetxController SmartDialog.showToast('关闭验证'); }, onResult: (Map message) { - debugPrint("Captcha result: $message"); + if (kDebugMode) debugPrint("Captcha result: $message"); String code = message["code"]; if (code == "1") { // 发送 message["result"] 中的数据向 B 端的业务服务接口进行查询 @@ -139,7 +140,7 @@ class LoginPageController extends GetxController onSuccess(); } else { // 终端用户完成验证失败,自动重试 If the verification fails, it will be automatically retried. - debugPrint("Captcha result code : $code"); + if (kDebugMode) debugPrint("Captcha result code : $code"); } }, onError: (Map message) { @@ -609,7 +610,10 @@ class LoginPageController extends GetxController } if (!isGeeArgumentValid(geeGt, geeChallenge)) { - debugPrint('验证信息错误:${res["msg"]}\n返回内容:${res["data"]},尝试另一个验证码接口'); + if (kDebugMode) { + debugPrint( + '验证信息错误:${res["msg"]}\n返回内容:${res["data"]},尝试另一个验证码接口'); + } var preCaptureRes = await LoginHttp.preCapture(); if (!preCaptureRes['status'] || preCaptureRes['data'] == null) { SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n" diff --git a/lib/pages/member_favorite/controller.dart b/lib/pages/member_favorite/controller.dart index c2f17108..22404f0f 100644 --- a/lib/pages/member_favorite/controller.dart +++ b/lib/pages/member_favorite/controller.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/http/member.dart'; import 'package:PiliPlus/models/space_fav/datum.dart'; import 'package:PiliPlus/models/space_fav/list.dart'; import 'package:PiliPlus/pages/common/common_data_controller.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -50,7 +51,7 @@ class MemberFavoriteCtr extends CommonDataController { secondEnd.value = (res[1].mediaListResponse?.count ?? -1) <= (res[1].mediaListResponse?.list?.length ?? -1); } catch (e) { - debugPrint(e.toString()); + if (kDebugMode) debugPrint(e.toString()); } loadingState.value = response; return true; diff --git a/lib/pages/member_home/view.dart b/lib/pages/member_home/view.dart index 780b01c4..41884614 100644 --- a/lib/pages/member_home/view.dart +++ b/lib/pages/member_home/view.dart @@ -14,6 +14,7 @@ import 'package:PiliPlus/pages/member_contribute/controller.dart'; import 'package:PiliPlus/pages/member_home/widget/fav_item.dart'; import 'package:PiliPlus/pages/member_like/view.dart'; import 'package:PiliPlus/utils/grid.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -270,10 +271,10 @@ class _MemberHomeState extends State if (contributeCtr.tabController?.index != index1) { contributeCtr.tabController?.index = index1; } - debugPrint('initialized'); + if (kDebugMode) debugPrint('initialized'); } catch (e) { _ctr.contributeInitialIndex.value = index1; - debugPrint('not initialized'); + if (kDebugMode) debugPrint('not initialized'); } } } diff --git a/lib/pages/member_upower_rank/view.dart b/lib/pages/member_upower_rank/view.dart index a55a0be7..ba43435e 100644 --- a/lib/pages/member_upower_rank/view.dart +++ b/lib/pages/member_upower_rank/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; @@ -29,6 +30,7 @@ class _UpowerRankPageState extends State @override Widget build(BuildContext context) { super.build(context); + final theme = Theme.of(context); final child = refreshIndicator( onRefresh: _controller.onRefresh, child: CustomScrollView( @@ -37,7 +39,8 @@ class _UpowerRankPageState extends State padding: EdgeInsets.only( bottom: MediaQuery.paddingOf(context).bottom + 80, ), - sliver: Obx(() => _bilidBody(_controller.loadingState.value)), + sliver: + Obx(() => _bilidBody(theme, _controller.loadingState.value)), ), ], ), @@ -53,37 +56,44 @@ class _UpowerRankPageState extends State body: SafeArea( top: false, bottom: false, - child: Obx( - () => _controller.tabs.value != null - ? DefaultTabController( - length: _controller.tabs.value!.length, - child: Column( - children: [ - TabBar( - isScrollable: true, - tabAlignment: TabAlignment.start, - tabs: _controller.tabs.value! - .map((e) => Tab( - text: '${e.name!}(${e.memberTotal ?? 0})')) - .toList(), - ), - Expanded( - child: Material( - color: Colors.transparent, - child: tabBarView( - children: [ - child, - ..._controller.tabs.value!.sublist(1).map((e) => - UpowerRankPage( - privilegeType: e.privilegeType)) - ], + child: Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 625), + child: Obx( + () => _controller.tabs.value != null + ? DefaultTabController( + length: _controller.tabs.value!.length, + child: Column( + children: [ + TabBar( + isScrollable: true, + tabAlignment: TabAlignment.start, + tabs: _controller.tabs.value! + .map((e) => Tab( + text: + '${e.name!}(${e.memberTotal ?? 0})')) + .toList(), ), - ), + Expanded( + child: Material( + color: Colors.transparent, + child: tabBarView( + children: [ + KeepAliveWrapper( + builder: (context) => child), + ..._controller.tabs.value!.sublist(1).map( + (e) => UpowerRankPage( + privilegeType: e.privilegeType)) + ], + ), + ), + ), + ], ), - ], - ), - ) - : child, + ) + : child, + ), + ), ), ), ); @@ -92,7 +102,8 @@ class _UpowerRankPageState extends State } } - Widget _bilidBody(LoadingState?> loadingState) { + Widget _bilidBody( + ThemeData theme, LoadingState?> loadingState) { return switch (loadingState) { Loading() => widget.privilegeType == null ? const SliverToBoxAdapter(child: LinearProgressIndicator()) @@ -113,50 +124,50 @@ class _UpowerRankPageState extends State _controller.onLoadMore(); } final item = response[index]; - return InkWell( + return ListTile( onTap: () => Get.toNamed('/member?mid=${item.mid}'), - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 12), - child: Row( + leading: Text( + (index + 1).toString(), + style: TextStyle( + fontSize: 16, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.bold, + color: switch (index) { + 0 => const Color(0xFFfdad13), + 1 => const Color(0xFF8aace1), + 2 => const Color(0xFFdfa777), + _ => theme.colorScheme.outline, + }, + ), + ), + title: Row( + spacing: 12, + children: [ + NetworkImgLayer( + width: 38, + height: 38, + src: item.avatar, + type: ImageType.avatar, + ), + Text( + item.nickname!, + style: const TextStyle(fontSize: 14), + ), + ], + ), + trailing: Text.rich( + TextSpan( children: [ - SizedBox( - width: 32, - child: Text( - (index + 1).toString(), - textAlign: TextAlign.center, - style: const TextStyle(fontSize: 13), + TextSpan( + text: item.day!.toString(), + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, ), ), - const SizedBox(width: 6), - NetworkImgLayer( - width: 36, - height: 36, - src: item.avatar, - type: ImageType.avatar, - ), - const SizedBox(width: 12), - Text( - item.nickname!, - style: const TextStyle(fontSize: 14), - ), - const Spacer(), - Text.rich( - TextSpan( - children: [ - TextSpan( - text: item.day!.toString(), - style: const TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - ), - ), - const TextSpan( - text: ' 天', - style: TextStyle(fontSize: 13), - ), - ], - ), + const TextSpan( + text: ' 天', + style: TextStyle(fontSize: 13), ), ], ), @@ -173,5 +184,5 @@ class _UpowerRankPageState extends State } @override - bool get wantKeepAlive => true; + bool get wantKeepAlive => widget.privilegeType != null; } diff --git a/lib/pages/pgc_review/child/controller.dart b/lib/pages/pgc_review/child/controller.dart index ed897961..d168a410 100644 --- a/lib/pages/pgc_review/child/controller.dart +++ b/lib/pages/pgc_review/child/controller.dart @@ -26,7 +26,6 @@ class PgcReviewController @override Future onRefresh() { - count.value = null; next = null; return super.onRefresh(); } diff --git a/lib/pages/save_panel/view.dart b/lib/pages/save_panel/view.dart index b1cfb892..dca461ed 100644 --- a/lib/pages/save_panel/view.dart +++ b/lib/pages/save_panel/view.dart @@ -12,6 +12,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; import 'package:PiliPlus/utils/download.dart'; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -152,11 +153,11 @@ class _SavePanelState extends State { } catch (_) {} } - debugPrint(uri); + if (kDebugMode) debugPrint(uri); } else if (_item is DynamicItemModel) { uri = parseDyn(_item); - debugPrint(uri); + if (kDebugMode) debugPrint(uri); } } @@ -269,7 +270,7 @@ class _SavePanelState extends State { } } } catch (e) { - debugPrint('on save/share reply: $e'); + if (kDebugMode) debugPrint('on save/share reply: $e'); SmartDialog.dismiss(); } } diff --git a/lib/pages/setting/pages/display_mode.dart b/lib/pages/setting/pages/display_mode.dart index d17edca3..7488c0ed 100644 --- a/lib/pages/setting/pages/display_mode.dart +++ b/lib/pages/setting/pages/display_mode.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/utils/storage.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart' show PlatformException; @@ -57,7 +58,7 @@ class _SetDisplayModeState extends State { try { modes = await FlutterDisplayMode.supported; } on PlatformException catch (e) { - debugPrint(e.toString()); + if (kDebugMode) debugPrint(e.toString()); } var res = getDisplayModeType(modes); diff --git a/lib/pages/setting/pages/logs.dart b/lib/pages/setting/pages/logs.dart index de956a8b..848eebe3 100644 --- a/lib/pages/setting/pages/logs.dart +++ b/lib/pages/setting/pages/logs.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/services/loggeer.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; class LogsPage extends StatefulWidget { @@ -67,7 +68,7 @@ class _LogsPageState extends State { l.split("Crash occurred on")[1].trim(), ); } catch (e) { - debugPrint(e.toString()); + if (kDebugMode) debugPrint(e.toString()); date = l.toString(); } return ""; diff --git a/lib/pages/setting/widgets/model.dart b/lib/pages/setting/widgets/model.dart index 59b65198..e8b4fe1f 100644 --- a/lib/pages/setting/widgets/model.dart +++ b/lib/pages/setting/widgets/model.dart @@ -51,6 +51,7 @@ import 'package:PiliPlus/utils/recommend_filter.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:auto_orientation/auto_orientation.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -1378,7 +1379,7 @@ List get recommendSettings => [ try { Get.find().enableSaveLastData = value; } catch (e) { - debugPrint('$e'); + if (kDebugMode) debugPrint('$e'); } }, ), @@ -1397,7 +1398,7 @@ List get recommendSettings => [ ctr.lastRefreshAt = null; } } catch (e) { - debugPrint('$e'); + if (kDebugMode) debugPrint('$e'); } }, ), diff --git a/lib/pages/setting/widgets/select_dialog.dart b/lib/pages/setting/widgets/select_dialog.dart index 3de499dd..ac4f4c23 100644 --- a/lib/pages/setting/widgets/select_dialog.dart +++ b/lib/pages/setting/widgets/select_dialog.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/video_utils.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; class SelectDialog extends StatelessWidget { @@ -104,7 +105,7 @@ class _CdnSelectDialogState extends State { final videoItem = widget.sample ?? await _getSampleUrl(); await _testAllCdnServices(videoItem); } catch (e) { - debugPrint('CDN speed test failed: $e'); + if (kDebugMode) debugPrint('CDN speed test failed: $e'); } } @@ -167,7 +168,7 @@ class _CdnSelectDialogState extends State { void _handleSpeedTestError(dynamic error, int index) { if (_cdnResList[index].value != null) return; - debugPrint('CDN speed test error: $error'); + if (kDebugMode) debugPrint('CDN speed test error: $error'); if (!mounted) return; var message = error.toString(); if (message.isEmpty) { diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 15ee0b14..2029318d 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -46,6 +46,7 @@ import 'package:PiliPlus/utils/video_utils.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_volume_controller/flutter_volume_controller.dart'; @@ -771,7 +772,7 @@ class VideoDetailController extends GetxController plPlayerController.segmentList.value = segmentProgressList!; } } catch (e) { - debugPrint('failed to parse sponsorblock: $e'); + if (kDebugMode) debugPrint('failed to parse sponsorblock: $e'); } } } @@ -789,8 +790,10 @@ class VideoDetailController extends GetxController if (currentPos != _lastPos) { _lastPos = currentPos; for (SegmentModel item in segmentList) { - // debugPrint( - // '${position.inSeconds},,${item.segment.first},,${item.segment.second},,${item.skipType.name},,${item.hasSkipped}'); + // if (kDebugMode) { + // debugPrint( + // '${position.inSeconds},,${item.segment.first},,${item.segment.second},,${item.skipType.name},,${item.hasSkipped}'); + // } if (item.segment.first == position.inSeconds) { if (item.skipType == SkipType.alwaysSkip) { onSkip(item); @@ -881,7 +884,7 @@ class VideoDetailController extends GetxController ); SmartDialog.showToast('已跳至第${item + 1}P'); } catch (e) { - debugPrint('$e'); + if (kDebugMode) debugPrint('$e'); SmartDialog.showToast('跳转失败'); } onRemoveItem(listData.indexOf(item), item); @@ -916,7 +919,7 @@ class VideoDetailController extends GetxController _showBlockToast('已跳至${item.segmentType.shortTitle}'); } } catch (e) { - debugPrint('failed to skip: $e'); + if (kDebugMode) debugPrint('failed to skip: $e'); if (isSkip) { _showBlockToast('${item.segmentType.shortTitle}片段跳过失败'); } else { @@ -1199,7 +1202,7 @@ class VideoDetailController extends GetxController return; } final List allVideosList = data.dash!.video!; - // debugPrint("allVideosList:${allVideosList}"); + // if (kDebugMode) debugPrint("allVideosList:${allVideosList}"); // 当前可播放的最高质量视频 int currentHighVideoQa = allVideosList.first.quality.code; // 预设的画质为null,则当前可用的最高质量 @@ -1424,10 +1427,12 @@ class VideoDetailController extends GetxController if (res.data['code'] == 0) { steinEdgeInfo = EdgeInfoData.fromJson(res.data['data']); } else { - debugPrint('getSteinEdgeInfo error: ${res.data['message']}'); + if (kDebugMode) { + debugPrint('getSteinEdgeInfo error: ${res.data['message']}'); + } } } catch (e) { - debugPrint('getSteinEdgeInfo: $e'); + if (kDebugMode) debugPrint('getSteinEdgeInfo: $e'); } } @@ -1446,7 +1451,7 @@ class VideoDetailController extends GetxController getSteinEdgeInfo(); } } catch (e) { - debugPrint('handle stein: $e'); + if (kDebugMode) debugPrint('handle stein: $e'); } } @@ -1615,7 +1620,7 @@ class VideoDetailController extends GetxController } } } catch (e) { - debugPrint('_getDmTrend: $e'); + if (kDebugMode) debugPrint('_getDmTrend: $e'); } } diff --git a/lib/pages/video/introduction/ugc/controller.dart b/lib/pages/video/introduction/ugc/controller.dart index e81e9b0d..0cd115c8 100644 --- a/lib/pages/video/introduction/ugc/controller.dart +++ b/lib/pages/video/introduction/ugc/controller.dart @@ -35,6 +35,7 @@ import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:expandable/expandable.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -423,7 +424,7 @@ class VideoIntroController extends GetxController { } } } catch (e) { - debugPrint(e.toString()); + if (kDebugMode) debugPrint(e.toString()); } SmartDialog.showLoading(msg: '请求中'); var result = await VideoHttp.favVideo( diff --git a/lib/pages/video/introduction/ugc/view.dart b/lib/pages/video/introduction/ugc/view.dart index ffb68571..67eca329 100644 --- a/lib/pages/video/introduction/ugc/view.dart +++ b/lib/pages/video/introduction/ugc/view.dart @@ -679,7 +679,7 @@ class _VideoInfoState extends State { videoIntroController.videoDetail.value.bvid ?? '', style: TextStyle( fontSize: 14, - color: theme.colorScheme.primary, + color: theme.colorScheme.secondary, ), ), ), diff --git a/lib/pages/video/post_panel/view.dart b/lib/pages/video/post_panel/view.dart index 5dc7063e..a259cd5a 100644 --- a/lib/pages/video/post_panel/view.dart +++ b/lib/pages/video/post_panel/view.dart @@ -16,6 +16,7 @@ import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -516,7 +517,7 @@ class _PostPanelState extends CommonCollapseSlidePageState { }); } } catch (e) { - debugPrint(e.toString()); + if (kDebugMode) debugPrint(e.toString()); } } }); diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index 83b20450..b70dcadd 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -26,6 +26,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:dio/dio.dart'; import 'package:fixnum/fixnum.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -694,7 +695,7 @@ class ReplyItemGrpc extends StatelessWidget { 0; isValid = seek * 1000 <= duration; } catch (e) { - debugPrint('failed to validate: $e'); + if (kDebugMode) debugPrint('failed to validate: $e'); } spanChildren.add( TextSpan( diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index 0395f477..cf2c245b 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -54,6 +54,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:floating/floating.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart' show SystemUiOverlayStyle; @@ -213,7 +214,7 @@ class _VideoDetailPageVState extends State } } } catch (e) { - debugPrint('handle playe status: $e'); + if (kDebugMode) debugPrint('handle playe status: $e'); } if (status == PlayerStatus.completed) { @@ -274,12 +275,14 @@ class _VideoDetailPageVState extends State /// 未开启自动播放时触发播放 Future handlePlay() async { if (videoDetailController.isQuerying) { - debugPrint('handlePlay: querying'); + if (kDebugMode) debugPrint('handlePlay: querying'); return; } if (videoDetailController.videoUrl == null || videoDetailController.audioUrl == null) { - debugPrint('handlePlay: videoUrl/audioUrl not initialized'); + if (kDebugMode) { + debugPrint('handlePlay: videoUrl/audioUrl not initialized'); + } videoDetailController.queryVideoUrl(); return; } @@ -840,15 +843,19 @@ class _VideoDetailPageVState extends State child: GestureDetector( onTap: () async { if (videoDetailController.isQuerying) { - debugPrint('handlePlay: querying'); + if (kDebugMode) { + debugPrint('handlePlay: querying'); + } return; } if (videoDetailController.videoUrl == null || videoDetailController.audioUrl == null) { - debugPrint( - 'handlePlay: videoUrl/audioUrl not initialized'); + if (kDebugMode) { + debugPrint( + 'handlePlay: videoUrl/audioUrl not initialized'); + } videoDetailController.queryVideoUrl(); return; } @@ -1732,7 +1739,7 @@ class _VideoDetailPageVState extends State ), ); } catch (e) { - debugPrint('build stein edges: $e'); + if (kDebugMode) debugPrint('build stein edges: $e'); return const SizedBox.shrink(); } } diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index c1969288..a1717bf5 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -43,7 +43,7 @@ import 'package:material_design_icons_flutter/material_design_icons_flutter.dart import 'package:media_kit/media_kit.dart'; import 'package:share_plus/share_plus.dart'; -class HeaderControl extends StatefulWidget implements PreferredSizeWidget { +class HeaderControl extends StatefulWidget { const HeaderControl({ required this.controller, required this.videoDetailCtr, @@ -56,9 +56,6 @@ class HeaderControl extends StatefulWidget implements PreferredSizeWidget { @override State createState() => HeaderControlState(); - - @override - Size get preferredSize => throw UnimplementedError(); } class HeaderControlState extends State { @@ -332,7 +329,7 @@ class HeaderControlState extends State { .controller.continuePlayInBackground.value, ), ), - int() => throw UnimplementedError(), + _ => throw UnimplementedError(), }; }, ), diff --git a/lib/pages/webview/view.dart b/lib/pages/webview/view.dart index bcd6225b..3c08ab01 100644 --- a/lib/pages/webview/view.dart +++ b/lib/pages/webview/view.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/utils/cache_manage.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -229,7 +230,7 @@ class _WebviewPageState extends State { suggestedFilename = Uri.decodeComponent(suggestedFilename); } catch (e) { - debugPrint(e.toString()); + if (kDebugMode) debugPrint(e.toString()); } return AlertDialog( title: Text( @@ -284,7 +285,7 @@ class _WebviewPageState extends State { selfHandle: true, off: _off, ); - // debugPrint('webview: [$url], [$hasMatch]'); + // if (kDebugMode) debugPrint('webview: [$url], [$hasMatch]'); if (hasMatch) { progress.value = 1; return NavigationActionPolicy.CANCEL; diff --git a/lib/pages/whisper_detail/controller.dart b/lib/pages/whisper_detail/controller.dart index 538da5b9..4378fde7 100644 --- a/lib/pages/whisper_detail/controller.dart +++ b/lib/pages/whisper_detail/controller.dart @@ -43,8 +43,6 @@ class WhisperDetailController extends CommonListController { if (msgs.length == 1 && msgs.last.msgType == 18 && msgs.last.msgSource == 18) { - // debugPrint(messageList.last); - // debugPrint(messageList.last.content); //{content: [{"text":"对方主动回复或关注你前,最多发送1条消息","color_day":"#9499A0","color_nig":"#9499A0"}]} } else { ackSessionMsg(msgs.last.msgSeqno.toInt()); diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 78830f21..1dff793b 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -28,6 +28,7 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:canvas_danmaku/canvas_danmaku.dart'; import 'package:easy_debounce/easy_throttle.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -613,8 +614,10 @@ class PlPlayerController { await _initializePlayer(); } catch (err, stackTrace) { dataStatus.status.value = DataStatus.error; - debugPrint(stackTrace.toString()); - debugPrint('plPlayer err: $err'); + if (kDebugMode) { + debugPrint(stackTrace.toString()); + debugPrint('plPlayer err: $err'); + } } } @@ -650,7 +653,7 @@ class PlPlayerController { await targetFile.writeAsBytes(bytes); // copiedFilesCount++; } catch (e) { - debugPrint('$e'); + if (kDebugMode) debugPrint('$e'); } } return shadersDirectory; @@ -964,11 +967,6 @@ class PlPlayerController { videoType.value == 'live', ); }), - // videoPlayerController!.stream.log.listen((event) { - // debugPrint('videoPlayerController!.stream.log.listen'); - // debugPrint(event); - // SmartDialog.showToast('视频加载日志: $event'); - // }), videoPlayerController!.stream.error.listen((String event) { // 直播的错误提示没有参考价值,均不予显示 if (videoType.value == 'live') return; @@ -980,13 +978,15 @@ class PlPlayerController { EasyThrottle.throttle('videoPlayerController!.stream.error.listen', const Duration(milliseconds: 10000), () { Future.delayed(const Duration(milliseconds: 3000), () async { - debugPrint("isBuffering.value: ${isBuffering.value}"); - debugPrint("_buffered.value: ${_buffered.value}"); + if (kDebugMode) { + debugPrint("isBuffering.value: ${isBuffering.value}"); + } + if (kDebugMode) debugPrint("_buffered.value: ${_buffered.value}"); if (isBuffering.value && _buffered.value == Duration.zero) { SmartDialog.showToast('视频链接打开失败,重试中', displayTime: const Duration(milliseconds: 500)); if (!await refreshPlayer()) { - debugPrint("failed"); + if (kDebugMode) debugPrint("failed"); } } }); @@ -1008,7 +1008,7 @@ class PlPlayerController { } } SmartDialog.showToast('视频加载错误, $event'); - debugPrint('视频加载错误, $event'); + if (kDebugMode) debugPrint('视频加载错误, $event'); } } }), @@ -1064,13 +1064,13 @@ class PlPlayerController { try { await _videoPlayerController?.seek(position); } catch (e) { - debugPrint('seek failed: $e'); + if (kDebugMode) debugPrint('seek failed: $e'); } // if (playerStatus.stopped) { // play(); // } } else { - debugPrint('seek duration else'); + if (kDebugMode) debugPrint('seek duration else'); _timerForSeek?.cancel(); _timerForSeek = Timer.periodic(const Duration(milliseconds: 200), (Timer t) async { @@ -1084,7 +1084,7 @@ class PlPlayerController { danmakuController?.clear(); await _videoPlayerController?.seek(position); } catch (e) { - debugPrint('seek failed: $e'); + if (kDebugMode) debugPrint('seek failed: $e'); } // if (playerStatus.status.value == PlayerStatus.paused) { // play(); @@ -1235,7 +1235,7 @@ class PlPlayerController { FlutterVolumeController.updateShowSystemUI(false); await FlutterVolumeController.setVolume(volumeNew); } catch (err) { - debugPrint(err.toString()); + if (kDebugMode) debugPrint(err.toString()); } } @@ -1356,7 +1356,7 @@ class PlPlayerController { enableAutoLongPressSpeed ? playbackSpeed * 2 : longPressSpeed); } } else { - // debugPrint('$playbackSpeed'); + // if (kDebugMode) debugPrint('$playbackSpeed'); _longPressStatus.value = val; await setPlaybackSpeed(lastPlaybackSpeed); } @@ -1577,7 +1577,7 @@ class PlPlayerController { _instance = null; videoPlayerServiceHandler.clear(); } catch (err) { - debugPrint(err.toString()); + if (kDebugMode) debugPrint(err.toString()); } } @@ -1632,7 +1632,7 @@ class PlPlayerController { } } catch (e) { videoShot = {'status': false}; - debugPrint('getVideoShot: $e'); + if (kDebugMode) debugPrint('getVideoShot: $e'); } _isQueryingVideoShot = false; } diff --git a/lib/plugin/pl_player/utils/fullscreen.dart b/lib/plugin/pl_player/utils/fullscreen.dart index ddb1e3ff..2db94fec 100644 --- a/lib/plugin/pl_player/utils/fullscreen.dart +++ b/lib/plugin/pl_player/utils/fullscreen.dart @@ -28,8 +28,10 @@ Future landScape() async { ); } } catch (exception, stacktrace) { - debugPrint(exception.toString()); - debugPrint(stacktrace.toString()); + if (kDebugMode) { + debugPrint(exception.toString()); + debugPrint(stacktrace.toString()); + } } } @@ -98,7 +100,9 @@ Future showStatusBar() async { ); } } catch (exception, stacktrace) { - debugPrint(exception.toString()); - debugPrint(stacktrace.toString()); + if (kDebugMode) { + debugPrint(exception.toString()); + debugPrint(stacktrace.toString()); + } } } diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index e9bdfce0..d093a230 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -32,6 +32,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:fl_chart/fl_chart.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_volume_controller/flutter_volume_controller.dart'; @@ -65,8 +66,8 @@ class PLVideoPlayer extends StatefulWidget { final VideoDetailController? videoDetailController; final VideoIntroController? videoIntroController; final BangumiIntroController? bangumiIntroController; - final PreferredSizeWidget headerControl; - final PreferredSizeWidget? bottomControl; + final Widget headerControl; + final Widget? bottomControl; final Widget? danmuWidget; // List or Widget @@ -748,7 +749,9 @@ class _PLVideoPlayerState extends State interacting = true; } _initialFocalPoint = details.localFocalPoint; - // debugPrint("_initialFocalPoint$_initialFocalPoint"); + // if (kDebugMode) { + // debugPrint("_initialFocalPoint$_initialFocalPoint"); + // } _gestureType = null; }, onInteractionUpdate: (ScaleUpdateDetails details) { @@ -900,13 +903,13 @@ class _PLVideoPlayerState extends State if (isFullScreen ^ fullScreenGestureReverse) { fullScreenTrigger(fullScreenGestureReverse); } - // debugPrint('center_down:$cumulativeDy'); + // if (kDebugMode) debugPrint('center_down:$cumulativeDy'); } else if (cumulativeDy < -threshold) { _gestureType = 'center_up'; if (!isFullScreen ^ fullScreenGestureReverse) { fullScreenTrigger(!fullScreenGestureReverse); } - // debugPrint('center_up:$cumulativeDy'); + // if (kDebugMode) debugPrint('center_up:$cumulativeDy'); } } else if (_gestureType == 'right') { // 右边区域 @@ -1010,13 +1013,13 @@ class _PLVideoPlayerState extends State if (isFullScreen ^ fullScreenGestureReverse) { fullScreenTrigger(fullScreenGestureReverse); } - // debugPrint('center_down:$cumulativeDy'); + // if (kDebugMode) debugPrint('center_down:$cumulativeDy'); } else if (cumulativeDy < -threshold) { _gestureType = 'center_up'; if (!isFullScreen ^ fullScreenGestureReverse) { fullScreenTrigger(!fullScreenGestureReverse); } - // debugPrint('center_up:$cumulativeDy'); + // if (kDebugMode) debugPrint('center_up:$cumulativeDy'); } } else if (_gestureType == 'right') { // 右边区域 @@ -1866,7 +1869,7 @@ Widget buildSeekPreviewWidget(PlPlayerController plPlayerController) { ), ); } catch (e) { - debugPrint('seek preview: $e'); + if (kDebugMode) debugPrint('seek preview: $e'); return SizedBox.shrink( key: ValueKey(plPlayerController.previewDx.value), ); @@ -1896,9 +1899,9 @@ Widget buildViewPointWidget( plPlayerController.videoPlayerController ?.seek(Duration(seconds: item.from!)); } - // debugPrint('${item.title},,${item.from}'); + // if (kDebugMode) debugPrint('${item.title},,${item.from}'); } catch (e) { - debugPrint('$e'); + if (kDebugMode) debugPrint('$e'); } }, ), diff --git a/lib/plugin/pl_player/widgets/app_bar_ani.dart b/lib/plugin/pl_player/widgets/app_bar_ani.dart index 90d3d1de..8a94d345 100644 --- a/lib/plugin/pl_player/widgets/app_bar_ani.dart +++ b/lib/plugin/pl_player/widgets/app_bar_ani.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -class AppBarAni extends StatelessWidget implements PreferredSizeWidget { +class AppBarAni extends StatelessWidget { const AppBarAni({ required this.child, required this.controller, @@ -9,14 +9,11 @@ class AppBarAni extends StatelessWidget implements PreferredSizeWidget { super.key, }); - final PreferredSizeWidget child; + final Widget child; final AnimationController controller; final bool visible; final String? position; - @override - Size get preferredSize => child.preferredSize; - @override Widget build(BuildContext context) { visible ? controller.forward() : controller.reverse(); diff --git a/lib/plugin/pl_player/widgets/bottom_control.dart b/lib/plugin/pl_player/widgets/bottom_control.dart index 72f7b062..e05491b4 100644 --- a/lib/plugin/pl_player/widgets/bottom_control.dart +++ b/lib/plugin/pl_player/widgets/bottom_control.dart @@ -9,7 +9,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:get/get.dart'; -class BottomControl extends StatelessWidget implements PreferredSizeWidget { +class BottomControl extends StatelessWidget { final PlPlayerController controller; final Function buildBottomControl; const BottomControl({ @@ -18,9 +18,6 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { super.key, }); - @override - Size get preferredSize => const Size(double.infinity, kToolbarHeight); - @override Widget build(BuildContext context) { final theme = Theme.of(context); diff --git a/lib/scripts/build.sh b/lib/scripts/build.sh index fece0c35..515d0e12 100644 --- a/lib/scripts/build.sh +++ b/lib/scripts/build.sh @@ -10,7 +10,6 @@ commit_hash=$(git rev-parse HEAD) cat < lib/build_config.dart class BuildConfig { - static const bool isDebug = false; static const String buildTime = '$build_time'; static const String commitHash = '$commit_hash'; } diff --git a/lib/services/audio_handler.dart b/lib/services/audio_handler.dart index e47d3251..a16590a6 100644 --- a/lib/services/audio_handler.dart +++ b/lib/services/audio_handler.dart @@ -60,10 +60,12 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { Future setMediaItem(MediaItem newMediaItem) async { if (!enableBackgroundPlay) return; - // debugPrint("此时调用栈为:"); - // debugPrint(newMediaItem); - // debugPrint(newMediaItem.title); - // debugPrint(StackTrace.current.toString()); + // if (kDebugMode) { + // debugPrint("此时调用栈为:"); + // debugPrint(newMediaItem); + // debugPrint(newMediaItem.title); + // debugPrint(StackTrace.current.toString()); + // } if (!mediaItem.isClosed) mediaItem.add(newMediaItem); } @@ -113,8 +115,10 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { void onVideoDetailChange(dynamic data, int cid, String herotag) { if (!enableBackgroundPlay) return; - // debugPrint('当前调用栈为:'); - // debugPrint(StackTrace.current); + // if (kDebugMode) { + // debugPrint('当前调用栈为:'); + // debugPrint(StackTrace.current); + // } if (!PlPlayerController.instanceExists()) return; if (data == null) return; @@ -161,7 +165,7 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { ); } if (mediaItem == null) return; - // debugPrint("exist: ${PlPlayerController.instanceExists()}"); + // if (kDebugMode) 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 c08ad3a9..374a9bd5 100644 --- a/lib/services/loggeer.dart +++ b/lib/services/loggeer.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; import 'package:path/path.dart' as p; @@ -44,7 +45,7 @@ Future clearLogs() async { try { await file.writeAsString(''); } catch (e) { - debugPrint('Error clearing file: $e'); + if (kDebugMode) 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 40c77342..3a31e1a3 100644 --- a/lib/services/shutdown_timer_service.dart +++ b/lib/services/shutdown_timer_service.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -70,7 +71,7 @@ class ShutdownTimerService with WidgetsBindingObserver { void _showShutdownDialog() { if (isInBackground) { - debugPrint("app在后台运行,不弹窗"); + if (kDebugMode) debugPrint("app在后台运行,不弹窗"); _executeShutdown(); return; } diff --git a/lib/utils/accounts/account_manager/account_mgr.dart b/lib/utils/accounts/account_manager/account_mgr.dart index c37ab0cf..10a733e4 100644 --- a/lib/utils/accounts/account_manager/account_mgr.dart +++ b/lib/utils/accounts/account_manager/account_mgr.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -107,7 +108,7 @@ class AccountManager extends Interceptor { // app端不需要管理cookie if (path.startsWith(HttpString.appBaseUrl)) { - // debugPrint('is app: ${options.path}'); + // if (kDebugMode) debugPrint('is app: ${options.path}'); // bytes是grpc响应 if (options.responseType != ResponseType.bytes) { final dataPtr = (options.method == 'POST' && options.data is Map @@ -121,7 +122,7 @@ class AccountManager extends Interceptor { dataPtr['ts'] ??= (DateTime.now().millisecondsSinceEpoch ~/ 1000).toString(); Utils.appSign(dataPtr); - // debugPrint(dataPtr.toString()); + // if (kDebugMode) debugPrint(dataPtr.toString()); } } return handler.next(options); @@ -213,7 +214,7 @@ class AccountManager extends Interceptor { 'site/getCoin', ]; String url = err.requestOptions.uri.toString(); - debugPrint('🌹🌹ApiInterceptor: $url'); + if (kDebugMode) debugPrint('🌹🌹ApiInterceptor: $url'); if (skipShow.any((i) => url.contains(i)) || (url.contains('skipSegments') && err.requestOptions.method == 'GET')) { // skip diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index ade223b1..b3bbf09f 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/url_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:app_links/app_links.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -64,7 +65,7 @@ class PiliScheme { int? businessId, int? oid, }) async { - // debugPrint('onAppLink: $uri'); + // if (kDebugMode) debugPrint('onAppLink: $uri'); final String scheme = uri.scheme; final String host = uri.host; @@ -459,7 +460,7 @@ class PiliScheme { return false; default: if (!selfHandle) { - debugPrint('$uri'); + if (kDebugMode) debugPrint('$uri'); SmartDialog.showToast('未知路径:$uri,请截图反馈给开发者'); } return false; @@ -487,7 +488,7 @@ class PiliScheme { return true; } if (!selfHandle) { - debugPrint('$uri'); + if (kDebugMode) debugPrint('$uri'); SmartDialog.showToast('未知路径:$uri,请截图反馈给开发者'); } return false; @@ -591,7 +592,7 @@ class PiliScheme { pathSegments.first == 'mobile' || pathSegments.first == 'h5' ? pathSegments.getOrNull(1) : pathSegments.first; - debugPrint('area: $area'); + if (kDebugMode) debugPrint('area: $area'); switch (area) { case 'note' || 'note-app': String? id = uri.queryParameters['cvid']; @@ -649,7 +650,7 @@ class PiliScheme { return false; case 'bangumi': // www.bilibili.com/bangumi/play/ep{eid}?start_progress={offset}&thumb_up_dm_id={dmid} - debugPrint('番剧'); + if (kDebugMode) debugPrint('番剧'); String? id = RegExp(r'(ss|ep)\d+').firstMatch(path)?.group(0); if (id != null) { bool isSeason = id.startsWith('ss'); @@ -664,7 +665,7 @@ class PiliScheme { launchURL(); return false; case 'video': - debugPrint('投稿'); + if (kDebugMode) debugPrint('投稿'); final Map map = IdUtils.matchAvorBv(input: path); if (map.isNotEmpty) { final queryParameters = uri.queryParameters; @@ -695,7 +696,7 @@ class PiliScheme { launchURL(); return false; } - debugPrint('专栏'); + if (kDebugMode) debugPrint('专栏'); String? id = RegExp(r'cv(\d+)', caseSensitive: false).firstMatch(path)?.group(1); if (id != null) { @@ -712,7 +713,7 @@ class PiliScheme { launchURL(); return false; case 'space': - debugPrint('个人空间'); + if (kDebugMode) debugPrint('个人空间'); String? mid = uriDigitRegExp.firstMatch(path)?.group(1); if (mid != null) { PageUtils.toDupNamed( diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index 0071e3a6..b998e75c 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -25,6 +25,7 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/url_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:floating/floating.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -34,7 +35,7 @@ import 'package:url_launcher/url_launcher.dart'; class PageUtils { static Future pmShare(BuildContext context, {required Map content}) async { - // debugPrint(content.toString()); + // if (kDebugMode) debugPrint(content.toString()); int? selectedIndex; List userList = []; @@ -372,7 +373,7 @@ class PageUtils { return; } - // debugPrint('pushDynDetail: ${item.type}'); + // if (kDebugMode) debugPrint('pushDynDetail: ${item.type}'); switch (item.type) { case 'DYNAMIC_TYPE_AV': @@ -431,7 +432,7 @@ class PageUtils { break; case 'DYNAMIC_TYPE_PGC': - debugPrint('番剧'); + if (kDebugMode) debugPrint('番剧'); SmartDialog.showToast('暂未支持的类型,请联系开发者'); break; @@ -473,7 +474,7 @@ class PageUtils { /// 番剧查看 case 'DYNAMIC_TYPE_PGC_UNION': - debugPrint('DYNAMIC_TYPE_PGC_UNION 番剧'); + if (kDebugMode) debugPrint('DYNAMIC_TYPE_PGC_UNION 番剧'); DynamicArchiveModel pgc = item.modules.moduleDynamic!.major!.pgc!; if (pgc.epid != null) { viewBangumi(epId: pgc.epid); @@ -769,7 +770,7 @@ class PageUtils { } catch (e) { SmartDialog.dismiss(); SmartDialog.showToast('$e'); - debugPrint('$e'); + if (kDebugMode) debugPrint('$e'); } } diff --git a/lib/utils/reply_utils.dart b/lib/utils/reply_utils.dart index a02138a5..b5676899 100644 --- a/lib/utils/reply_utils.dart +++ b/lib/utils/reply_utils.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/storage.dart' show Accounts; import 'package:PiliPlus/utils/utils.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -89,7 +90,7 @@ class ReplyUtils { }, ); } catch (e) { - debugPrint('biliSendCommAntifraud: $e'); + if (kDebugMode) debugPrint('biliSendCommAntifraud: $e'); } return; } diff --git a/lib/utils/request_utils.dart b/lib/utils/request_utils.dart index e254905f..ac49dd9c 100644 --- a/lib/utils/request_utils.dart +++ b/lib/utils/request_utils.dart @@ -24,6 +24,7 @@ import 'package:PiliPlus/pages/group_panel/view.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/storage.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -255,7 +256,7 @@ class RequestUtils { // return jsonDecode( // Uri.decodeComponent(scriptElement?.text ?? ''))['access_id']; // } catch (e) { - // debugPrint('failed to get wwebid: $e'); + // if (kDebugMode) debugPrint('failed to get wwebid: $e'); // return null; // } // } @@ -279,7 +280,7 @@ class RequestUtils { } } } catch (e) { - debugPrint('create dyn $e'); + if (kDebugMode) debugPrint('create dyn $e'); } } @@ -301,7 +302,7 @@ class RequestUtils { ); } } catch (e) { - debugPrint('check dyn error: $e'); + if (kDebugMode) debugPrint('check dyn error: $e'); } } } @@ -473,7 +474,7 @@ class RequestUtils { SmartDialog.showToast('关闭验证'); }, onResult: (Map message) async { - debugPrint("Captcha result: $message"); + if (kDebugMode) debugPrint("Captcha result: $message"); String code = message["code"]; if (code == "1") { // 发送 message["result"] 中的数据向 B 端的业务服务接口进行查询 @@ -502,7 +503,7 @@ class RequestUtils { } } else { // 终端用户完成验证失败,自动重试 If the verification fails, it will be automatically retried. - debugPrint("Captcha result code : $code"); + if (kDebugMode) debugPrint("Captcha result code : $code"); } }, onError: (Map message) { diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 56290c33..5837146e 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -36,6 +36,7 @@ import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/login_utils.dart'; import 'package:PiliPlus/utils/set_int_adapter.dart'; import 'package:cookie_jar/cookie_jar.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:hive_flutter/hive_flutter.dart'; @@ -909,7 +910,7 @@ class Accounts { final String tempPath = "${tempDir.path}/.plpl/"; final Directory dir = Directory(tempPath); if (dir.existsSync()) { - debugPrint('migrating...'); + if (kDebugMode) debugPrint('migrating...'); final cookieJar = PersistCookieJar(ignoreExpires: true, storage: FileStorage(tempPath)); await cookieJar.forceInit(); @@ -931,7 +932,7 @@ class Accounts { localAccessKey['refresh'], AccountType.values.toSet()) .onChange() ]); - debugPrint('migrated successfully'); + if (kDebugMode) debugPrint('migrated successfully'); } } diff --git a/lib/utils/theme_utils.dart b/lib/utils/theme_utils.dart index 0390eece..3ada49f7 100644 --- a/lib/utils/theme_utils.dart +++ b/lib/utils/theme_utils.dart @@ -62,13 +62,6 @@ class ThemeUtils { contentTextStyle: TextStyle(color: colorScheme.secondary), elevation: 20, ), - pageTransitionsTheme: const PageTransitionsTheme( - builders: { - TargetPlatform.android: ZoomPageTransitionsBuilder( - allowEnterRouteSnapshotting: false, - ), - }, - ), popupMenuTheme: PopupMenuThemeData( surfaceTintColor: isDynamic ? colorScheme.onSurfaceVariant : null, ), diff --git a/lib/utils/url_utils.dart b/lib/utils/url_utils.dart index 4f896c14..8282b9d0 100644 --- a/lib/utils/url_utils.dart +++ b/lib/utils/url_utils.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:dio/dio.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -27,7 +28,7 @@ class UrlUtils { ), ); redirectUrl = response.headers['location']?.firstOrNull; - debugPrint('redirectUrl: $redirectUrl'); + if (kDebugMode) debugPrint('redirectUrl: $redirectUrl'); if (redirectUrl != null && !redirectUrl.startsWith('http')) { redirectUrl = Uri.parse(url).resolve(redirectUrl).toString(); } diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 42d8d30a..151b9e68 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -16,6 +16,7 @@ import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:crypto/crypto.dart'; import 'package:device_info_plus/device_info_plus.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -207,7 +208,7 @@ class Utils { number *= getUnit(match.group(2)); return number.toInt(); } catch (e) { - debugPrint('parse failed: "$numberStr" : $e'); + if (kDebugMode) debugPrint('parse failed: "$numberStr" : $e'); return 0; } } @@ -497,7 +498,7 @@ class Utils { // 检查更新 static Future checkUpdate([bool isAuto = true]) async { - if (BuildConfig.isDebug) return; + if (kDebugMode) return; SmartDialog.dismiss(); try { final res = await Request().get(Api.latestApp, uaType: 'mob'); @@ -581,7 +582,7 @@ class Utils { ); } } catch (e) { - debugPrint('failed to check update: $e'); + if (kDebugMode) debugPrint('failed to check update: $e'); } } diff --git a/lib/utils/video_utils.dart b/lib/utils/video_utils.dart index d93fa385..d30d2cd3 100644 --- a/lib/utils/video_utils.dart +++ b/lib/utils/video_utils.dart @@ -37,10 +37,10 @@ class VideoUtils { if (videoUrl.isNullOrEmpty) { return ""; } - // debugPrint("videoUrl:$videoUrl"); + // if (kDebugMode) debugPrint("videoUrl:$videoUrl"); String defaultCDNHost = CDNService.fromCode(defaultCDNService).host; - // debugPrint("defaultCDNHost:$defaultCDNHost"); + // if (kDebugMode) debugPrint("defaultCDNHost:$defaultCDNHost"); if (videoUrl!.contains("szbdyd.com")) { final uri = Uri.parse(videoUrl); String hostname = uri.queryParameters['xy_usource'] ?? defaultCDNHost; @@ -53,7 +53,7 @@ class VideoUtils { // videoUrl = // 'https://proxy-tf-all-ws.bilivideo.com/?url=${Uri.encodeComponent(videoUrl)}'; } - // debugPrint("videoUrl:$videoUrl"); + // if (kDebugMode) debugPrint("videoUrl:$videoUrl"); // /// 先获取backupUrl 一般是upgcxcode地址 播放更稳定 // if (item is VideoItem) {