首页 > 解决方案 > 如何在循环中等待异步 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')
            );
          }

现在,它不起作用,因为它从不显示“有数据”。如何加载这些数据,以便我可以在小部件树中引用?

标签: flutter

解决方案


推荐阅读