mod: season change error
This commit is contained in:
@ -63,6 +63,7 @@ class VideoIntroController extends GetxController {
|
|||||||
PersistentBottomSheetController? bottomSheetController;
|
PersistentBottomSheetController? bottomSheetController;
|
||||||
late bool enableRelatedVideo;
|
late bool enableRelatedVideo;
|
||||||
UgcSeason? ugcSeason;
|
UgcSeason? ugcSeason;
|
||||||
|
RxList<Part> pages = <Part>[].obs;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
@ -84,18 +85,20 @@ class VideoIntroController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取视频简介&分p
|
// 获取视频简介&分p
|
||||||
Future queryVideoIntro() async {
|
Future queryVideoIntro({cover}) async {
|
||||||
var result = await VideoHttp.videoIntro(bvid: bvid);
|
var result = await VideoHttp.videoIntro(bvid: bvid);
|
||||||
if (result['status']) {
|
if (result['status']) {
|
||||||
videoDetail.value = result['data']!;
|
videoDetail.value = result['data']!;
|
||||||
ugcSeason = result['data']!.ugcSeason;
|
ugcSeason = result['data']!.ugcSeason;
|
||||||
if (videoDetail.value.pages!.isNotEmpty && lastPlayCid.value == 0) {
|
pages.value = result['data']!.pages!;
|
||||||
lastPlayCid.value = videoDetail.value.pages!.first.cid!;
|
lastPlayCid.value = videoDetail.value.cid!;
|
||||||
|
if (pages.isNotEmpty) {
|
||||||
|
lastPlayCid.value = pages.first.cid!;
|
||||||
}
|
}
|
||||||
final VideoDetailController videoDetailCtr =
|
final VideoDetailController videoDetailCtr =
|
||||||
Get.find<VideoDetailController>(tag: heroTag);
|
Get.find<VideoDetailController>(tag: heroTag);
|
||||||
videoDetailCtr.tabs.value = ['简介', '评论 ${result['data']?.stat?.reply}'];
|
videoDetailCtr.tabs.value = ['简介', '评论 ${result['data']?.stat?.reply}'];
|
||||||
videoDetailCtr.cover.value = result['data'].pic ?? '';
|
videoDetailCtr.cover.value = cover ?? result['data'].pic ?? '';
|
||||||
// 获取到粉丝数再返回
|
// 获取到粉丝数再返回
|
||||||
await queryUserStat();
|
await queryUserStat();
|
||||||
}
|
}
|
||||||
@ -470,8 +473,7 @@ class VideoIntroController extends GetxController {
|
|||||||
videoReplyCtr.queryReplyList(type: 'init');
|
videoReplyCtr.queryReplyList(type: 'init');
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
this.bvid = bvid;
|
this.bvid = bvid;
|
||||||
lastPlayCid.value = cid;
|
await queryVideoIntro(cover: cover);
|
||||||
await queryVideoIntro();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void startTimer() {
|
void startTimer() {
|
||||||
@ -521,9 +523,8 @@ class VideoIntroController extends GetxController {
|
|||||||
final List<EpisodeItem> episodesList = sections[i].episodes!;
|
final List<EpisodeItem> episodesList = sections[i].episodes!;
|
||||||
episodes.addAll(episodesList);
|
episodes.addAll(episodesList);
|
||||||
}
|
}
|
||||||
} else if (videoDetail.value.pages != null) {
|
} else if (pages.isNotEmpty) {
|
||||||
isPages = true;
|
isPages = true;
|
||||||
final List<Part> pages = videoDetail.value.pages!;
|
|
||||||
episodes.addAll(pages);
|
episodes.addAll(pages);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -621,10 +622,9 @@ class VideoIntroController extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (videoDetail.value.pages != null &&
|
if (pages.length > 1) {
|
||||||
videoDetail.value.pages!.length > 1) {
|
|
||||||
dataType = VideoEpidoesType.videoPart;
|
dataType = VideoEpidoesType.videoPart;
|
||||||
episodes = videoDetail.value.pages!;
|
episodes = pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawerUtils.showRightDialog(
|
DrawerUtils.showRightDialog(
|
||||||
|
|||||||
@ -404,27 +404,18 @@ class _VideoInfoState extends State<VideoInfo> with TickerProviderStateMixin {
|
|||||||
Obx(
|
Obx(
|
||||||
() => SeasonPanel(
|
() => SeasonPanel(
|
||||||
ugcSeason: widget.videoDetail!.ugcSeason!,
|
ugcSeason: widget.videoDetail!.ugcSeason!,
|
||||||
cid: videoIntroController.lastPlayCid.value != 0
|
cid: videoIntroController.lastPlayCid.value,
|
||||||
? videoIntroController.lastPlayCid.value
|
|
||||||
: widget.videoDetail!.pages!.first.cid,
|
|
||||||
sheetHeight: videoDetailCtr.sheetHeight.value,
|
sheetHeight: videoDetailCtr.sheetHeight.value,
|
||||||
changeFuc: (bvid, cid, aid, cover) =>
|
changeFuc: videoIntroController.changeSeasonOrbangu,
|
||||||
videoIntroController.changeSeasonOrbangu(
|
|
||||||
bvid,
|
|
||||||
cid,
|
|
||||||
aid,
|
|
||||||
cover,
|
|
||||||
),
|
|
||||||
videoIntroCtr: videoIntroController,
|
videoIntroCtr: videoIntroController,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
// 合集 videoEpisode
|
// 合集 videoEpisode
|
||||||
if (widget.videoDetail!.pages != null &&
|
if (videoIntroController.pages.length > 1) ...[
|
||||||
widget.videoDetail!.pages!.length > 1) ...[
|
|
||||||
Obx(
|
Obx(
|
||||||
() => PagesPanel(
|
() => PagesPanel(
|
||||||
pages: widget.videoDetail!.pages!,
|
pages: videoIntroController.pages,
|
||||||
cid: videoIntroController.lastPlayCid.value,
|
cid: videoIntroController.lastPlayCid.value,
|
||||||
sheetHeight: videoDetailCtr.sheetHeight.value,
|
sheetHeight: videoDetailCtr.sheetHeight.value,
|
||||||
changeFuc: (cid, cover) =>
|
changeFuc: (cid, cover) =>
|
||||||
|
|||||||
@ -3,7 +3,6 @@ import 'dart:math';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:pilipala/models/video_detail_res.dart';
|
import 'package:pilipala/models/video_detail_res.dart';
|
||||||
import 'package:pilipala/pages/video/detail/index.dart';
|
|
||||||
import 'package:pilipala/pages/video/detail/introduction/index.dart';
|
import 'package:pilipala/pages/video/detail/introduction/index.dart';
|
||||||
import '../../../../../common/pages_bottom_sheet.dart';
|
import '../../../../../common/pages_bottom_sheet.dart';
|
||||||
import '../../../../../models/common/video_episode_type.dart';
|
import '../../../../../models/common/video_episode_type.dart';
|
||||||
@ -32,25 +31,26 @@ class _PagesPanelState extends State<PagesPanel> {
|
|||||||
late int cid;
|
late int cid;
|
||||||
late RxInt currentIndex = (-1).obs;
|
late RxInt currentIndex = (-1).obs;
|
||||||
final String heroTag = Get.arguments['heroTag'];
|
final String heroTag = Get.arguments['heroTag'];
|
||||||
late VideoDetailController _videoDetailController;
|
|
||||||
final ScrollController listViewScrollCtr = ScrollController();
|
final ScrollController listViewScrollCtr = ScrollController();
|
||||||
late PersistentBottomSheetController? _bottomSheetController;
|
PersistentBottomSheetController? _bottomSheetController;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
cid = widget.cid;
|
cid = widget.cid;
|
||||||
episodes = widget.pages;
|
episodes = widget.pages;
|
||||||
_videoDetailController = Get.find<VideoDetailController>(tag: heroTag);
|
updateCurrentIndexAndScroll();
|
||||||
currentIndex.value = episodes.indexWhere((Part e) => e.cid == cid);
|
widget.videoIntroCtr.lastPlayCid.listen((int p0) {
|
||||||
scrollToIndex();
|
|
||||||
_videoDetailController.cid.listen((int p0) {
|
|
||||||
cid = p0;
|
cid = p0;
|
||||||
currentIndex.value = episodes.indexWhere((Part e) => e.cid == cid);
|
updateCurrentIndexAndScroll();
|
||||||
scrollToIndex();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateCurrentIndexAndScroll() {
|
||||||
|
currentIndex.value = widget.pages.indexWhere((Part e) => e.cid == cid);
|
||||||
|
scrollToIndex();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
listViewScrollCtr.dispose();
|
listViewScrollCtr.dispose();
|
||||||
@ -60,7 +60,10 @@ class _PagesPanelState extends State<PagesPanel> {
|
|||||||
void changeFucCall(item, i) async {
|
void changeFucCall(item, i) async {
|
||||||
widget.changeFuc?.call(item.cid, item.cover);
|
widget.changeFuc?.call(item.cid, item.cover);
|
||||||
currentIndex.value = i;
|
currentIndex.value = i;
|
||||||
_bottomSheetController?.close();
|
cid = item.cid;
|
||||||
|
if (_bottomSheetController != null) {
|
||||||
|
_bottomSheetController?.close();
|
||||||
|
}
|
||||||
scrollToIndex();
|
scrollToIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +115,7 @@ class _PagesPanelState extends State<PagesPanel> {
|
|||||||
widget.videoIntroCtr.bottomSheetController =
|
widget.videoIntroCtr.bottomSheetController =
|
||||||
_bottomSheetController = EpisodeBottomSheet(
|
_bottomSheetController = EpisodeBottomSheet(
|
||||||
currentCid: cid,
|
currentCid: cid,
|
||||||
episodes: episodes,
|
episodes: widget.pages,
|
||||||
changeFucCall: changeFucCall,
|
changeFucCall: changeFucCall,
|
||||||
sheetHeight: widget.sheetHeight,
|
sheetHeight: widget.sheetHeight,
|
||||||
dataType: VideoEpidoesType.videoPart,
|
dataType: VideoEpidoesType.videoPart,
|
||||||
|
|||||||
Reference in New Issue
Block a user