首页 > 解决方案 > Flutter:嵌套异步 HTTP 调用的最佳实践

问题描述

我正在尝试将两个 Http 请求的结果加载到一个列表项中(第二个请求是关于第一个请求结果项的获取详细信息)。第一个请求获取加密货币列表。第二个请求收集有关该货币的更多信息。

在此处输入图像描述

我想在两个单独的请求中完成此操作的原因是,

  1. 数据来自不同的来源。
  2. 获得货币列表后,我想显示一个流程圈,意思是“保持冷静,正在加载详细信息”

我已经尝试过的是;

目前,我大脑的一部分大喊“Redux 是正确处理这个问题的唯一方法”

你对如何处理这个有什么建议吗?先感谢您。

标签: flutter

解决方案


void getOwnedCoins() async {
CoinsList cList = await ResourceCoins().list();
setState(() {
  list = cList;
  items = cList.result.length;
});
getCoinSummary(cList);
}

void getCoinSummary(CoinsList coins) {
coins.result.forEach((Coin coin) async {
  CoinSummary cs = await ResourceCoinSummary().summary(market: {'market': 'btc-' + coin.currency});
  coin.summary = cs;

  setState(() {
    list = coins;
  });
});
}

我就是这样解决的。我的错误是在 ListView.builder 中调用getCoinSummary但是,我对getCoinSummary中的 setState 感到不舒服。每次从服务器获取详细信息时,我都会重新渲染整个列表。它应该是怎样的?


推荐阅读