Dart不附加未来列表



我正在打电话给Future。在两个Future列表中等待:

Future<void> first() async {
await Future.delayed(Duration(seconds: 1));
print('first');
}
Future<void> second() async {
print('second');
}
void main() async {
final list1 = [0, 1].map((e) => first()).toList();
final list2 = [2, 3].map((e) => second()).toList();
final appended = list1.addAll(list2); // result is not defined
// await Future.wait(appended); // <= error: This expression has a type of 'void' so its value can't be used.
await Future.wait([...list1, ...list2]); // <= this works
}

为什么addAll不像预期的那样工作?

list1.addAll(list2)变异list1。它不返回新的List,也不返回原来的List。它什么也不返回,这就是为什么分析器会给您一个错误,认为appended的类型是void。不要忽视警告和错误。如果您得到了意想不到的结果,请再次检查文档以验证您的期望。List.addAll文档显示它有一个void返回类型,并给出了示例用法。

请注意,当您稍后执行Future.wait([...list1, ...list2])时,因此您将两次包含list2中的Futures(尽管除了稍微降低效率之外,它应该不会影响行为)。

如果你想要一个新的List,你可以使用List.operator +:

var appended = list1 + list2;

相关内容

  • 没有找到相关文章

最新更新