feat: show snackbar on playback speed change

close #824
This commit is contained in:
edde746
2026-04-09 03:48:14 +02:00
parent 1cb793d781
commit 5b493a70b0
2 changed files with 16 additions and 0 deletions
@@ -8,6 +8,7 @@ import '../i18n/strings.g.dart';
import '../mpv/mpv.dart';
import 'settings_service.dart';
import '../utils/player_utils.dart';
import '../utils/snackbar_helper.dart';
class KeyboardShortcutsService {
static KeyboardShortcutsService? _instance;
@@ -293,15 +294,18 @@ class KeyboardShortcutsService {
final newRateUp = (player.state.rate + 0.25).clamp(0.25, 3.0);
player.setRate(newRateUp);
_settingsService.setDefaultPlaybackSpeed(newRateUp);
showGlobalSnackBar(_formatSpeed(newRateUp));
break;
case 'speed_decrease':
final newRateDown = (player.state.rate - 0.25).clamp(0.25, 3.0);
player.setRate(newRateDown);
_settingsService.setDefaultPlaybackSpeed(newRateDown);
showGlobalSnackBar(_formatSpeed(newRateDown));
break;
case 'speed_reset':
player.setRate(1.0);
_settingsService.setDefaultPlaybackSpeed(1.0);
showGlobalSnackBar(_formatSpeed(1.0));
break;
case 'sub_seek_next':
player.command(['sub-seek', '1']);
@@ -387,4 +391,9 @@ class KeyboardShortcutsService {
return aModifiers.length == bModifiers.length && aModifiers.every((modifier) => bModifiers.contains(modifier));
}
String _formatSpeed(double speed) {
final s = speed.toStringAsFixed(2).replaceFirst(RegExp(r'\.?0+$'), '');
return '${s}x';
}
}
+7
View File
@@ -61,6 +61,13 @@ void showGlobalErrorSnackBar(String message) {
);
}
/// Shows an info snackbar using the root ScaffoldMessenger (survives navigation).
void showGlobalSnackBar(String message, {Duration duration = const Duration(seconds: 2)}) {
rootScaffoldMessengerKey.currentState
?..removeCurrentSnackBar()
..showSnackBar(SnackBar(content: Text(message), duration: duration));
}
/// Shows a success snackbar with a message
///
/// [context] The build context