From 04a0e399804bbff1ec8b8b1ffd16ec211c938a06 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Fri, 8 Nov 2024 08:53:32 +0800 Subject: [PATCH] fix: season with part Signed-off-by: bggRGjQaUbCoE --- lib/pages/video/detail/introduction/view.dart | 5 ++++- .../video/detail/introduction/widgets/page.dart | 14 ++++++-------- .../detail/introduction/widgets/season.dart | 4 ++++ lib/plugin/pl_player/view.dart | 16 +++++++++------- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index 78149384..a8e1d9d8 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -520,10 +520,13 @@ class _VideoInfoState extends State with TickerProviderStateMixin { heroTag: heroTag, ugcSeason: widget.videoDetail!.ugcSeason!, cid: videoIntroController.lastPlayCid.value != 0 - ? videoIntroController.lastPlayCid.value + ? (widget.videoDetail!.pages?.isNotEmpty == true + ? widget.videoDetail!.pages!.first.cid + : videoIntroController.lastPlayCid.value) : widget.videoDetail!.pages!.first.cid, changeFuc: videoIntroController.changeSeasonOrbangu, showEpisodes: widget.showEpisodes, + pages: widget.videoDetail!.pages, ), ) ], diff --git a/lib/pages/video/detail/introduction/widgets/page.dart b/lib/pages/video/detail/introduction/widgets/page.dart index 2615f9c7..2b1f8a37 100644 --- a/lib/pages/video/detail/introduction/widgets/page.dart +++ b/lib/pages/video/detail/introduction/widgets/page.dart @@ -11,14 +11,14 @@ class PagesPanel extends StatefulWidget { const PagesPanel({ super.key, required this.pages, - this.cid, + required this.cid, required this.bvid, required this.changeFuc, required this.heroTag, required this.showEpisodes, }); final List pages; - final int? cid; + final int cid; final String bvid; final Function changeFuc; final String heroTag; @@ -29,7 +29,6 @@ class PagesPanel extends StatefulWidget { } class _PagesPanelState extends State { - late List episodes; late int cid; late int currentIndex; // final String heroTag = Get.arguments['heroTag']; @@ -40,14 +39,13 @@ class _PagesPanelState extends State { @override void initState() { super.initState(); - cid = widget.cid!; - episodes = widget.pages; + cid = widget.cid; heroTag = widget.heroTag; _videoDetailController = Get.find(tag: heroTag); - currentIndex = episodes.indexWhere((Part e) => e.cid == cid); + currentIndex = widget.pages.indexWhere((Part e) => e.cid == cid); _videoDetailController.cid.listen((int p0) { cid = p0; - currentIndex = episodes.indexWhere((Part e) => e.cid == cid); + currentIndex = max(0, widget.pages.indexWhere((Part e) => e.cid == cid)); if (!mounted) return; const double itemWidth = 150; // 每个列表项的宽度 final double targetOffset = min( @@ -98,7 +96,7 @@ class _PagesPanelState extends State { onPressed: () => widget.showEpisodes( null, null, - episodes, + widget.pages, widget.bvid, IdUtils.bv2av(widget.bvid), cid, diff --git a/lib/pages/video/detail/introduction/widgets/season.dart b/lib/pages/video/detail/introduction/widgets/season.dart index ed16faff..24bb55fb 100644 --- a/lib/pages/video/detail/introduction/widgets/season.dart +++ b/lib/pages/video/detail/introduction/widgets/season.dart @@ -11,12 +11,14 @@ class SeasonPanel extends StatefulWidget { required this.changeFuc, required this.heroTag, required this.showEpisodes, + required this.pages, }); final UgcSeason ugcSeason; final int? cid; final Function changeFuc; final String heroTag; final Function showEpisodes; + final List? pages; @override State createState() => _SeasonPanelState(); @@ -49,6 +51,8 @@ class _SeasonPanelState extends State { // .episodes!; currentIndex = episodes!.indexWhere((EpisodeItem e) => e.cid == cid); _videoDetailController.cid.listen((int p0) { + bool isPart = widget.pages?.indexWhere((item) => item.cid == p0) != -1; + if (isPart) return; cid = p0; _findEpisode(); currentIndex = episodes!.indexWhere((EpisodeItem e) => e.cid == cid); diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index baa6b96e..857f1d52 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -347,7 +347,12 @@ class _PLVideoPlayerState extends State String bvid = widget.controller.bvid; List episodes = []; late Function changeFucCall; - if (isSeason) { + if (isPage) { + final List pages = + videoIntroController!.videoDetail.value.pages!; + episodes = pages; + changeFucCall = videoIntroController!.changeSeasonOrbangu; + } else if (isSeason) { final List sections = videoIntroController!.videoDetail.value.ugcSeason!.sections!; for (int i = 0; i < sections.length; i++) { @@ -361,11 +366,6 @@ class _PLVideoPlayerState extends State } } changeFucCall = videoIntroController!.changeSeasonOrbangu; - } else if (isPage) { - final List pages = - videoIntroController!.videoDetail.value.pages!; - episodes = pages; - changeFucCall = videoIntroController!.changeSeasonOrbangu; } else if (isBangumi) { episodes = (bangumiIntroController!.loadingState.value as Success) .response @@ -375,7 +375,9 @@ class _PLVideoPlayerState extends State if (widget.showEpisodes != null) { widget.showEpisodes!( index, - videoIntroController?.videoDetail.value.ugcSeason, + isPage + ? null + : videoIntroController?.videoDetail.value.ugcSeason, episodes, bvid, IdUtils.bv2av(bvid),