fix(player): sync restored volume state

This commit is contained in:
edde746
2026-05-09 11:10:49 +02:00
parent ec2b94e367
commit bb66ab6526
4 changed files with 11 additions and 4 deletions
@@ -159,6 +159,7 @@ class PlayerAndroid extends PlayerBase {
@override
Future<void> setVolume(double volume) async {
await invoke('setVolume', {'volume': volume});
if (!disposed) setVolumeState(volume);
}
@override
+8 -3
View File
@@ -190,9 +190,7 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player {
case 'volume':
if (value is num) {
final volume = value.toDouble();
_state = _state.copyWith(volume: volume);
volumeController.add(volume);
setVolumeState(value.toDouble());
}
break;
@@ -477,6 +475,13 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player {
tracksController.add(empty);
}
@protected
void setVolumeState(double volume) {
if (_state.volume == volume) return;
_state = _state.copyWith(volume: volume);
volumeController.add(volume);
}
@protected
void setSeekable(bool seekable) {
if (_state.seekable == seekable) return;
+1
View File
@@ -187,6 +187,7 @@ class PlayerNative extends PlayerBase {
@override
Future<void> setVolume(double volume) async {
await setProperty('volume', volume.toString());
if (!disposed) setVolumeState(volume);
}
@override
+1 -1
View File
@@ -719,7 +719,7 @@ class VideoPlayerScreenState extends State<VideoPlayerScreen> with WidgetsBindin
await player!.setProperty('volume-max', maxVolume.toString());
final savedVolume = settingsService.read(SettingsService.volume).clamp(0.0, maxVolume.toDouble());
unawaited(player!.setVolume(savedVolume));
await player!.setVolume(savedVolume);
if (mounted) {
setState(() {