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 c2b3094..2899bef 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 @@ -24,9 +24,18 @@ class _MediaPlayerProgressBarState extends State { 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() diff --git a/lib/entities/media_player/widgets/media_player_seek_bar.widget.dart b/lib/entities/media_player/widgets/media_player_seek_bar.widget.dart index d8d6f49..b7e7107 100644 --- a/lib/entities/media_player/widgets/media_player_seek_bar.widget.dart +++ b/lib/entities/media_player/widgets/media_player_seek_bar.widget.dart @@ -33,11 +33,18 @@ class _MediaPlayerSeekBarState extends State { 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 { .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; } diff --git a/lib/main.dart b/lib/main.dart index 1d315cf..1e98db9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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) { diff --git a/pubspec.yaml b/pubspec.yaml index a80fe90..886c285 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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"