diff --git a/lib/pages/tracklist/playing_progress.dart b/lib/pages/tracklist/playing_progress.dart index fba5cc3..45156f1 100644 --- a/lib/pages/tracklist/playing_progress.dart +++ b/lib/pages/tracklist/playing_progress.dart @@ -49,6 +49,7 @@ class _PlayingProgressIndicatorState extends State wit late int bitrate; late Duration duration; late AnimationController controller; + String? previousPlaybackState; @override void initState() { @@ -131,20 +132,33 @@ class _PlayingProgressIndicatorState extends State wit Expanded( child: Slider( value: calculateValue(), + onChangeStart: (double value) async { + try { + previousPlaybackState = await mopidyService.getPlaybackState(); + } catch (e) { + Globals.logger.e(e); + } + }, onChanged: (double value) { - if (widget.playbackState != PlaybackState.stopped) { + if (previousPlaybackState != PlaybackState.stopped) { controller.value = value; } }, onChangeEnd: (double value) async { try { - var pos = (duration.inMilliseconds * value).toInt(); - bool success = await mopidyService.seek(pos); - if (success) { - setState(() { - controller.value = value; - timePosition = pos; - }); + if (previousPlaybackState != PlaybackState.stopped) { + var pos = (duration.inMilliseconds * value).toInt(); + bool success = await mopidyService.seek(pos); + if (success) { + setState(() { + controller.value = value; + timePosition = pos; + }); + } + // needs restart because 'seek' stops player. + if (previousPlaybackState == PlaybackState.playing) { + await mopidyService.playback(PlaybackAction.resume, null); + } } } catch (e) { Globals.logger.e(e); diff --git a/lib/pages/tracklist/tracklist_page.dart b/lib/pages/tracklist/tracklist_page.dart index 5ae1f90..5f23b6b 100644 --- a/lib/pages/tracklist/tracklist_page.dart +++ b/lib/pages/tracklist/tracklist_page.dart @@ -202,6 +202,7 @@ class _TrackListState extends State { updatePlayback(); updateSplitMode(); + /* SystemChannels.lifecycle.setMessageHandler((msg) { // When the app was resumed, update // tracklist state. @@ -212,6 +213,7 @@ class _TrackListState extends State { } return Future.value(null); }); + */ } @override