Fix no duration crash on media player
This commit is contained in:
		| @@ -24,9 +24,18 @@ class _MediaPlayerProgressBarState extends State<MediaPlayerProgressBar> { | |||||||
|     final MediaPlayerEntity entity = entityModel.entityWrapper.entity; |     final MediaPlayerEntity entity = entityModel.entityWrapper.entity; | ||||||
|     double progress; |     double progress; | ||||||
|     DateTime lastUpdated = DateTime.tryParse("${entity.attributes["media_position_updated_at"]}")?.toLocal(); |     DateTime lastUpdated = DateTime.tryParse("${entity.attributes["media_position_updated_at"]}")?.toLocal(); | ||||||
|     if (lastUpdated != null) { |     Duration duration; | ||||||
|       Duration duration = Duration(seconds: entity._getIntAttributeValue("media_duration") ?? 1); |     Duration position; | ||||||
|       Duration position = Duration(seconds: entity._getIntAttributeValue("media_position") ?? 0); |     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 currentPosition = position.inSeconds; | ||||||
|       int differenceInSeconds = DateTime |       int differenceInSeconds = DateTime | ||||||
|           .now() |           .now() | ||||||
|   | |||||||
| @@ -33,11 +33,18 @@ class _MediaPlayerSeekBarState extends State<MediaPlayerSeekBar> { | |||||||
|     final MediaPlayerEntity entity = entityModel.entityWrapper.entity; |     final MediaPlayerEntity entity = entityModel.entityWrapper.entity; | ||||||
|     DateTime lastUpdated = DateTime.tryParse("${ |     DateTime lastUpdated = DateTime.tryParse("${ | ||||||
|         entity.attributes["media_position_updated_at"]}")?.toLocal(); |         entity.attributes["media_position_updated_at"]}")?.toLocal(); | ||||||
|     if (lastUpdated != null) { |     Duration duration; | ||||||
|       Duration duration = Duration( |     Duration position; | ||||||
|           seconds: entity._getIntAttributeValue("media_duration") ?? 1); |     int durationInSeconds = entity._getIntAttributeValue("media_duration"); | ||||||
|       Duration position = Duration( |     if (durationInSeconds != null) { | ||||||
|           seconds: entity._getIntAttributeValue("media_position") ?? 0); |       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 && |       if (entity.state == EntityState.playing && !_seekStarted && | ||||||
|           !_changedHere) { |           !_changedHere) { | ||||||
|         _currentPosition = position.inSeconds.toDouble(); |         _currentPosition = position.inSeconds.toDouble(); | ||||||
| @@ -45,7 +52,7 @@ class _MediaPlayerSeekBarState extends State<MediaPlayerSeekBar> { | |||||||
|             .now() |             .now() | ||||||
|             .difference(lastUpdated) |             .difference(lastUpdated) | ||||||
|             .inSeconds; |             .inSeconds; | ||||||
|         _currentPosition = (_currentPosition <= duration.inSeconds) ? _currentPosition + differenceInSeconds : duration.inSeconds; |         _currentPosition = ((_currentPosition + differenceInSeconds) <= duration.inSeconds) ? (_currentPosition + differenceInSeconds) : duration.inSeconds.toDouble(); | ||||||
|       } else if (_changedHere) { |       } else if (_changedHere) { | ||||||
|         _changedHere = false; |         _changedHere = false; | ||||||
|       } |       } | ||||||
|   | |||||||
| @@ -133,7 +133,7 @@ EventBus eventBus = new EventBus(); | |||||||
| final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); | final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); | ||||||
| FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); | FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); | ||||||
| const String appName = "HA Client"; | const String appName = "HA Client"; | ||||||
| const appVersion = "0.6.6"; | const appVersion = "0.6.7-alpha1"; | ||||||
|  |  | ||||||
| void main() async { | void main() async { | ||||||
|   FlutterError.onError = (errorDetails) { |   FlutterError.onError = (errorDetails) { | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| name: hass_client | name: hass_client | ||||||
| description: Home Assistant Android Client | description: Home Assistant Android Client | ||||||
|  |  | ||||||
| version: 0.6.6+662 | version: 0.6.7+670 | ||||||
|  |  | ||||||
| environment: | environment: | ||||||
|   sdk: ">=2.0.0-dev.68.0 <3.0.0" |   sdk: ">=2.0.0-dev.68.0 <3.0.0" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user