Свойство iterator
Возвращает новый Iterator, который позволяет итерировать элементы этого Iterable.
Классы Iterable могут указывать порядок итерации своих элементов (например, List всегда итерирует в порядке индексов), или они могут оставить его неопределённым (например, основанное на хешировании Set может итерировать в любом порядке).
Каждый раз, когда iterator считывается, он возвращает новый итератор, который можно использовать для повторного перебора всех элементов. Итераторы одного и того же iterable могут продвигаться независимо, но должны возвращать те же элементы в том же порядке, пока не будет изменено базовое хранилище.
Изменение коллекции может привести к тому, что новые итераторы будут возвращать разные элементы и изменят порядок существующих элементов. List точно определяет свой порядок итерации, поэтому изменение списка предсказуемо изменяет порядок итерации. Основанный на хешировании Set может полностью изменить свой порядок итерации при добавлении нового элемента в множество.
Изменение базовой коллекции после создания нового итератора может вызвать ошибку в следующий раз, когда будет вызван Iterator.moveNext для этого итератора. Любой изменяемый класс iterable должен указывать, какие операции нарушат итерацию.
Реализация
Iterator<E> get iterator;
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/Iterable/iterator.html