fix: handle TogglePlayPauseEvent for macOS media key

close #679
This commit is contained in:
edde746
2026-03-11 18:28:07 +01:00
parent 4681d60850
commit d4e9364d29
+19 -20
View File
@@ -749,37 +749,36 @@ class VideoPlayerScreenState extends State<VideoPlayerScreen> with WidgetsBindin
// Set up media control event handling
_mediaControlSubscription = _mediaControlsManager!.controlEvents.listen((event) {
final currentPlayer = player;
if (currentPlayer == null && event is! NextTrackEvent && event is! PreviousTrackEvent) return;
if (event is PlayEvent) {
appLogger.d('Media control: Play event received');
if (player != null) {
player!.play();
_wasPlayingBeforeInactive = false;
appLogger.d('Cleared _wasPlayingBeforeInactive due to manual play via media controls');
_updateMediaControlsPlaybackState();
}
currentPlayer!.play();
_wasPlayingBeforeInactive = false;
_updateMediaControlsPlaybackState();
} else if (event is PauseEvent) {
appLogger.d('Media control: Pause event received');
if (player != null) {
player!.pause();
appLogger.d('Video paused via media controls');
_updateMediaControlsPlaybackState();
currentPlayer!.pause();
_updateMediaControlsPlaybackState();
} else if (event is TogglePlayPauseEvent) {
appLogger.d('Media control: Toggle play/pause event received');
if (currentPlayer!.state.playing) {
currentPlayer.pause();
} else {
currentPlayer.play();
_wasPlayingBeforeInactive = false;
}
_updateMediaControlsPlaybackState();
} else if (event is SeekEvent) {
appLogger.d('Media control: Seek event received to ${event.position}');
final currentPlayer = player;
if (currentPlayer != null) {
unawaited(currentPlayer.seek(clampSeekPosition(currentPlayer, event.position)));
}
unawaited(currentPlayer!.seek(clampSeekPosition(currentPlayer, event.position)));
} else if (event is NextTrackEvent) {
appLogger.d('Media control: Next track event received');
if (_nextEpisode != null) {
_playNext();
}
if (_nextEpisode != null) _playNext();
} else if (event is PreviousTrackEvent) {
appLogger.d('Media control: Previous track event received');
if (_previousEpisode != null) {
_playPrevious();
}
if (_previousEpisode != null) _playPrevious();
}
});