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