mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
fix: season with part
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -520,10 +520,13 @@ class _VideoInfoState extends State<VideoInfo> 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,
|
||||
),
|
||||
)
|
||||
],
|
||||
|
||||
@@ -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<Part> 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<PagesPanel> {
|
||||
late List<Part> episodes;
|
||||
late int cid;
|
||||
late int currentIndex;
|
||||
// final String heroTag = Get.arguments['heroTag'];
|
||||
@@ -40,14 +39,13 @@ class _PagesPanelState extends State<PagesPanel> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
cid = widget.cid!;
|
||||
episodes = widget.pages;
|
||||
cid = widget.cid;
|
||||
heroTag = widget.heroTag;
|
||||
_videoDetailController = Get.find<VideoDetailController>(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<PagesPanel> {
|
||||
onPressed: () => widget.showEpisodes(
|
||||
null,
|
||||
null,
|
||||
episodes,
|
||||
widget.pages,
|
||||
widget.bvid,
|
||||
IdUtils.bv2av(widget.bvid),
|
||||
cid,
|
||||
|
||||
@@ -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<Part>? pages;
|
||||
|
||||
@override
|
||||
State<SeasonPanel> createState() => _SeasonPanelState();
|
||||
@@ -49,6 +51,8 @@ class _SeasonPanelState extends State<SeasonPanel> {
|
||||
// .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);
|
||||
|
||||
@@ -347,7 +347,12 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
String bvid = widget.controller.bvid;
|
||||
List episodes = [];
|
||||
late Function changeFucCall;
|
||||
if (isSeason) {
|
||||
if (isPage) {
|
||||
final List<Part> pages =
|
||||
videoIntroController!.videoDetail.value.pages!;
|
||||
episodes = pages;
|
||||
changeFucCall = videoIntroController!.changeSeasonOrbangu;
|
||||
} else if (isSeason) {
|
||||
final List<SectionItem> sections =
|
||||
videoIntroController!.videoDetail.value.ugcSeason!.sections!;
|
||||
for (int i = 0; i < sections.length; i++) {
|
||||
@@ -361,11 +366,6 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
}
|
||||
}
|
||||
changeFucCall = videoIntroController!.changeSeasonOrbangu;
|
||||
} else if (isPage) {
|
||||
final List<Part> 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<PLVideoPlayer>
|
||||
if (widget.showEpisodes != null) {
|
||||
widget.showEpisodes!(
|
||||
index,
|
||||
videoIntroController?.videoDetail.value.ugcSeason,
|
||||
isPage
|
||||
? null
|
||||
: videoIntroController?.videoDetail.value.ugcSeason,
|
||||
episodes,
|
||||
bvid,
|
||||
IdUtils.bv2av(bvid),
|
||||
|
||||
Reference in New Issue
Block a user