From e4a85f30c4d31c90f9b0ed7b0259f8658e62aa95 Mon Sep 17 00:00:00 2001 From: orz12 Date: Mon, 22 Jan 2024 12:03:17 +0800 Subject: [PATCH] =?UTF-8?q?opt:=20=E5=88=87=E6=8D=A2=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=97=B6=E9=94=80=E6=AF=81=E6=92=AD=E6=94=BE=E5=99=A8=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E6=8F=90=E5=8D=87=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/video/detail/view.dart | 78 ++++++++++++++++---------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index 59fa39b2..3d3c1c30 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -61,6 +61,7 @@ class _VideoDetailPageState extends State final Floating floating = Floating(); // 生命周期监听 late final AppLifecycleListener _lifecycleListener; + bool isShowing = true; @override void initState() { @@ -216,15 +217,15 @@ class _VideoDetailPageState extends State videoIntroController.isPaused = true; plPlayerController!.removeStatusLister(playerListener); plPlayerController!.pause(); - plPlayerController!.danmakuController?.pause(); - plPlayerController!.danmakuController?.clear(); } + setState(() => isShowing = false); super.didPushNext(); } @override // 返回当前页面时 void didPopNext() async { + setState(() => isShowing = true); videoDetailController.isFirstTime = false; final bool autoplay = autoPlayEnable; videoDetailController.playerInit(autoplay: autoplay); @@ -354,44 +355,45 @@ class _VideoDetailPageState extends State boxConstraints.maxHeight; return Stack( children: [ - FutureBuilder( - future: _futureBuilderFuture, - builder: (BuildContext context, - AsyncSnapshot snapshot) { - if (snapshot.hasData && - snapshot.data['status']) { - return Obx( - () => !videoDetailController - .autoPlay.value - ? const SizedBox() - : PLVideoPlayer( - controller: - plPlayerController!, - headerControl: - videoDetailController - .headerControl, - danmuWidget: Obx( - () => PlDanmaku( - key: Key( - videoDetailController - .danmakuCid - .value - .toString()), - cid: - videoDetailController - .danmakuCid - .value, - playerController: - plPlayerController!, + if (isShowing) + FutureBuilder( + future: _futureBuilderFuture, + builder: (BuildContext context, + AsyncSnapshot snapshot) { + if (snapshot.hasData && + snapshot.data['status']) { + return Obx( + () => !videoDetailController + .autoPlay.value + ? nil + : PLVideoPlayer( + controller: + plPlayerController!, + headerControl: + videoDetailController + .headerControl, + danmuWidget: Obx( + () => PlDanmaku( + key: Key( + videoDetailController + .danmakuCid + .value + .toString()), + cid: + videoDetailController + .danmakuCid + .value, + playerController: + plPlayerController!, + ), ), ), - ), - ); - } else { - return const SizedBox(); - } - }, - ), + ); + } else { + return const SizedBox(); + } + }, + ), /// 关闭自动播放时 手动播放 if (!videoDetailController