syncExternalSelectedItems method
Sincronizza lo stato interno con eventuali aggiornamenti esterni (es. selectedValues valorizzati dopo un preload asincrono).
Implementation
void syncExternalSelectedItems(List<T> externalSelectedItems) {
if (isMultiple) {
if (listEquals(selectedItems, externalSelectedItems)) return;
// Don't clear programmatic (AI) selections when the parent rebuilds
// with an empty list — that happens because vm.notifyListeners() fires
// before the viewmodel's selectedXxx list is updated back through the
// callback chain.
if (externalSelectedItems.isEmpty && selectedItems.isNotEmpty) return;
selectedItems = List<T>.from(externalSelectedItems);
_updateMultipleText();
notifyListeners();
_overlayEntry?.markNeedsBuild();
return;
}
final T? externalSelected =
externalSelectedItems.isNotEmpty ? externalSelectedItems.first : null;
if (selectedItem == externalSelected) return;
selectedItem = externalSelected;
if (externalSelected != null) {
textEditingController.text = valueToShow(externalSelected);
} else {
textEditingController.clear();
}
notifyListeners();
_overlayEntry?.markNeedsBuild();
}