setAndRefreshSelectedItem method

Future setAndRefreshSelectedItem(
  1. NsgDataItem item,
  2. List<String>? referenceList
)

Перечитать из базы данных текущий объект (selectedItem) На время чтерния статус контроллера будет loading referenceList - ссылки для дочитывания. Если передан null - будут дочитаны все Одно из применений, перечитывание объекта с целью чтения его табличных частей при переходе из формы списка в форму элемента

Implementation

Future setAndRefreshSelectedItem(NsgDataItem item, List<String>? referenceList) async {
  assert(item.isNotEmpty, 'Попытка перечитать с сервера объект с пустым guid (например, новый)');
  selectedItem = item;
  currentStatus = GetStatus.loading();
  status = GetStatus.loading();
  //11.02.2023 Зенков. Заменил на refresh, потому что иногда происходил конфликт обновления в процессе перерисовки
  //Например, TaskTuner, открытие задачи на просмотр
  refresh();
  //sendNotify();
  itemsRequested.broadcast();
  try {
    var newItem = await refreshItem(item, referenceList);
    var index = dataItemList.indexOf(item);
    if (index >= 0) {
      dataItemList[index] = newItem;
    } else if (newItem.isEmpty) {
      currentStatus = GetStatus.error('Ошибка NBC-509. Данный объект более недоступен');
      sendNotify();
      throw Exception('Ошибка NBC-509. Данный объект более недоступен');
    }
    //запоминаем текущий элемент в бэкапе на случай отмены редактирования пользователем для возможности вернуть
    //вернуть результат обратно
    //selectedItem = null;
    selectedItem!.copyFieldValues(newItem);
    selectedItem!.state = newItem.state; // NsgDataItemState.fill;
    backupItem = newItem;
    await afterRefreshItem(selectedItem!, referenceList);
    currentStatus = GetStatus.success(NsgBaseController.emptyData);
    sendNotify();
    selectedItemChanged.broadcast(null);
  } on Exception catch (e) {
    _updateStatusError(e);
  }
}