尝试使用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获取数据。但是,这需要一些时间,并且它不会等待。如何确保使用前有数据或以其他方式解决该问题
答案 0 :(得分:1)
下面的行:
CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);
需要在then()回调中,否则不确定在执行之前还是之后执行:
_makesList = result;
以另一种方式,convertFutureMakes()。then()之后的代码在之前运行,然后调用then()回调,这就是为什么没有值的原因。实际上,永远不会有价值。
尝试:
convertFutureMakes().then((result) {
setState(() {
_makesList = result;
CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);
});
});