fix(player): sync restored volume state
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(() {
|
||||
|
||||
Reference in New Issue
Block a user