【问题标题】:Flutter get future list data into normal listFlutter 将未来的列表数据放入普通列表中
【发布时间】:2021-05-06 18:35:03
【问题描述】:

我正在尝试在 DropdownField 中显示项目列表,这需要 非未来列表。

所以我试图通过迭代它并将其添加到一个新的、正常的列表中,将我的未来列表(我从数据库调用中获得)变成一个普通列表,就像这样;

当我打印未来列表的各个元素时,我会返回结果。

但是之后,当我打印新列表时,它会返回一个空值。

有人知道我该如何解决这个问题吗?

PS:我对 FutureBuilder 解决方案感兴趣。我知道我可以展示一个未来构建者的未来列表,但这不符合我希望实现的解决方案。

提前致谢!

【问题讨论】:

  • 为了将来参考,您可能希望将实际代码粘贴到问题中,以便人们可以轻松地将其复制到他们的答案中。否则,我们必须自己写出来。

标签: flutter dart flutter-listview flutter-futurebuilder


【解决方案1】:

问题是你没有初始化newList。您正在尝试将项目添加到空列表。将getAll()的第四行改成如下:

var newList = List<dynamic>();

您也不是awaiting 您的 firebase 电话。这意味着您将在完成 firebase 调用之前打印数组。您需要将 getAll() 方法 asyncawait 设为 firebase 调用,这样它就不会打印空版本。

【讨论】:

  • 不幸的是,问题仍然存在 - 该列表没有添加新值。
  • @lvb 我更新了我的答案。希望有帮助
【解决方案2】:

那是因为你不是在等待未来完成。当您执行 print(newList) 时,未来还没有完成。

您将需要等待 getAnswers 数据来归档您想要的内容。

final answers = await getAnswersList();
for (final answer in answers) {
  print(answer.toString());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 2014-12-31
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2021-09-23
    • 2019-02-04
    相关资源
    最近更新 更多