本教程展示了创建一个不可变的列表的多种方法。
列表是dart中的一个可变列表,允许添加、删除和更新操作。
不可变的列表不允许添加或更新操作,只允许读操作。 由于读操作,不可变的列表与List相比性能最好。
有时,我们希望返回API或方法只返回不可变的List。
例如,普通列表允许添加、更新和删除操作,如下所示。
void main() {
var list = [8, 6, 3];
print(list); //[8, 6, 3];
list.add(2);
print(list); //[8, 6, 3, 2]
list.remove(6);
print(list); //[8, 3, 2]
}
我们有多种方法可以创建一个不可变的列表。
Dart或Flutter 创建一个不可变的列表
- 使用List.unmodifiable方法
List.unmodifiable() 方法接受列表参数并返回不可变的列表。
下面是一个例子
void main() {
var list = [8, 6, 3];
print(list); //[8, 6, 3];
var unmodifiable = List<int>.unmodifiable(list);
print(unmodifiable); //[8, 6, 3, 2]
}
假设,如果你试图从不可修改的列表中添加或删除一个元素,它会抛出一个错误Uncaught Error: Unsupported operation: remove 。
下面的代码抛出了一个错误
void main() {
var list = [8, 6, 3];
print(list); //[8, 6, 3];
var unmodifiable = List<int>.unmodifiable(list);
unmodifiable.add(5); // error
unmodifiable.remove(6); // error
}
- 在变量声明中不断使用。
另一种方法是用final或const来声明一个列表。
不使用var关键字,而使用 const or final来创建一个列表并在同一行中赋值。
你可以声明编译时的常量变量
同样地,你可以使用
const list = const [8, 6, 3];
这里是一个不可变的列表的例子。
void main() {
const list = [8, 6, 3];
print(list); //[8, 6, 3];
list.add(5); // error
list.remove(6); // error
}
总结
通过实例学习了在dart或flutter中创建不可变或不可修改的列表的多种方法。