Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-02-25 18:02:36 +08:00
parent e707764f84
commit 2bdab71138
14 changed files with 81 additions and 64 deletions

View File

@@ -152,40 +152,66 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
// Timer? _accessibilityDebounce;
// double _lastAnnouncedValue = -1;
StreamSubscription? _listener;
StreamSubscription? _controlsListener;
bool _pauseDueToPauseUponEnteringBackgroundMode = false;
StreamSubscription? _brightnessListener;
int? tmpSubtitlePaddingB;
StreamSubscription? _controlsListener;
void _controlListener(bool val) {
final visible = val && !plPlayerController.controlsLock.value;
if ((widget.headerControl.key as GlobalKey<TimeBatteryMixin>).currentState
case final state?) {
if (state.mounted) {
state.getBatteryLevelIfNeeded();
state.provider
?..startIfNeeded()
..muted = !visible;
if (visible) {
state.startClock();
} else {
state.stopClock();
}
}
}
if (visible) {
animationController.forward();
} else {
animationController.reverse();
}
if (widget.videoDetailController case final controller?) {
if (controller.vttSubtitlesIndex.value != 0) {
if (visible) {
const int minPadding = 70;
if (plPlayerController.subtitlePaddingB < minPadding) {
tmpSubtitlePaddingB = plPlayerController.subtitlePaddingB;
plPlayerController
..subtitlePaddingB = minPadding
..subtitleConfig.value = plPlayerController.getSubConfig;
}
} else {
if (tmpSubtitlePaddingB != null) {
plPlayerController
..subtitlePaddingB = tmpSubtitlePaddingB!
..subtitleConfig.value = plPlayerController.getSubConfig;
tmpSubtitlePaddingB = null;
}
}
}
}
}
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
_controlsListener = plPlayerController.showControls.listen((bool val) {
final visible = val && !plPlayerController.controlsLock.value;
if ((widget.headerControl.key as GlobalKey<TimeBatteryMixin>).currentState
case final state?) {
if (state.mounted) {
state.getBatteryLevelIfNeeded();
state.provider
?..startIfNeeded()
..muted = !visible;
if (visible) {
state.startClock();
} else {
state.stopClock();
}
}
}
if (visible) {
animationController.forward();
} else {
animationController.reverse();
}
});
_controlsListener = plPlayerController.showControls.listen(
_controlListener,
);
transformationController = TransformationController();
animationController = AnimationController(
vsync: this,
@@ -229,7 +255,8 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
}
}
_listener = Platform.isIOS || plPlayerController.setSystemBrightness
_brightnessListener =
Platform.isIOS || plPlayerController.setSystemBrightness
? ScreenBrightnessPlatform
.instance
.onSystemScreenBrightnessChanged
@@ -313,7 +340,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
_tapGestureRecognizer.dispose();
_longPressRecognizer?.dispose();
_doubleTapGestureRecognizer.dispose();
_listener?.cancel();
_brightnessListener?.cancel();
_controlsListener?.cancel();
animationController.dispose();
if (PlatformUtils.isMobile) {