Fix no duration crash on media player

This commit is contained in:
estevez-dev 2019-09-15 11:10:19 +03:00
parent db1a076132
commit 5dcb27ada7
4 changed files with 27 additions and 11 deletions

View File

@ -24,9 +24,18 @@ class _MediaPlayerProgressBarState extends State<MediaPlayerProgressBar> {
final MediaPlayerEntity entity = entityModel.entityWrapper.entity;
double progress;
DateTime lastUpdated = DateTime.tryParse("${entity.attributes["media_position_updated_at"]}")?.toLocal();
if (lastUpdated != null) {
Duration duration = Duration(seconds: entity._getIntAttributeValue("media_duration") ?? 1);
Duration position = Duration(seconds: entity._getIntAttributeValue("media_position") ?? 0);
Duration duration;
Duration position;
int durationInSeconds = entity._getIntAttributeValue("media_duration");
if (durationInSeconds != null) {
duration = Duration(seconds: durationInSeconds);
}
int positionInSeconds = entity._getIntAttributeValue("media_position");
if (positionInSeconds != null) {
position = Duration(
seconds: positionInSeconds);
}
if (lastUpdated != null && duration != null && position != null) {
int currentPosition = position.inSeconds;
int differenceInSeconds = DateTime
.now()

View File

@ -33,11 +33,18 @@ class _MediaPlayerSeekBarState extends State<MediaPlayerSeekBar> {
final MediaPlayerEntity entity = entityModel.entityWrapper.entity;
DateTime lastUpdated = DateTime.tryParse("${
entity.attributes["media_position_updated_at"]}")?.toLocal();
if (lastUpdated != null) {
Duration duration = Duration(
seconds: entity._getIntAttributeValue("media_duration") ?? 1);
Duration position = Duration(
seconds: entity._getIntAttributeValue("media_position") ?? 0);
Duration duration;
Duration position;
int durationInSeconds = entity._getIntAttributeValue("media_duration");
if (durationInSeconds != null) {
duration = Duration(seconds: durationInSeconds);
}
int positionInSeconds = entity._getIntAttributeValue("media_position");
if (positionInSeconds != null) {
position = Duration(
seconds: positionInSeconds);
}
if (lastUpdated != null && duration != null && position != null) {
if (entity.state == EntityState.playing && !_seekStarted &&
!_changedHere) {
_currentPosition = position.inSeconds.toDouble();
@ -45,7 +52,7 @@ class _MediaPlayerSeekBarState extends State<MediaPlayerSeekBar> {
.now()
.difference(lastUpdated)
.inSeconds;
_currentPosition = (_currentPosition <= duration.inSeconds) ? _currentPosition + differenceInSeconds : duration.inSeconds;
_currentPosition = ((_currentPosition + differenceInSeconds) <= duration.inSeconds) ? (_currentPosition + differenceInSeconds) : duration.inSeconds.toDouble();
} else if (_changedHere) {
_changedHere = false;
}

View File

@ -133,7 +133,7 @@ EventBus eventBus = new EventBus();
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
const String appName = "HA Client";
const appVersion = "0.6.6";
const appVersion = "0.6.7-alpha1";
void main() async {
FlutterError.onError = (errorDetails) {

View File

@ -1,7 +1,7 @@
name: hass_client
description: Home Assistant Android Client
version: 0.6.6+662
version: 0.6.7+670
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"