From c2b39677b5ca058a6ccea39a550b44a673f898cf Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Wed, 13 May 2020 21:03:47 +0200 Subject: [PATCH] mobile: Keep normalized position between 0 and 1 --- mobile/lib/playback.dart | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/mobile/lib/playback.dart b/mobile/lib/playback.dart index 8de2c49..d1d310f 100644 --- a/mobile/lib/playback.dart +++ b/mobile/lib/playback.dart @@ -39,14 +39,25 @@ class Playback extends MusicusPlayback { /// Requires [duration] to be up to date void _updatePosition(int positionMs) { position.add(Duration(milliseconds: positionMs)); - normalizedPosition.add(positionMs / duration.value.inMilliseconds); + _setNormalizedPosition(positionMs / duration.value.inMilliseconds); } /// Update [position], [duration] and [normalizedPosition]. void _updateDuration(int positionMs, int durationMs) { position.add(Duration(milliseconds: positionMs)); duration.add(Duration(milliseconds: durationMs)); - normalizedPosition.add(positionMs / durationMs); + _setNormalizedPosition(positionMs / durationMs); + } + + /// Update [normalizedPosition] ensuring its value is between 0.0 and 1.0. + void _setNormalizedPosition(double value) { + if (value <= 0.0) { + normalizedPosition.add(0.0); + } else if (value >= 1.0) { + normalizedPosition.add(1.0); + } else { + normalizedPosition.add(value); + } } /// Update [currentIndex] and [currentTrack].