Search code examples
flutterfutureflutter-listviewflutter-futurebuilder

Trying to create a method to store Strings in a list


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 ?


Solution

  • 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);
      }