From 0aebadb005974e28c305e23a1c3754020a00c647 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sun, 28 Sep 2025 21:01:12 +0800 Subject: [PATCH] scroll to update volume Signed-off-by: bggRGjQaUbCoE --- lib/plugin/pl_player/view.dart | 44 +++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index b9b24ee4..9dac81bb 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -49,6 +49,7 @@ import 'package:dio/dio.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; @@ -1095,8 +1096,10 @@ class _PLVideoPlayerState extends State aspectRatio: videoFit.aspectRatio, dmWidget: widget.danmuWidget, transformationController: transformationController, - scaleEnabled: !plPlayerController.controlsLock.value, - enableShrinkVideoSize: plPlayerController.enableShrinkVideoSize, + scaleEnabled: + !Utils.isDesktop && !plPlayerController.controlsLock.value, + enableShrinkVideoSize: + !Utils.isDesktop && plPlayerController.enableShrinkVideoSize, onInteractionStart: _onInteractionStart, onInteractionUpdate: _onInteractionUpdate, onInteractionEnd: _onInteractionEnd, @@ -1750,21 +1753,28 @@ class _PLVideoPlayerState extends State ], ); if (!isMobile) { - return Obx( - () => MouseRegion( - cursor: !plPlayerController.showControls.value && isFullScreen - ? SystemMouseCursors.none - : MouseCursor.defer, - onEnter: (event) { - plPlayerController.controls = true; - }, - onHover: (event) { - plPlayerController.controls = true; - }, - onExit: (event) { - plPlayerController.controls = false; - }, - child: child, + return Listener( + onPointerSignal: (event) { + if (event is PointerScrollEvent) { + final offset = -event.scrollDelta.dy / 4000; + final volume = clampDouble( + plPlayerController.volume.value + offset, + 0.0, + 1.0, + ); + plPlayerController.setVolume(volume); + } + }, + child: Obx( + () => MouseRegion( + cursor: !plPlayerController.showControls.value && isFullScreen + ? SystemMouseCursors.none + : MouseCursor.defer, + onEnter: (_) => plPlayerController.controls = true, + onHover: (_) => plPlayerController.controls = true, + onExit: (_) => plPlayerController.controls = false, + child: child, + ), ), ); }