updateAll method

bool updateAll(
  1. Iterable<E> newItems
)

Implementation

bool updateAll(final Iterable<E> newItems) {
  try {
    bool changed = false;

    final currSize = this._items.length;
    final newList = newItems.toList();
    var i = 0;
    for (; i < newItems.length; i++) {
      final newItem = newList[i];
      if (_items.length > i) {
        final existingItem = _items[i];
        if (existingItem != newItem) {
          changed = true;
          removeAt(i);
          insert(i, newItem);
        }
      } else {
        changed = true;
        insert(_items.length, newItem);
      }
    }

    final trimSize = currSize - i;
    if (trimSize > 0) {
      Iterable.generate(trimSize).forEach((_) => removeLast());
      changed = true;
    }

    return changed;
  } catch (e) {
    log.info("Error updating list state: $e");
    rethrow;
  }
}