Flutter:_类型错误

np8igboo  于 2023-02-13  发布在  Flutter
关注(0)|答案(2)|浏览(124)

我正在尝试从api中获取数据并添加到一个列表中。但是此时,我看到我获取的数据却无法从函数中取出。我该怎么办?
下面是函数

List<dynamic> xxx = [];

  @override
  void initState() {
    super.initState();

    Future<List<dynamic>> fetchCompanies(List<dynamic> datas) async {
      var response = await Dio().get(CompaniesPath().url);
      if (response.statusCode == HttpStatus.ok) {
        Map<String, dynamic> company = jsonDecode(response.data);
        for (int i = 0; i < company['Data'].length; i++) {
          datas.add(company['Data'][i]);
        }
        //print(datas); //=> I see datas here

      } else {
        throw Exception();
      }
      return datas;
    }

    print(fetchCompanies(xxx));
  }

当我运行打印(fetchCompanies(xxx));我得到了"'Future'的示例"。我如何将'fetchCompanies'中的数据放到我的'xxx'列表中?'". How can i get datas inside 'fetchCompanies' to my 'xxx' list?

qvk1mo1f

qvk1mo1f1#

您正尝试打印List的未来示例,这就是为什么
未来的示例

    • 您必须等到函数执行完毕。**

这里需要注意的是,不能在initState()中调用wait,因此必须使用.then方法
试试这个:

fetchCompanies(xxx) 
.then((result) {
    print("result: $result");
});
lmyy7pcs

lmyy7pcs2#

它应该已经可以正常工作了,但是你可能需要调用一个setState来刷新页面,试试这个:

@override
  void initState() {
    super.initState();

    Future<List<dynamic>> fetchCompanies(List<dynamic> datas) async {
      var response = await Dio().get(CompaniesPath().url);
      if (response.statusCode == HttpStatus.ok) {
        Map<String, dynamic> company = jsonDecode(response.data);
        for (int i = 0; i < company['Data'].length; i++) {
          datas.add(company['Data'][i]);
        }
        //print(datas); //=> I see datas here

        setState(() {}); // added this

      } else {
        throw Exception();
      }
      return datas;
    }

    print(fetchCompanies(xxx));
  }

相关问题