Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 获取initState中的等待未来数据颤振给出空值_Flutter_Dart_Flutter Widget - Fatal编程技术网

Flutter 获取initState中的等待未来数据颤振给出空值

Flutter 获取initState中的等待未来数据颤振给出空值,flutter,dart,flutter-widget,Flutter,Dart,Flutter Widget,尝试使用async/await在initState中获取数据时,每次都会给出null值。等待完成后如何设置值 void initState() { convertFutureMakes().then((result) { setState(() { _makesList = result; }); }); CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);

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

void initState() {
   convertFutureMakes().then((result) {
     setState(() {
       _makesList = result;
     });
   });
   CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);
   super.initState();
}
_makesList始终为空,因此在使用该列表时会出现错误。下面是ConvertureMakes方法

convertFutureMakes() async{
  List<CarMake> makes = await getCarMakes();
  return makes;
}
convertFutureMakes()异步{
List makes=wait getCarMakes();
回报;
}
getCarMakes从Api获取数据。但这需要一些时间,而不是等待。我如何确保它在使用前有数据,或以其他方式解决该问题

CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);
需要位于then()回调中,否则无法确定它将在以下时间之前还是之后执行:

_makesList = result;
换句话说,convertFutureMakes()之后的代码在调用then()回调之前运行,这就是为什么没有值。事实上,永远不会有价值

尝试:


ConvertFutureMRemakes函数中的make返回值是什么?@proversion对象列表(CarMake)如果您正在接收一个Json对象,您可以使用未来的构建器并传递快照条件,如hasData/error等,以选择性地构建小部件或其他相关内容。如果您需要这方面的帮助,请共享Json文件示例/模板,但我也必须在小部件中使用该结果,并执行一些操作…在那里,当我获取这些小部件的内部数据时,它会给出null签出FutureBuilder。和
 convertFutureMakes().then((result) {
     setState(() {
       _makesList = result;
       CarMake brand = _makesList.firstWhere((obj)=>obj.name == make);
     });
   });