postItems method

Future<List<T>> postItems({
  1. bool autoAuthorize = true,
  2. String tag = '',
  3. List<String>? loadReference,
  4. String function = '',
})

Implementation

Future<List<T>> postItems({bool autoAuthorize = true, String tag = '', List<String>? loadReference, String function = ''}) async {
  var dataItem = NsgDataClient.client.getNewObject(dataItemType);

  var header = <String, String?>{};
  if (dataItem.remoteProvider.token != '') {
    header['Authorization'] = dataItem.remoteProvider.token;
  }
  if (function == '') {
    function = dataItem.remoteProvider.serverUri + dataItem.apiPostItems;
  } else {
    function = dataItem.remoteProvider.serverUri + function;
  }

  Map<String, dynamic>? filterMap;
  //Добавим поля для дочитывания
  if (loadReference != null) {
    var filter = NsgDataRequestParams();
    filter.referenceList = loadReference;
    filterMap = filter.toJson();
  }
  var response = await dataItem.remoteProvider.baseRequestList(
      function: '$function ${dataItem.runtimeType}',
      headers: dataItem.remoteProvider.getAuthorizationHeader(),
      url: function,
      postData: _toJson(),
      method: 'POST',
      params: filterMap);

  var req = NsgDataRequest<T>(dataItemType: dataItemType);
  _items = (await req.loadDataAndReferences(response, loadReference ?? [], tag)).cast();
  for (var element in _items) {
    element.state = NsgDataItemState.fill;
  }
  return _items;
}