From e3d561bffd76e4a32d7342f2a2210993dfcf811d Mon Sep 17 00:00:00 2001 From: guozhigq Date: Thu, 24 Aug 2023 14:22:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BF=AB=E9=80=9F=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E9=A6=96=E9=A1=B5&=E9=94=80=E6=AF=81=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/video/detail/view.dart | 1 - .../video/detail/widgets/header_control.dart | 8 ++- lib/plugin/pl_player/controller.dart | 55 ++++++++++--------- 3 files changed, 34 insertions(+), 30 deletions(-) diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index 5ece20a8..0d488115 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -97,7 +97,6 @@ class _VideoDetailPageState extends State @override void dispose() { - plPlayerController!.pause(); plPlayerController!.dispose(); super.dispose(); } diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index 58281b69..460f5412 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -483,10 +483,12 @@ class _HeaderControlState extends State { size: 15, color: Colors.white, ), - fuc: () { + fuc: () async { // 销毁播放器实例 - widget.controller!.dispose(type: 'all'); - Get.offAll(const MainApp()); + await widget.controller!.dispose(type: 'all'); + if (mounted) { + Navigator.popUntil(context, (route) => route.isFirst); + } }, ), const Spacer(), diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index a72e0df2..33bd7015 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -760,36 +760,39 @@ class PlPlayerController { Future dispose({String type = 'single'}) async { // 每次减1,最后销毁 - if (type == 'single') { + if (type == 'single' && playerCount.value > 1) { _playerCount.value -= 1; _heartDuration = 0; - if (playerCount.value > 0) { - return; - } + pause(); + return; } + _playerCount.value = 0; + try { + _timer?.cancel(); + _timerForVolume?.cancel(); + _timerForGettingVolume?.cancel(); + timerForTrackingMouse?.cancel(); + _timerForSeek?.cancel(); + videoFitChangedTimer?.cancel(); + // _position.close(); + _playerEventSubs?.cancel(); + // _sliderPosition.close(); + // _sliderTempPosition.close(); + // _isSliderMoving.close(); + // _duration.close(); + // _buffered.close(); + // _showControls.close(); + // _controlsLock.close(); - _timer?.cancel(); - _timerForVolume?.cancel(); - _timerForGettingVolume?.cancel(); - timerForTrackingMouse?.cancel(); - _timerForSeek?.cancel(); - videoFitChangedTimer?.cancel(); - _position.close(); - _playerEventSubs?.cancel(); - _sliderPosition.close(); - _sliderTempPosition.close(); - _isSliderMoving.close(); - _duration.close(); - _buffered.close(); - _showControls.close(); - _controlsLock.close(); + // playerStatus.status.close(); + // dataStatus.status.close(); - playerStatus.status.close(); - dataStatus.status.close(); - - removeListeners(); - await _videoPlayerController?.dispose(); - _videoPlayerController = null; - _instance = null; + removeListeners(); + await _videoPlayerController?.dispose(); + _videoPlayerController = null; + _instance = null; + } catch (err) { + print(err); + } } }