select method
void
select(
- T value
Implementation
void select(T value) {
final isMultiSelection =
widget.variant == ShadSelectVariant.multiple ||
widget.variant == ShadSelectVariant.multipleWithSearch;
final prevList = controller.value.toList(growable: false);
if (widget.closeOnSelect) popoverController.hide();
setState(() {
final newSet = isMultiSelection ? Set<T>.from(controller.value) : <T>{};
if (widget.allowDeselection && prevList.contains(value)) {
newSet.remove(value);
} else {
newSet.add(value);
}
controller.value = newSet;
});
final newList = controller.value.toList(growable: false);
final changed = !ListEquality<T>().equals(prevList, newList);
if (widget.closeOnSelect) {
focusNode.requestFocus();
}
if (changed) {
// ignore: invalid_use_of_protected_member, invalid_use_of_visible_for_testing_member
controller.notifyListeners();
if (isMultiSelection) {
widget.onMultipleChanged?.call(controller.value.toSet());
} else {
widget.onChanged?.call(controller.value.firstOrNull);
}
}
}