WidgetIterator class
class WidgetIterator implements RemoveIterator<Widget> { WidgetCollection _widgetCollection; WidgetIterator(this._widgetCollection); int index = -1; //*************************** // Implementation of Iterator //*************************** bool moveNext() { return index < (_widgetCollection._size - 1); } Widget get current => _getCurrent(); Widget _getCurrent() { if (index >= _widgetCollection._size) { throw new Exception("NoSuchElement"); } return _widgetCollection._array[++index]; } //********************************* // Implementation of RemoveIterator //********************************* void remove() { if ((index < 0) || (index >= _widgetCollection._size)) { throw new Exception("IllegalState"); } _widgetCollection._parent.remove(_widgetCollection._array[index--]); } }
Implements
Constructors
new WidgetIterator(WidgetCollection _widgetCollection) #
Methods
bool moveNext() #
Moves to the next element. Returns true if current contains the next element. Returns false, if no element was left.
It is safe to invoke moveNext even when the iterator is already positioned after the last element. In this case moveNext has no effect.
docs inherited from Iterator<E>
bool moveNext() { return index < (_widgetCollection._size - 1); }
void remove() #
Removes from the underlying collection the last element returned by this iterator (optional operation). This method can be called only once per call to {@link #next}. The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method.
@throws UnsupportedOperationException if the {@code remove}
operation is not supported by this iterator
@throws IllegalStateException if the {@code next} method has not
yet been called, or the {@code remove} method has already
been called after the last call to the {@code next}
method
docs inherited from RemoveIterator<Widget>
void remove() { if ((index < 0) || (index >= _widgetCollection._size)) { throw new Exception("IllegalState"); } _widgetCollection._parent.remove(_widgetCollection._array[index--]); }