requestMediaWithKeyword method
main request method for all kind of media
Implementation
Future<PixabayResponse> requestMediaWithKeyword(
{MediaType media,
String keyword,
int resultsPerPage = 30,
int page,
String category}) async {
// Search for media associated with the keyword
String url = "https://pixabay.com/api/";
PixabayResponse res;
if (media == MediaType.video) url += "videos/";
if (resultsPerPage < 3) // API restriction
resultsPerPage = 3;
url += "?key=" + apiKey;
if (keyword != null) url += "&q=" + Uri.encodeFull(keyword);
url +=
"&lang=" + Uri.encodeFull(this.language) + "&per_page=$resultsPerPage";
if (category != null) url += "&category=$category";
if (page != null) url += "&page=$page";
if (media == MediaType.video) {
var data = await getVideos(url);
if (data != null && data.length > 0) {
List<PixabayVideo> videos =
new List<PixabayVideo>.generate(data['hits'].length, (index) {
return new PixabayVideo.fromJson(data['hits'][index]);
});
res = PixabayResponse(
total: data["total"], totalHits: data["totalHits"], hits: videos);
}
} else {
var data = await getImages(url);
if (data != null && data.length > 0) {
List<PixabayImage> images =
new List<PixabayImage>.generate(data['hits'].length, (index) {
return new PixabayImage.fromJson(data['hits'][index]);
});
res = PixabayResponse(
total: data["total"], totalHits: data["totalHits"], hits: images);
}
}
return res;
}