diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 591cc66b4..7b94c16bc 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -1447,6 +1447,7 @@ class VideoDetailController extends GetxController Future _queryPlayInfo() async { _vttSubtitles.clear(); + vttSubtitlesIndex.value = 0; if (plPlayerController.showViewPoints) { viewPointList.clear(); } diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index a81c3f6b9..b3b7d0bea 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -413,6 +413,10 @@ class _VideoDetailPageVState extends State return; } + if (plPlayerController?.isCloseAll == true) { + return; + } + WidgetsBinding.instance.addObserver(this); plPlayerController?.isLive = false; diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index bce6da4eb..d06c2a584 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -1254,22 +1254,14 @@ class PlPlayerController { /// 暂停播放 Future pause({bool notify = true, bool isInterrupt = false}) async { - await _videoPlayerController?.pause(); - playerStatus.status.value = PlayerStatus.paused; + if (videoPlayerController?.state.playing ?? false) { + await _videoPlayerController?.playOrPause(); + playerStatus.status.value = PlayerStatus.paused; - // 主动暂停时让出音频焦点 - if (!isInterrupt) { - audioSessionHandler?.setActive(false); - } - } - - /// 更改播放状态 - Future togglePlay() async { - feedBack(); - if (playerStatus.playing) { - pause(); - } else { - play(); + // 主动暂停时让出音频焦点 + if (!isInterrupt) { + audioSessionHandler?.setActive(false); + } } } @@ -1708,6 +1700,7 @@ class PlPlayerController { } return; } + setPlayCallBack(null); dmState.clear(); _playerCount = 0; _clearPreview(); @@ -1731,6 +1724,7 @@ class PlPlayerController { await removeListeners(); _videoPlayerController?.dispose(); _videoPlayerController = null; + _videoController = null; _instance = null; videoPlayerServiceHandler?.clear(); }