在Dart中,如果要创建不可修改的列表,则可以使用List.unmodifiable()或UnmodifiableListView

List<int> list = [1, 2, 3];
List<int> unmodifiableList = List.unmodifiable(list);
UnmodifiableListView unmodifiableListView = UnmodifiableListView(list);

这有什么不同?

最佳答案

List.unmodifiable创建原始List的副本,并且该副本无法更改。更改原始List不会影响副本。
UnmodifiableListView是原始List的包装,并且原始文件无法通过UnmodifiableListView进行突变。仍然可以在List中观察到原始UnmodifiableListView的变异。

例如:

import 'dart:collection';

void main() {
  var originalList = [1, 2, 3];
  var unmodifiableCopy = List<int>.unmodifiable(originalList);
  var unmodifiableView = UnmodifiableListView(originalList);

  originalList[0] = -1;
  print('$unmodifiableCopy'); // Prints: [1, 2, 3]
  print('$unmodifiableView'); // Prints: [-1, 2, 3]
}

10-06 06:41