getQueue method

Future<List<Track>> getQueue()

Returns a list of tracks currently in the user's playback queue. The first track is the currently playing track (if present).

Implementation

Future<List<Track>> getQueue() async {
  final uri = Uri.https(_baseApiHost, '/v1/me/player/queue');
  final json = await _getJson(uri);

  final List<Track> queue = [];
  final Set<String> trackIds = {};

  if (json['currently_playing'] != null) {
    final track = Track.fromJson(json['currently_playing']);
    if (trackIds.add(track.id)) queue.add(track);
  }

  if (json['queue'] != null) {
    final queueItems = json['queue'] as List;
    for (final item in queueItems) {
      final track = Track.fromJson(item);
      if (trackIds.add(track.id)) queue.add(track);
    }
  }

  return queue;
}