【问题标题】:Trying to create a method to store Strings in a list尝试创建一种将字符串存储在列表中的方法
【发布时间】:2021-05-21 22:37:24
【问题描述】:

我有一个看起来像这样的卷列表 ['9v9JXgmM3F0C','RoAwAAAAYAAJ','RYAwAAAAYAAJ']

我有一个现成的函数,可以发送个人卷并重新运行地图。

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

我正在尝试创建一种方法来将每个卷存储在一个列表中并重新运行它。

我尝试过使用循环 forforEach,但它一直在重新运行 []null

我正在做某事吗?他们是更好的方法吗?

【问题讨论】:

  • 添加更多细节,例如详细代码,以更好地理解您的代码

标签: flutter future flutter-listview flutter-futurebuilder


【解决方案1】:

我猜你会得到 null 回来,因为你没有为每个卷正确构建 url。试试这个。

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

然后你从 getBooksByVolume 函数中删除第一行,因为你已经发送了完整的 url。

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

    return BookIdVolume.fromJson(responseBody);
  }

【讨论】:

    猜你喜欢
    • 2013-10-13
    • 1970-01-01
    • 2013-05-14
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多