select method
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, []);
}
}