Resolves #492 Infinity media player progress error
This commit is contained in:
parent
ca1eec6602
commit
90504047b4
@ -84,12 +84,11 @@ class MediaPlayerEntity extends Entity {
|
||||
}
|
||||
|
||||
bool canCalculateActualPosition() {
|
||||
return positionLastUpdated != null && durationSeconds != null && positionSeconds != null && durationSeconds >= 0;
|
||||
return positionLastUpdated != null && durationSeconds != null && positionSeconds != null && durationSeconds > 0;
|
||||
}
|
||||
|
||||
double getActualPosition() {
|
||||
double result = 0;
|
||||
if (canCalculateActualPosition()) {
|
||||
Duration durationD;
|
||||
Duration positionD;
|
||||
durationD = Duration(seconds: durationSeconds);
|
||||
@ -101,8 +100,6 @@ class MediaPlayerEntity extends Entity {
|
||||
.difference(positionLastUpdated)
|
||||
.inSeconds;
|
||||
result = ((result + differenceInSeconds) <= durationD.inSeconds) ? (result + differenceInSeconds) : durationD.inSeconds.toDouble();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
@ -22,13 +22,13 @@ class _MediaPlayerProgressBarState extends State<MediaPlayerProgressBar> {
|
||||
Widget build(BuildContext context) {
|
||||
final EntityModel entityModel = EntityModel.of(context);
|
||||
final MediaPlayerEntity entity = entityModel.entityWrapper.entity;
|
||||
double progress;
|
||||
double progress = 0;
|
||||
int currentPosition;
|
||||
if (entity.canCalculateActualPosition()) {
|
||||
currentPosition = entity.getActualPosition().toInt();
|
||||
if (currentPosition > 0) {
|
||||
progress = (currentPosition <= entity.durationSeconds) ? currentPosition / entity.durationSeconds : 100;
|
||||
} else {
|
||||
progress = 0;
|
||||
}
|
||||
}
|
||||
return LinearProgressIndicator(
|
||||
value: progress,
|
||||
|
@ -460,7 +460,11 @@ class _MediaPlayerControlsState extends State<MediaPlayerControls> {
|
||||
}
|
||||
|
||||
void _duplicateTo(entity) {
|
||||
if (entity.canCalculateActualPosition()) {
|
||||
HomeAssistant().savedPlayerPosition = entity.getActualPosition().toInt();
|
||||
} else {
|
||||
HomeAssistant().savedPlayerPosition = 0;
|
||||
}
|
||||
Navigator.of(context).pushNamed("/play-media", arguments: {
|
||||
"url": entity.attributes["media_content_id"],
|
||||
"type": entity.attributes["media_content_type"]
|
||||
|
Reference in New Issue
Block a user