select method

void select(
  1. Iterable<K> items
)

Marks given items as selected, notifies parent widget, and calls onSelectChanged if necessary.

Implementation

void select(Iterable<K> items) {
  if (items.isNotEmpty) {
    // check valid selection
    if (_widget?.itemSelectable != null) {
      for (var item in items) {
        if (_widget!.itemSelectable!.call(item) == false) {
          _widget?.onInvalidSelected?.call(item);
          return;
        }
      }
    }

    // check selection count
    if (_widget?.maxSelectableCount != null && _selectedItems.length >= (_widget?.maxSelectableCount)!) {
      _widget?.onMaxCountReached?.call(items.first);
      return;
    }

    // apply selection
    _selectedItems.addAll(items);
    _widget?.stateSetter.call();
    _widget?.onSelectChanged?.call(_selectedItems, items, []);
  }
}