尝试使用async / await在initState中获取数据每次都会给出空值。等待完成后如何设置值

void initState() {
   convertFutureMakes().then((result) {
     setState(() {
       _makesList = result;
     });
   });
   CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);
   super.initState();
}

_makesList始终为null,因此在使用该列表时会给出错误。这是convertFutureMakes方法
convertFutureMakes() async{
  List<CarMake> makes = await getCarMakes();
  return makes;
}

getCarMakes从Api获取数据。但是,这需要一些时间,并且它不会等待。如何确保使用前有数据或以其他方式解决该问题

最佳答案

下面的行:

CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);

需要在then()回调中,否则不确定是在执行之前还是之后执行:
_makesList = result;

换句话说,convertFutureMakes()。then()之后的代码在调用then()回调之前运行,这就是为什么没有值的原因。实际上,永远没有值(value)。

尝试:
 convertFutureMakes().then((result) {
     setState(() {
       _makesList = result;
       CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);
     });
   });

10-08 14:55