updatePlaybackState method
Updates the playback state and media position in the browser's media session.
Implementation
@override
Future<void> updatePlaybackState(PlaybackState state) async {
try {
final session = web.window.navigator.mediaSession;
switch (state.status) {
case PlaybackStatus.playing:
session.playbackState = 'playing';
break;
case PlaybackStatus.paused:
session.playbackState = 'paused';
break;
case PlaybackStatus.idle:
case PlaybackStatus.ended:
case PlaybackStatus.error:
case PlaybackStatus.buffering:
session.playbackState = 'none';
break;
}
// browsers usually require a valid duration to display the progress bar correctly.
final double durationSec = _currentDuration != null
? _currentDuration!.inMilliseconds / 1000.0
: 0.0;
session.setPositionState(web.MediaPositionState(
duration: durationSec,
playbackRate: state.speed,
position: state.position.inMilliseconds / 1000.0,
));
} catch (e) {
// setPositionState is not supported in all browsers yet.
}
}