syncExternalSelectedItems method

void syncExternalSelectedItems(
  1. List<T> externalSelectedItems
)

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();
}