diff --git a/lib/entities/media_player/media_player_entity.class.dart b/lib/entities/media_player/media_player_entity.class.dart index a6d4536..db85fd4 100644 --- a/lib/entities/media_player/media_player_entity.class.dart +++ b/lib/entities/media_player/media_player_entity.class.dart @@ -84,25 +84,22 @@ 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); - positionD = Duration( + Duration durationD; + Duration positionD; + durationD = Duration(seconds: durationSeconds); + positionD = Duration( seconds: positionSeconds); - result = positionD.inSeconds.toDouble(); - int differenceInSeconds = DateTime + result = positionD.inSeconds.toDouble(); + int differenceInSeconds = DateTime .now() .difference(positionLastUpdated) .inSeconds; - result = ((result + differenceInSeconds) <= durationD.inSeconds) ? (result + differenceInSeconds) : durationD.inSeconds.toDouble(); - } - + result = ((result + differenceInSeconds) <= durationD.inSeconds) ? (result + differenceInSeconds) : durationD.inSeconds.toDouble(); return result; } diff --git a/lib/entities/media_player/widgets/media_player_progress_bar.widget.dart b/lib/entities/media_player/widgets/media_player_progress_bar.widget.dart index a59e002..52ed346 100644 --- a/lib/entities/media_player/widgets/media_player_progress_bar.widget.dart +++ b/lib/entities/media_player/widgets/media_player_progress_bar.widget.dart @@ -22,13 +22,13 @@ class _MediaPlayerProgressBarState extends State { 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(); - progress = (currentPosition <= entity.durationSeconds) ? currentPosition / entity.durationSeconds : 100; - } else { - progress = 0; + if (currentPosition > 0) { + progress = (currentPosition <= entity.durationSeconds) ? currentPosition / entity.durationSeconds : 100; + } } return LinearProgressIndicator( value: progress, diff --git a/lib/entities/media_player/widgets/media_player_widgets.dart b/lib/entities/media_player/widgets/media_player_widgets.dart index 72d1977..bcf31bc 100644 --- a/lib/entities/media_player/widgets/media_player_widgets.dart +++ b/lib/entities/media_player/widgets/media_player_widgets.dart @@ -460,7 +460,11 @@ class _MediaPlayerControlsState extends State { } void _duplicateTo(entity) { - HomeAssistant().savedPlayerPosition = entity.getActualPosition().toInt(); + 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"]