add function getMusicsWithNameOrArtistName
continuous-integration/drone/push Build is passing Details

pull/40/head
Emre KARTAL 2 years ago
parent 53a8d37534
commit 8e5fec03a4

@ -5,7 +5,7 @@ class Artist {
Artist(this._id, this._name, this._image); Artist(this._id, this._name, this._image);
String? get id => _id; String get id => _id;
String? get name => _name; String? get name => _name;

@ -123,7 +123,7 @@ class _SearchSongScreenState extends State<SearchSongScreen> {
} else if (value == " ") { } else if (value == " ") {
print("popular"); print("popular");
} else { } else {
filteredData = await MyApp.musicViewModel.getMusicsWithName(value); filteredData = await MyApp.musicViewModel.getMusicsWithNameOrArtistName(value);
setState(() { setState(() {
filteredData = filteredData; filteredData = filteredData;
}); });

@ -22,10 +22,6 @@ class MusicViewModel {
if (response.statusCode == 200) { if (response.statusCode == 200) {
final responseData = jsonDecode(response.body); final responseData = jsonDecode(response.body);
List<Artist> artists =
List<Artist>.from(responseData['artists'].map((artist) {
return Artist(artist['id'], artist['name'], '');
}));
return _getMusicFromResponse(responseData); return _getMusicFromResponse(responseData);
} else { } else {
@ -221,4 +217,17 @@ class MusicViewModel {
'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}'); 'Error while retrieving music : ${response.statusCode} ${response.reasonPhrase}');
} }
} }
Future<List<Music>> getMusicsWithNameOrArtistName(String name,
{int limit = 20, int offset = 0, String market = "FR"}) async {
try {
List<Music> musics = [];
Artist artist = await getArtistWithName(name, market: market);
musics.addAll(await getTopMusicsWithArtistId(artist.id));
musics.addAll(await getMusicsWithName(name,limit: limit,offset: offset,market: market));
return musics;
} catch (e) {
return await getMusicsWithName(name,limit: limit,offset: offset,market: market);
}
}
} }

@ -79,5 +79,16 @@ Future<void> main() async {
} }
} }
print('\nMusics With Name or Artist Name :');
List<Music> musicsArtistOrName = await musicVM.getMusicsWithNameOrArtistName('la bandite');
for (Music m in musicsArtistOrName) {
print("id : ${m.id.toString()}, cover : ${m.cover}, title : ${m.title}");
print("date : ${m.date.toString()}, preview : ${m.previewUrl}, duration : ${m.duration}, explicit : ${m.explicit}");
for (Artist a in m.artists) {
print("id : ${a.id}, name : ${a.name}");
}
}
} }

Loading…
Cancel
Save