fix: headerControl bvid丢失
This commit is contained in:
@ -128,6 +128,7 @@ class VideoDetailController extends GetxController
|
||||
controller: plPlayerController,
|
||||
videoDetailCtr: this,
|
||||
floating: floating,
|
||||
bvid: bvid,
|
||||
);
|
||||
// CDN优化
|
||||
enableCDN = setting.get(SettingBoxKey.enableCDN, defaultValue: true);
|
||||
|
@ -22,8 +22,9 @@ import '../related/index.dart';
|
||||
import 'widgets/group_panel.dart';
|
||||
|
||||
class VideoIntroController extends GetxController {
|
||||
VideoIntroController({required this.bvid});
|
||||
// 视频bvid
|
||||
String bvid = Get.parameters['bvid']!;
|
||||
String bvid;
|
||||
|
||||
// 是否预渲染 骨架屏
|
||||
bool preRender = false;
|
||||
|
@ -24,7 +24,10 @@ import 'widgets/page.dart';
|
||||
import 'widgets/season.dart';
|
||||
|
||||
class VideoIntroPanel extends StatefulWidget {
|
||||
const VideoIntroPanel({super.key});
|
||||
final String bvid;
|
||||
final String? cid;
|
||||
|
||||
const VideoIntroPanel({super.key, required this.bvid, this.cid});
|
||||
|
||||
@override
|
||||
State<VideoIntroPanel> createState() => _VideoIntroPanelState();
|
||||
@ -47,7 +50,8 @@ class _VideoIntroPanelState extends State<VideoIntroPanel>
|
||||
|
||||
/// fix 全屏时参数丢失
|
||||
heroTag = Get.arguments['heroTag'];
|
||||
videoIntroController = Get.put(VideoIntroController(), tag: heroTag);
|
||||
videoIntroController =
|
||||
Get.put(VideoIntroController(bvid: widget.bvid), tag: heroTag);
|
||||
_futureBuilderFuture = videoIntroController.queryVideoIntro();
|
||||
videoIntroController.videoDetail.listen((value) {
|
||||
videoDetail = value;
|
||||
@ -77,6 +81,7 @@ class _VideoIntroPanelState extends State<VideoIntroPanel>
|
||||
loadingStatus: false,
|
||||
videoDetail: videoIntroController.videoDetail.value,
|
||||
heroTag: heroTag,
|
||||
bvid: widget.bvid,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
@ -95,6 +100,7 @@ class _VideoIntroPanelState extends State<VideoIntroPanel>
|
||||
loadingStatus: true,
|
||||
videoDetail: videoDetail,
|
||||
heroTag: heroTag,
|
||||
bvid: widget.bvid,
|
||||
);
|
||||
}
|
||||
},
|
||||
@ -106,10 +112,15 @@ class VideoInfo extends StatefulWidget {
|
||||
final bool loadingStatus;
|
||||
final VideoDetailData? videoDetail;
|
||||
final String? heroTag;
|
||||
final String bvid;
|
||||
|
||||
const VideoInfo(
|
||||
{Key? key, this.loadingStatus = false, this.videoDetail, this.heroTag})
|
||||
: super(key: key);
|
||||
const VideoInfo({
|
||||
Key? key,
|
||||
this.loadingStatus = false,
|
||||
this.videoDetail,
|
||||
this.heroTag,
|
||||
required this.bvid,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<VideoInfo> createState() => _VideoInfoState();
|
||||
@ -149,7 +160,8 @@ class _VideoInfoState extends State<VideoInfo> with TickerProviderStateMixin {
|
||||
void initState() {
|
||||
super.initState();
|
||||
heroTag = widget.heroTag!;
|
||||
videoIntroController = Get.put(VideoIntroController(), tag: heroTag);
|
||||
videoIntroController =
|
||||
Get.put(VideoIntroController(bvid: widget.bvid), tag: heroTag);
|
||||
videoDetailCtr = Get.find<VideoDetailController>(tag: heroTag);
|
||||
videoItem = videoIntroController.videoItem!;
|
||||
sheetHeight = localCache.get('sheetHeight');
|
||||
|
@ -23,7 +23,6 @@ import 'package:pilipala/plugin/pl_player/models/play_repeat.dart';
|
||||
import 'package:pilipala/services/service_locator.dart';
|
||||
import 'package:pilipala/utils/storage.dart';
|
||||
|
||||
import 'package:pilipala/plugin/pl_player/utils/fullscreen.dart';
|
||||
import '../../../services/shutdown_timer_service.dart';
|
||||
import 'widgets/header_control.dart';
|
||||
|
||||
@ -68,7 +67,9 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
||||
super.initState();
|
||||
heroTag = Get.arguments['heroTag'];
|
||||
videoDetailController = Get.put(VideoDetailController(), tag: heroTag);
|
||||
videoIntroController = Get.put(VideoIntroController(), tag: heroTag);
|
||||
videoIntroController = Get.put(
|
||||
VideoIntroController(bvid: Get.parameters['bvid']!),
|
||||
tag: heroTag);
|
||||
videoIntroController.videoDetail.listen((value) {
|
||||
videoPlayerServiceHandler.onVideoDetailChange(
|
||||
value, videoDetailController.cid.value);
|
||||
@ -227,6 +228,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
||||
plPlayerController!.removeStatusLister(playerListener);
|
||||
plPlayerController!.pause();
|
||||
}
|
||||
print('🐶🐶');
|
||||
setState(() => isShowing = false);
|
||||
super.didPushNext();
|
||||
}
|
||||
@ -550,7 +552,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
||||
slivers: <Widget>[
|
||||
if (videoDetailController.videoType ==
|
||||
SearchType.video) ...[
|
||||
const VideoIntroPanel(),
|
||||
VideoIntroPanel(
|
||||
bvid: videoDetailController.bvid),
|
||||
] else if (videoDetailController.videoType ==
|
||||
SearchType.media_bangumi) ...[
|
||||
Obx(() => BangumiIntroPanel(
|
||||
@ -577,7 +580,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
||||
.withOpacity(0.06),
|
||||
),
|
||||
),
|
||||
RelatedVideoPanel(),
|
||||
const RelatedVideoPanel(),
|
||||
],
|
||||
);
|
||||
},
|
||||
@ -627,6 +630,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
||||
headerControl: HeaderControl(
|
||||
controller: plPlayerController,
|
||||
videoDetailCtr: videoDetailController,
|
||||
bvid: videoDetailController.bvid,
|
||||
),
|
||||
danmuWidget: Obx(
|
||||
() => PlDanmaku(
|
||||
|
@ -27,11 +27,13 @@ class HeaderControl extends StatefulWidget implements PreferredSizeWidget {
|
||||
this.controller,
|
||||
this.videoDetailCtr,
|
||||
this.floating,
|
||||
this.bvid,
|
||||
super.key,
|
||||
});
|
||||
final PlPlayerController? controller;
|
||||
final VideoDetailController? videoDetailCtr;
|
||||
final Floating? floating;
|
||||
final String? bvid;
|
||||
|
||||
@override
|
||||
State<HeaderControl> createState() => _HeaderControlState();
|
||||
@ -62,7 +64,8 @@ class _HeaderControlState extends State<HeaderControl> {
|
||||
speedsList = widget.controller!.speedsList;
|
||||
fullScreenStatusListener();
|
||||
heroTag = Get.arguments['heroTag'];
|
||||
videoIntroController = Get.put(VideoIntroController(), tag: heroTag);
|
||||
videoIntroController =
|
||||
Get.put(VideoIntroController(bvid: widget.bvid!), tag: heroTag);
|
||||
}
|
||||
|
||||
void fullScreenStatusListener() {
|
||||
|
Reference in New Issue
Block a user