From 2f6f6da6c0fa3fa4d1e3a5a7967d6521784c284e Mon Sep 17 00:00:00 2001 From: My-Responsitories <107370289+My-Responsitories@users.noreply.github.com> Date: Mon, 27 Oct 2025 21:32:39 +0800 Subject: [PATCH] opt: tap (#1719) * opt: tap * revert: remove suspendedDm --- .../immediate_tap_gesture_recognizer.dart | 8 ++++---- lib/plugin/pl_player/view.dart | 20 +++++++------------ 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/lib/common/widgets/gesture/immediate_tap_gesture_recognizer.dart b/lib/common/widgets/gesture/immediate_tap_gesture_recognizer.dart index 79f6c05f..545c49a1 100644 --- a/lib/common/widgets/gesture/immediate_tap_gesture_recognizer.dart +++ b/lib/common/widgets/gesture/immediate_tap_gesture_recognizer.dart @@ -8,7 +8,7 @@ class ImmediateTapGestureRecognizer extends OneSequenceGestureRecognizer { super.allowedButtonsFilter, this.onTapDown, required this.onTapUp, - required this.onTapCancel, + this.onTapCancel, this.onTap, }); @@ -16,7 +16,7 @@ class ImmediateTapGestureRecognizer extends OneSequenceGestureRecognizer { final GestureTapUpCallback onTapUp; - final GestureTapCancelCallback onTapCancel; + final GestureTapCancelCallback? onTapCancel; final GestureTapCallback? onTap; @@ -100,8 +100,8 @@ class ImmediateTapGestureRecognizer extends OneSequenceGestureRecognizer { } void _cancelGesture(String reason) { - if (_sentTapDown) { - invokeCallback('onTapCancel: $reason', onTapCancel); + if (_sentTapDown && onTapCancel != null) { + invokeCallback('onTapCancel: $reason', onTapCancel!); } _reset(); } diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 0ac33854..3b9186e4 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -152,13 +152,7 @@ class _PLVideoPlayerState extends State WakelockPlus.enable(); } wakeLock = player?.stream.playing.listen( - (value) { - if (value) { - WakelockPlus.enable(); - } else { - WakelockPlus.disable(); - } - }, + (v) => WakelockPlus.toggle(enable: v), ); _controlsListener = plPlayerController.showControls.listen((bool val) { @@ -234,11 +228,13 @@ class _PLVideoPlayerState extends State _danmakuListener = plPlayerController.enableShowDanmaku.listen((value) { if (!value) _removeDmAction(); - (_tapGestureRecognizer as ImmediateTapGestureRecognizer).onTapDown = - value ? _onTapDown : null; + _tapGestureRecognizer.onTapDown = value ? _onTapDown : null; }); } else { - _tapGestureRecognizer = TapGestureRecognizer()..onTapUp = _onTapUp; + _tapGestureRecognizer = ImmediateTapGestureRecognizer( + onTapUp: _onTapUp, + allowedButtonsFilter: (buttons) => buttons == kPrimaryButton, + ); } _doubleTapGestureRecognizer = DoubleTapGestureRecognizer() @@ -1160,12 +1156,10 @@ class _PLVideoPlayerState extends State final item = ctr.findSingleDanmaku(pos); if (item == null) { _suspendedDm?.suspend = false; - _suspendedDm = null; _dmOffset.value = null; } else if (item != _suspendedDm) { _suspendedDm?.suspend = false; if (item.content.extra == null) { - _suspendedDm = null; _dmOffset.value = null; return; } @@ -1197,7 +1191,7 @@ class _PLVideoPlayerState extends State ..onLongPressEnd = ((_) => plPlayerController.setLongPressStatus(false)) ..onLongPressCancel = (() => plPlayerController.setLongPressStatus(false)); - late final OneSequenceGestureRecognizer _tapGestureRecognizer; + late final ImmediateTapGestureRecognizer _tapGestureRecognizer; late final DoubleTapGestureRecognizer _doubleTapGestureRecognizer; StreamSubscription? _danmakuListener;