mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
fix: episode panel
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -13,6 +13,7 @@ import 'package:PiliPlus/http/video.dart';
|
||||
import 'package:PiliPlus/models/bangumi/info.dart' as bangumi;
|
||||
import 'package:PiliPlus/models/video_detail_res.dart' as video;
|
||||
import 'package:PiliPlus/pages/common/common_slide_page.dart';
|
||||
import 'package:PiliPlus/pages/video/detail/controller.dart';
|
||||
import 'package:PiliPlus/pages/video/detail/introduction/controller.dart';
|
||||
import 'package:PiliPlus/pages/video/detail/introduction/widgets/page.dart';
|
||||
import 'package:PiliPlus/utils/id_utils.dart';
|
||||
@@ -385,6 +386,13 @@ class _EpisodePanelState extends CommonSlidePageState<EpisodePanel>
|
||||
: widget.aid,
|
||||
cover,
|
||||
);
|
||||
if (widget.type == EpisodeType.season) {
|
||||
try {
|
||||
Get.find<VideoDetailController>(
|
||||
tag: widget.videoIntroController.heroTag)
|
||||
.seasonCid = episode.cid;
|
||||
} catch (_) {}
|
||||
}
|
||||
},
|
||||
onLongPress: () {
|
||||
if (cover?.isNotEmpty == true) {
|
||||
|
||||
@@ -70,7 +70,6 @@ class VideoDetailData {
|
||||
String? epId;
|
||||
List<Staff>? staff;
|
||||
late bool isPageReversed;
|
||||
late bool isSeasonReversed;
|
||||
|
||||
VideoDetailData({
|
||||
this.bvid,
|
||||
@@ -110,7 +109,6 @@ class VideoDetailData {
|
||||
this.epId,
|
||||
this.staff,
|
||||
this.isPageReversed = false,
|
||||
this.isSeasonReversed = false,
|
||||
});
|
||||
|
||||
VideoDetailData.fromJson(Map<String, dynamic> json) {
|
||||
@@ -163,7 +161,6 @@ class VideoDetailData {
|
||||
epId = resolveEpId(json['redirect_url']);
|
||||
}
|
||||
isPageReversed = false;
|
||||
isSeasonReversed = false;
|
||||
}
|
||||
|
||||
String resolveEpId(url) {
|
||||
@@ -670,6 +667,7 @@ class SectionItem {
|
||||
this.title,
|
||||
this.type,
|
||||
this.episodes,
|
||||
this.isReversed = false,
|
||||
});
|
||||
|
||||
int? epCount;
|
||||
@@ -678,6 +676,7 @@ class SectionItem {
|
||||
String? title;
|
||||
int? type;
|
||||
List<EpisodeItem>? episodes;
|
||||
late bool isReversed;
|
||||
|
||||
SectionItem.fromJson(Map<String, dynamic> json) {
|
||||
epCount = json['ep_count'];
|
||||
@@ -688,6 +687,7 @@ class SectionItem {
|
||||
episodes = (json['episodes'] as List?)
|
||||
?.map<EpisodeItem>((e) => EpisodeItem.fromJson(e))
|
||||
.toList();
|
||||
isReversed = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,6 @@ class VideoIntroController extends GetxController
|
||||
if (videoDetail.value.ugcSeason?.id == data.ugcSeason?.id) {
|
||||
// keep reversed season
|
||||
data.ugcSeason = videoDetail.value.ugcSeason;
|
||||
data.isSeasonReversed = videoDetail.value.isSeasonReversed;
|
||||
}
|
||||
if (videoDetail.value.cid == data.cid) {
|
||||
// keep reversed pages
|
||||
|
||||
@@ -45,10 +45,10 @@ class _PagesPanelState extends State<PagesPanel> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
if (widget.list == null) {
|
||||
cid = widget.videoIntroController.lastPlayCid.value;
|
||||
_videoDetailController =
|
||||
Get.find<VideoDetailController>(tag: widget.heroTag);
|
||||
if (widget.list == null) {
|
||||
cid = widget.videoIntroController.lastPlayCid.value;
|
||||
pageIndex = pages.indexWhere((Part e) => e.cid == cid);
|
||||
_listener = _videoDetailController.cid.listen((int cid) {
|
||||
this.cid = cid;
|
||||
@@ -158,6 +158,12 @@ class _PagesPanelState extends State<PagesPanel> {
|
||||
IdUtils.bv2av(widget.bvid),
|
||||
widget.cover,
|
||||
);
|
||||
if (widget.list != null &&
|
||||
widget.videoIntroController.videoDetail.value
|
||||
.ugcSeason !=
|
||||
null) {
|
||||
_videoDetailController.seasonCid = pages.first.cid;
|
||||
}
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
|
||||
@@ -2149,8 +2149,12 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
bvid: videoDetailController.bvid,
|
||||
aid: IdUtils.bv2av(videoDetailController.bvid),
|
||||
cid: videoDetailController.seasonCid ?? 0,
|
||||
isReversed:
|
||||
videoIntroController.videoDetail.value.isSeasonReversed,
|
||||
isReversed: videoIntroController
|
||||
.videoDetail
|
||||
.value
|
||||
.ugcSeason!
|
||||
.sections![videoDetailController.seasonIndex.value]
|
||||
.isReversed,
|
||||
changeFucCall: videoDetailController.videoType ==
|
||||
SearchType.media_bangumi
|
||||
? bangumiIntroController.changeSeasonOrbangu
|
||||
@@ -2279,7 +2283,12 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
videoDetailController.videoType == SearchType.media_bangumi
|
||||
? null
|
||||
: season != null
|
||||
? videoIntroController.videoDetail.value.isSeasonReversed
|
||||
? videoIntroController
|
||||
.videoDetail
|
||||
.value
|
||||
.ugcSeason!
|
||||
.sections![videoDetailController.seasonIndex.value]
|
||||
.isReversed
|
||||
: videoIntroController.videoDetail.value.isPageReversed,
|
||||
isSupportReverse:
|
||||
videoDetailController.videoType != SearchType.media_bangumi,
|
||||
@@ -2335,8 +2344,10 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
|
||||
if (isSeason) {
|
||||
// reverse season
|
||||
videoIntroController.videoDetail.value.isSeasonReversed =
|
||||
!videoIntroController.videoDetail.value.isSeasonReversed;
|
||||
videoIntroController.videoDetail.value.ugcSeason!
|
||||
.sections![videoDetailController.seasonIndex.value].isReversed =
|
||||
!videoIntroController.videoDetail.value.ugcSeason!
|
||||
.sections![videoDetailController.seasonIndex.value].isReversed;
|
||||
videoIntroController.videoDetail.value.ugcSeason!
|
||||
.sections![videoDetailController.seasonIndex.value].episodes =
|
||||
videoIntroController
|
||||
@@ -2358,6 +2369,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
.sections![videoDetailController.seasonIndex.value].episodes!.first;
|
||||
if (episode.cid != videoDetailController.cid.value) {
|
||||
changeEpisode(episode);
|
||||
videoDetailController.seasonCid = episode.cid;
|
||||
} else {
|
||||
videoDetailController.seasonIndex.refresh();
|
||||
videoDetailController.cid.refresh();
|
||||
|
||||
Reference in New Issue
Block a user