flutter - 如何在循环中等待异步 API 调用
问题描述
我有一个小部件,在 initState 上,我需要循环一些控件并通过 API 加载数据。我想在小部件控制键中使用/引用此数据。
这是代码初始化数据的摘要。
List<dynamic> controlData = [];
@override
initState(){
loadAllOptionData();
super.initState();
}
void loadAllOptionData() async {
List<dynamic> listDataControls = [];
Future.wait(widget.fields.where((element) => element['header'] !=null).map((e) async {
if(e['uitype']==7){
List<dynamic> options = await ApiManager.getListData(widget.tableId, e);
listDataControls.add({e['data'] : options});
}
}).toList());
this.setState(() {
controlData= listDataControls;
});
}
在小部件渲染树中,我有这个检查
if(controlData.length>0){
return Container(
margin: EdgeInsets.all(20),
child: Text('has data')
);
}
现在,它不起作用,因为它从不显示“有数据”。如何加载这些数据,以便我可以在小部件树中引用?
解决方案
推荐阅读
- node.js - MongoDB Change Stream watcher 在第二次执行 aws-lambda 函数时被触发或根本没有被触发
- installation - 由于导入 AsyncRetrying 时出现 SyntaxError,Airflow initdb 失败
- javascript - 将数据从 DOM 发布到 express 服务器
- android - 如何从平面视图设置谷歌地图到全球视图?
- python - 使用 re 查找所有匹配项
- javascript - 如何修复“TypeError:X 为空”
- d3.js - 更改 d3 强制布局链接样式以匹配 d3-tree 外观
- ios - Swift - 小时/分钟/秒到整数转换
- c# - WPF - 文本框不会响应多重绑定中的 PropertyChanged
- c# - 是否有与 C# 中用于表单控件的 HTML 函数 getElementById() 的等效项?