NowPlayingTrack.fromJson constructor
Creates a track from json
Returns the static notPlaying
instance if player is stopped
Creates image and icon art if not already present/resolved
Implementation
factory NowPlayingTrack.fromJson(Map<String, dynamic> json) {
if (json == null || json.isEmpty) return notPlaying;
final state = NowPlayingState.values[json['state']];
if (state == NowPlayingState.stopped) return notPlaying;
final String imageId = '${json['artist']}:${json['album']}';
if (!_images.containsKey(imageId)) {
final Uint8List imageData = json['image'];
if (imageData is Uint8List) {
_images[imageId] = MemoryImage(imageData);
} else {
final String imageUri = json['imageUri'];
if (imageUri is String) _images[imageId] = NetworkImage(imageUri);
}
print('Image for track "$imageId" ${_images[imageId]}');
}
_resolutionStates[imageId] ??= _NowPlayingImageResolutionState.unresolved;
final Uint8List iconData = json['sourceIcon'];
if (iconData is Uint8List) _icons[json['source']] ??= MemoryImage(iconData);
final String id = json['id'].toString();
return NowPlayingTrack(
id: id,
title: json['title'],
album: json['album'],
artist: json['artist'],
duration: Duration(milliseconds: json['duration'] ?? 0),
position: Duration(milliseconds: json['position'] ?? 0),
state: state,
source: json['source']
);
}