mirror of
https://github.com/johrpan/musicus_mobile.git
synced 2025-10-25 19:27:24 +02:00
common: Move playback helper methods to base class
This commit is contained in:
parent
4bdd1873c4
commit
23d233becc
2 changed files with 41 additions and 41 deletions
|
|
@ -45,7 +45,7 @@ abstract class MusicusPlayback {
|
|||
final normalizedPosition = BehaviorSubject.seeded(0.0);
|
||||
|
||||
/// Initialize the player.
|
||||
///
|
||||
///
|
||||
/// This will be called after the database was initialized.
|
||||
Future<void> setup();
|
||||
|
||||
|
|
@ -93,4 +93,38 @@ abstract class MusicusPlayback {
|
|||
duration.close();
|
||||
normalizedPosition.close();
|
||||
}
|
||||
}
|
||||
|
||||
/// Update [position] and [normalizedPosition].
|
||||
///
|
||||
/// Requires [duration] to be up to date
|
||||
void updatePosition(int positionMs) {
|
||||
position.add(Duration(milliseconds: positionMs));
|
||||
_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));
|
||||
_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].
|
||||
///
|
||||
/// Requires [playlist] to be up to date.
|
||||
void updateCurrentTrack(int index) {
|
||||
currentIndex.add(index);
|
||||
currentTrack.add(playlist.value[index]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,40 +34,6 @@ class Playback extends MusicusPlayback {
|
|||
}
|
||||
}
|
||||
|
||||
/// Update [position] and [normalizedPosition].
|
||||
///
|
||||
/// Requires [duration] to be up to date
|
||||
void _updatePosition(int positionMs) {
|
||||
position.add(Duration(milliseconds: positionMs));
|
||||
_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));
|
||||
_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].
|
||||
///
|
||||
/// Requires [playlist] to be up to date.
|
||||
void _updateCurrentTrack(int index) {
|
||||
currentIndex.add(index);
|
||||
currentTrack.add(playlist.value[index]);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> setup() async {
|
||||
if (_playbackServiceStateSubscription != null) {
|
||||
|
|
@ -93,14 +59,14 @@ class Playback extends MusicusPlayback {
|
|||
if (msg is _StatusMessage) {
|
||||
playing.add(msg.playing);
|
||||
} else if (msg is _PositionMessage) {
|
||||
_updatePosition(msg.positionMs);
|
||||
updatePosition(msg.positionMs);
|
||||
} else if (msg is _TrackMessage) {
|
||||
_updateCurrentTrack(msg.currentTrack);
|
||||
_updateDuration(msg.positionMs, msg.durationMs);
|
||||
updateCurrentTrack(msg.currentTrack);
|
||||
updateDuration(msg.positionMs, msg.durationMs);
|
||||
} else if (msg is _PlaylistMessage) {
|
||||
playlist.add(msg.playlist);
|
||||
_updateCurrentTrack(msg.currentTrack);
|
||||
_updateDuration(msg.positionMs, msg.durationMs);
|
||||
updateCurrentTrack(msg.currentTrack);
|
||||
updateDuration(msg.positionMs, msg.durationMs);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue