getRecommendations method
Gets track recommendations based on seeds and optional audio features.
Implementation
Future<List<Track>> getRecommendations({
List<String>? seedTracks,
List<String>? seedArtists,
List<String>? seedGenres,
Map<String, dynamic>? audioFeatures,
String? market,
int limit = 20,
}) async {
final params = {
'limit': limit.toString(),
if (market != null) 'market': market,
if (seedTracks != null && seedTracks.isNotEmpty)
'seed_tracks': seedTracks.join(','),
if (seedArtists != null && seedArtists.isNotEmpty)
'seed_artists': seedArtists.join(','),
if (seedGenres != null && seedGenres.isNotEmpty)
'seed_genres': seedGenres.join(','),
if (audioFeatures != null)
...audioFeatures.map((k, v) => MapEntry(k, v.toString())),
};
final uri = Uri.https(_baseApiHost, '/v1/recommendations', params);
final json = await _getJson(uri);
final items = json['tracks'] as List<dynamic>;
return items.map((item) => Track.fromJson(item)).toList();
}