From 41f251ad50e9ba59a99a96c08fb67b82ae0246b3 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Wed, 26 Feb 2025 11:39:56 +0800 Subject: [PATCH] fix: dyn Signed-off-by: bggRGjQaUbCoE --- lib/http/member.dart | 16 ------- .../introduction/widgets/intro_detail.dart | 11 +++-- .../bangumi/pgc_index/pgc_index_page.dart | 1 - lib/pages/dynamics/widgets/forward_panel.dart | 12 ++++- lib/pages/dynamics/widgets/video_panel.dart | 45 ++++++++++++++----- lib/pages/video/detail/introduction/view.dart | 4 +- lib/plugin/pl_player/controller.dart | 3 +- lib/utils/utils.dart | 6 +-- 8 files changed, 59 insertions(+), 39 deletions(-) diff --git a/lib/http/member.dart b/lib/http/member.dart index 8d24e402..7901635d 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -88,15 +88,11 @@ class MemberHttp { Constants.appSec, ); data['sign'] = sign; - int? _mid = GStorage.userInfo.get('userInfoCache')?.mid; dynamic res = await Request().get( Api.spaceArticle, queryParameters: data, options: Options( headers: { - 'env': 'prod', - 'app-key': 'android_hd', - 'x-bili-mid': _mid, 'bili-http-engine': 'cronet', 'user-agent': Constants.userAgent, }, @@ -133,15 +129,11 @@ class MemberHttp { Constants.appSec, ); data['sign'] = sign; - int? _mid = GStorage.userInfo.get('userInfoCache')?.mid; dynamic res = await Request().get( Api.spaceFav, queryParameters: data, options: Options( headers: { - 'env': 'prod', - 'app-key': 'android_hd', - 'x-bili-mid': _mid, 'bili-http-engine': 'cronet', 'user-agent': Constants.userAgent, }, @@ -214,7 +206,6 @@ class MemberHttp { Constants.appSec, ); data['sign'] = sign; - int? _mid = GStorage.userInfo.get('userInfoCache')?.mid; dynamic res = await Request().get( type == ContributeType.video ? Api.spaceArchive @@ -228,9 +219,6 @@ class MemberHttp { queryParameters: data, options: Options( headers: { - 'env': 'prod', - 'app-key': 'android_hd', - 'x-bili-mid': _mid, 'bili-http-engine': 'cronet', 'user-agent': Constants.userAgent, }, @@ -267,15 +255,11 @@ class MemberHttp { Constants.appSec, ); data['sign'] = sign; - int? _mid = GStorage.userInfo.get('userInfoCache')?.mid; dynamic res = await Request().get( Api.space, queryParameters: data, options: Options( headers: { - 'env': 'prod', - 'app-key': 'android_hd', - 'x-bili-mid': _mid, 'bili-http-engine': 'cronet', 'user-agent': Constants.userAgent, }, diff --git a/lib/pages/bangumi/introduction/widgets/intro_detail.dart b/lib/pages/bangumi/introduction/widgets/intro_detail.dart index 60f09802..baa2f393 100644 --- a/lib/pages/bangumi/introduction/widgets/intro_detail.dart +++ b/lib/pages/bangumi/introduction/widgets/intro_detail.dart @@ -26,10 +26,13 @@ class IntroDetail extends StatelessWidget { padding: const EdgeInsets.only(left: 14, right: 14), child: Column( children: [ - Container( - height: 35, - padding: const EdgeInsets.only(bottom: 2), - child: Center( + GestureDetector( + onTap: Get.back, + behavior: HitTestBehavior.opaque, + child: Container( + height: 35, + alignment: Alignment.center, + padding: const EdgeInsets.only(bottom: 2), child: Container( width: 32, height: 3, diff --git a/lib/pages/bangumi/pgc_index/pgc_index_page.dart b/lib/pages/bangumi/pgc_index/pgc_index_page.dart index d2068a47..a43b4f0b 100644 --- a/lib/pages/bangumi/pgc_index/pgc_index_page.dart +++ b/lib/pages/bangumi/pgc_index/pgc_index_page.dart @@ -183,7 +183,6 @@ class _PgcIndexPageState extends State _ctr.isExpand.value = _ctr.isExpand.value.not; }, child: Container( - width: double.infinity, alignment: Alignment.center, child: Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/pages/dynamics/widgets/forward_panel.dart b/lib/pages/dynamics/widgets/forward_panel.dart index 69a37dc6..ff4898ec 100644 --- a/lib/pages/dynamics/widgets/forward_panel.dart +++ b/lib/pages/dynamics/widgets/forward_panel.dart @@ -204,8 +204,18 @@ Widget forWard(item, context, source, callback, {floor = 1}) { // 转发 case 'DYNAMIC_TYPE_FORWARD': return InkWell( - onTap: () => Utils.pushDynDetail(item.orig, floor + 1), + onTap: () { + if (item.orig.modules.moduleDynamic.major?.type == + 'MAJOR_TYPE_NONE') { + return; + } + Utils.pushDynDetail(item.orig, floor + 1); + }, onLongPress: () { + if (item.orig.modules.moduleDynamic.major?.type == + 'MAJOR_TYPE_NONE') { + return; + } if (item.orig.type == 'DYNAMIC_TYPE_AV') { imageSaveDialog( context: context, diff --git a/lib/pages/dynamics/widgets/video_panel.dart b/lib/pages/dynamics/widgets/video_panel.dart index e40ab9a4..f3af5f36 100644 --- a/lib/pages/dynamics/widgets/video_panel.dart +++ b/lib/pages/dynamics/widgets/video_panel.dart @@ -9,6 +9,27 @@ import 'package:PiliPlus/utils/utils.dart'; import 'rich_node_panel.dart'; Widget videoSeasonWidget(item, context, type, {floor = 1}) { + if (item.modules.moduleDynamic.major?.type == 'MAJOR_TYPE_NONE') { + return item.modules.moduleDynamic.major?.none?.tips != null + ? Row( + children: [ + Icon( + Icons.error, + size: 18, + color: Theme.of(context).colorScheme.outline, + ), + const SizedBox(width: 5), + Text( + '${item.modules.moduleDynamic.major.none.tips}', + style: TextStyle( + color: Theme.of(context).colorScheme.outline, + ), + ), + ], + ) + : const SizedBox.shrink(); + } + TextStyle authorStyle = TextStyle(color: Theme.of(context).colorScheme.primary); // type archive ugcSeason @@ -27,6 +48,9 @@ Widget videoSeasonWidget(item, context, type, {floor = 1}) { InlineSpan? richNodes = richNode(item, context); Widget buildCover() { + if (content?.cover == null) { + return const SizedBox.shrink(); + } return LayoutBuilder(builder: (context, box) { double width = box.maxWidth; return Stack( @@ -166,17 +190,18 @@ Widget videoSeasonWidget(item, context, type, {floor = 1}) { child: buildCover(), ), const SizedBox(height: 6), - Padding( - padding: floor == 1 - ? const EdgeInsets.only(left: 12, right: 12) - : EdgeInsets.zero, - child: Text( - content.title, - maxLines: 1, - style: const TextStyle(fontWeight: FontWeight.bold), - overflow: TextOverflow.ellipsis, + if (content?.title != null) + Padding( + padding: floor == 1 + ? const EdgeInsets.only(left: 12, right: 12) + : EdgeInsets.zero, + child: Text( + content.title, + maxLines: 1, + style: const TextStyle(fontWeight: FontWeight.bold), + overflow: TextOverflow.ellipsis, + ), ), - ), ], ); } diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index 4b52d59c..0bbbc82d 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -559,7 +559,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { controller: videoIntroController.expandableCtr, collapsed: GestureDetector( onLongPress: () { - feedBack(); + Feedback.forLongPress(context); Utils.copyText( '${videoDetail.title ?? videoItem['title'] ?? ''}'); }, @@ -567,7 +567,7 @@ class _VideoInfoState extends State with TickerProviderStateMixin { ), expanded: GestureDetector( onLongPress: () { - feedBack(); + Feedback.forLongPress(context); Utils.copyText( '${videoDetail.title ?? videoItem['title'] ?? ''}'); }, diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 74c5a6a6..b4d59f40 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -777,7 +777,6 @@ class PlPlayerController { } Future refreshPlayer() async { - Duration currentPos = _position.value; if (_videoPlayerController == null) { SmartDialog.showToast('视频播放器为空,请重新进入本页面'); return false; @@ -800,7 +799,7 @@ class PlPlayerController { Media( dataSource.videoSource!, httpHeaders: dataSource.httpHeaders, - start: currentPos, + start: _position.value, ), play: true, ); diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 78d1aaa6..47c47992 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -366,7 +366,7 @@ class Utils { switch (item.type) { case 'DYNAMIC_TYPE_AV': - if (item.modules.moduleDynamic.major.archive.type == 2) { + if (item.modules.moduleDynamic.major.archive?.type == 2) { if (item.modules.moduleDynamic.major.archive.jumpUrl .startsWith('//')) { item.modules.moduleDynamic.major.archive.jumpUrl = @@ -380,9 +380,9 @@ class Utils { } } - String bvid = item.modules.moduleDynamic.major.archive.bvid; - String cover = item.modules.moduleDynamic.major.archive.cover; try { + String bvid = item.modules.moduleDynamic.major.archive.bvid; + String cover = item.modules.moduleDynamic.major.archive.cover; int cid = await SearchHttp.ab2c(bvid: bvid); Utils.toDupNamed( '/video?bvid=$bvid&cid=$cid',