首页 > 解决方案 > 如何在 Dart 中使用临时列表?

问题描述

我如何使用 Dart 获得这个结果?

[预期结果] [["A","B","C"],["D","E","F"]]

void main() {
  var list = new List<List<String>>();
  var tempList = new List<String>();

  tempList.add("A");
  tempList.add("B");
  tempList.add("C");

  list.insert(0, tempList);
  tempList.clear();

  tempList.add("D");
  tempList.add("E");
  tempList.add("F");

  list.insert(1, tempList);

  print(list);  
}

[当前结果] [["D","E","F"],["D","E","F"]]

我怎样才能把它做对?

标签: dart

解决方案


您应该创建一个新列表而不是清除原始列表。Dart 对象是通过引用传递的,因此当您插入tempList然后list调用时tempList.clear(),您将删除已插入的列表list,向其中添加元素,然后添加它的副本,这会导致您看到的重复。

示例修复:

void main() {
  var list = <List<String>>[];
  var tempList = <String>[];

  tempList.add("A");
  tempList.add("B");
  tempList.add("C");

  list.insert(0, tempList);

  // Create a new empty list
  tempList = <String>[];

  tempList.add("D");
  tempList.add("E");
  tempList.add("F");

  list.insert(1, tempList);

  print(list);  
}

推荐阅读