大佬教程收集整理的这篇文章主要介绍了在 Flutter 中使用 for 循环在一个变量中获取多个 API 调用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试让用户收藏夹类别来自定义主页,而不是显示所有类别。首先,我在列表中获取用户的收藏夹类别,然后使用类别作为参数循环我的 API 获取服务,但是当循环结束时,仅显示最后一个循环索引中的数据。我想知道为什么?以及如何实现我想要的输出。
我使用的是 Flutter 2.0.4
这是我的 API 调用
Future<APIResponse<List<NewsModel>>> getBycategory(String category) {
var headers = {
'Content-Type': 'application/Json; charset=UTF-8',};
return http
.get(Uri.parse('$API/articales/$category'),headers: headers)
.then((data) {
if (data.statusCode == 200) {
final JsonData = Json.decode(data.body);
final articales = <NewsModel>[];
for (final item in JsonData) {
articales.add(NewsModel.fromJson(item));
}
return APIResponse<List<NewsModel>>(data: articales);
}
return APIResponse<List<NewsModel>>(error: true,errormessage: data.body);
}).catchError((_) => APIResponse<List<NewsModel>>(
error: true,errormessage: 'An error occured'));
}
这是我的功能
Future byCategorIEs() async {
_usercategorysData = await newsservice.getusercategorIEs(Widget.user!.uID);
for (int i = 0; i <= _usercategorysData.data!.length - 1; i++) {
await newsservice
.getBycategory(_usercategorysData.data![i].category!)
.then((value) {
setState(() {
_newscategoryData = value;
});
});
}
}
每次循环执行时,您都会为 _newsCategoryData
分配一个新值,因此当循环完成时,它将包含最后一个值。
在这种情况下,我假设 _newsCategoryData
是一个列表;使用 _newsCategoryData.addAll(value)
代替 _newsCategoryData = value
添加新数据而不丢弃现有数据。
另一方面,如果您必须在异步函数中调用 setState
,请务必先检查 @H_290_9@mounted,因为在 setState
时小部件可能已从树中删除被称为。
以上是大佬教程为你收集整理的在 Flutter 中使用 for 循环在一个变量中获取多个 API 调用全部内容,希望文章能够帮你解决在 Flutter 中使用 for 循环在一个变量中获取多个 API 调用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。