copyAndSetItem method
Future
copyAndSetItem(
- NsgDataItem item, {
- bool needRefreshSelectedItem = false,
- 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);
}
}