mobile: Keep normalized position between 0 and 1

This commit is contained in:
Elias Projahn 2020-05-13 21:03:47 +02:00
parent 93a5a06b55
commit c2b39677b5

View file

@ -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].