From d6da2a8a476c65456426173364d492106aeeb586 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Fri, 1 Mar 2024 23:55:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20headerControl=20bvid=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/video/detail/controller.dart | 1 + .../video/detail/introduction/controller.dart | 3 ++- lib/pages/video/detail/introduction/view.dart | 24 ++++++++++++++----- lib/pages/video/detail/view.dart | 12 ++++++---- .../video/detail/widgets/header_control.dart | 5 +++- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index 7465c6f2..d590cea9 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -128,6 +128,7 @@ class VideoDetailController extends GetxController controller: plPlayerController, videoDetailCtr: this, floating: floating, + bvid: bvid, ); // CDN优化 enableCDN = setting.get(SettingBoxKey.enableCDN, defaultValue: true); diff --git a/lib/pages/video/detail/introduction/controller.dart b/lib/pages/video/detail/introduction/controller.dart index 26cbd2e0..c7f22b13 100644 --- a/lib/pages/video/detail/introduction/controller.dart +++ b/lib/pages/video/detail/introduction/controller.dart @@ -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; diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index 0a3ac934..bed37bb5 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -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 createState() => _VideoIntroPanelState(); @@ -47,7 +50,8 @@ class _VideoIntroPanelState extends State /// 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 loadingStatus: false, videoDetail: videoIntroController.videoDetail.value, heroTag: heroTag, + bvid: widget.bvid, ), ); } else { @@ -95,6 +100,7 @@ class _VideoIntroPanelState extends State 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 createState() => _VideoInfoState(); @@ -149,7 +160,8 @@ class _VideoInfoState extends State 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(tag: heroTag); videoItem = videoIntroController.videoItem!; sheetHeight = localCache.get('sheetHeight'); diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index febca105..b82d3e96 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -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 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 plPlayerController!.removeStatusLister(playerListener); plPlayerController!.pause(); } + print('🐶🐶'); setState(() => isShowing = false); super.didPushNext(); } @@ -550,7 +552,8 @@ class _VideoDetailPageState extends State slivers: [ 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 .withOpacity(0.06), ), ), - RelatedVideoPanel(), + const RelatedVideoPanel(), ], ); }, @@ -627,6 +630,7 @@ class _VideoDetailPageState extends State headerControl: HeaderControl( controller: plPlayerController, videoDetailCtr: videoDetailController, + bvid: videoDetailController.bvid, ), danmuWidget: Obx( () => PlDanmaku( diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index 596c567b..e2e4db8c 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -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 createState() => _HeaderControlState(); @@ -62,7 +64,8 @@ class _HeaderControlState extends State { 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() {