Конструктор unmodifiable
Конструктор unmodifiable класса List создает
неизменяемый список на основе переданной коллекции.
В первый параметр мы передаем коллекцию (список, множество
или любую другую итерируемую коллекцию), элементы которой
нужно скопировать в новый список. Полученный список
нельзя изменять: нельзя добавлять, удалять или заменять
элементы. При попытке изменить такой список будет
выброшено исключение UnsupportedError.
Синтаксис
List.unmodifiable(collection)
Пример
Давайте создадим неизменяемый список из обычного списка и выведем его содержимое:
void main()
{
List<String> original = ['a', 'b', 'c', 'd', 'e'];
List<String> res = List.unmodifiable(original);
print(res);
}
Результат выполнения кода:
[a, b, c, d, e]
Пример
Давайте попробуем добавить новый элемент в неизменяемый список и посмотрим, какое исключение будет выброшено:
void main()
{
List<int> original = [1, 2, 3, 4, 5];
List<int> res = List.unmodifiable(original);
res.add(6);
}
Результат выполнения кода:
UnsupportedError (Unsupported operation: Cannot add to an unmodifiable list)
Пример
Давайте создадим неизменяемый список из множества и проверим, что исходная коллекция не влияет на него:
void main()
{
Set<String> original = {'a', 'b', 'c'};
List<String> res = List.unmodifiable(original);
original.add('d');
print(original);
print(res);
}
Результат выполнения кода:
{a, b, c, d}
[a, b, c]
Пример
Давайте проверим, что элементы неизменяемого списка доступны для чтения по индексу:
void main()
{
List<String> res = List.unmodifiable(['12345', 'abcde']);
print(res[0]);
print(res.length);
}
Результат выполнения кода:
"12345"
2