0

i have a list of volumes that looks like this ['9v9JXgmM3F0C','RoAwAAAAYAAJ','RYAwAAAAYAAJ']

i have a ready funtion that sends Individual volumes and retruns a Map.

Future<BookIdVolume> getBooksByVolume(volume) async {
    var searchUrl = 'https://www.googleapis.com/books/v1/volumes/$volume';
    var response = await http.get(searchUrl);
    var responseBody = jsonDecode(response.body);

    return BookIdVolume.fromJson(responseBody);
  }

Im trying to create a method to store each of volumes in a list and retrun it.

I have tryed using loops for and forEach but it keeps retruning either [] or null

im i doing somthing wong ? is thier a better better way to do it ?

PHP Pharaoh
  • 39
  • 1
  • 6

1 Answers1

0

I'm guessing you're getting null back because you're not building the url properly for each volume. Try this.

final volumeList = ['9v9JXgmM3F0C', 'RoAwAAAAYAAJ', 'RYAwAAAAYAAJ'];
final baseUrl = 'https://www.googleapis.com/books/v1/volumes/';

 List<BookIdVolume> bookList = [];

  void buildBookList() async {
    for (String volume in volumeList) {
      final url = '$baseUrl$volume';
      final book = await getBooksByVolume(url);
      bookList.add(book);
    }
  }

Then you remove the first line from the getBooksByVolume function because you're already sending the full url.

 Future<BookIdVolume> getBooksByVolume(url) async {
    var response = await http.get(url);
    var responseBody = jsonDecode(response.body);

    return BookIdVolume.fromJson(responseBody);
  }
Loren.A
  • 4,872
  • 1
  • 10
  • 17