尝试使用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);
});
});