updateItems method

void updateItems(
  1. List<T> items, {
  2. bool append = false,
})

Updates the entire list of items.

Preserves selection and expansion state where possible.

Implementation

void updateItems(List<T> items, {bool append = false}) {
  if (_useLocalPaginationItems) {
    if (!append) {
      _localPaginationItems.clear();
    }
    _localPaginationItems.addAll(items);
  }

  if (!append) {
    Set<K> preservedKeys = <K>{...selectedKeys, ...expandedKeys};

    final preservedItems = <K, T>{};
    for (final k in preservedKeys) {
      final v = _itemsMap[k];
      if (v != null) preservedItems[k] = v;
    }

    _itemsMap
      ..clear()
      ..addAll(preservedItems);
  }

  void addItemRecursive(T item) {
    final key = itemKey(item);
    _itemsMap[key] = item;

    if (isHierarchical) {
      final children = itemChildren!(item);
      if (children != null) {
        for (final child in children) {
          addItemRecursive(child);
        }
      }
    }
  }

  for (final item in items) {
    addItemRecursive(item);
  }

  if (!isServerSide) {
    _executePaginationAction('updateItems', page: 1);
  }
}