Search code examples
flutterdartspotifyflutter-dependencies

Flutter Spotify - How to get recommendations based on seeds


Using the Flutter Package spotify-dart, I'm trying to get track recommendations based on songs the user has in their playlist.

Code so far:

  // Function that returns a list of recommendation tracks
  void getRecommendations() {
    List<RecommendationsSeed> _seeds = List<RecommendationsSeed>();
    Recommendations _recommendations = Recommendations();
    Map<String, dynamic> _json;

    _json = {
      // I would like to use this song(Photograph - Ed Sheeran) as a seed 
      'id': 'spotify:track:6XLww4MprrLCvWpVXD9K7S',
      'type': 'track'
    };

    _seeds.add(RecommendationsSeed.fromJson(_json));

    _recommendations.seeds = _seeds;

    List<TrackSimple> _tracks = _recommendations.tracks;

    _tracks.forEach((element) {
      print(element.name);
    });

  }

However, _tracks remains null, and thus I get an error saying NoSuchMethodError: The method 'forEach' was called on null.

I guess my implementation of adding seeds is wrong. What would be the proper way to get recommendations from seeds?


Solution

  • Here's how to get recommendations based on seeds.

    // Spotify object
    var _spotify = SpotifyApi(_credentials);
    
    void getRecommendations() async {
      Recommendations _recommendations = await _spotify.recommendations.get(
        seedTracks: ['5uaIbU3oHHcSOK6WFNK5nj'],
        limit: 10,
      );
    
      List<TrackSimple> _tracks = _recommendations.tracks;
    
      _tracks.forEach((element) {
        debugPrint(element.name);
      });
    }