copyAndSetItem method

Future copyAndSetItem(
  1. NsgDataItem item, {
  2. bool needRefreshSelectedItem = false,
  3. List<String>? referenceList,
})

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

Implementation

Future copyAndSetItem(NsgDataItem item, {bool needRefreshSelectedItem = false, List<String>? referenceList}) async {
  assert(item.isNotEmpty, 'Попытка перечитать с сервера объект с пустым guid (например, новый)');
  assert(
    (this is! NsgDataItemController || (this as NsgDataItemController).widgetId != null),
    'Использован неправильный контроллер для данного типа данных. $runtimeType != $dataType',
  );
  currentStatus = GetStatus.loading();
  sendNotify();
  itemsRequested.broadcast();
  try {
    var newItem = needRefreshSelectedItem ? await refreshItem(item, referenceList) : item;
    var index = dataItemList.indexOf(item);
    if (index >= 0) {
      dataItemList.replaceRange(index, index + 1, [newItem]);
    } else if (newItem.isEmpty) {
      currentStatus = GetStatus.error('Ошибка NBC-509. Данный объект более недоступен');
      sendNotify();
      throw Exception('Ошибка NBC-509. Данный объект более недоступен');
    }
    selectedItem = newItem.clone(cloneAsCopy: true);
    backupItem = selectedItem!.clone();
    await afterRefreshItem(selectedItem!, referenceList);
    currentStatus = GetStatus.success(NsgBaseController.emptyData);
    sendNotify();
    selectedItemChanged.broadcast(null);
  } on Exception catch (e) {
    _updateStatusError(e);
  }
}