requestItems method

Future<List<NsgDataItem>> requestItems(
  1. NsgDataItem dataItem,
  2. NsgDataRequestParams params, {
  3. String tag = '',
})

Implementation

Future<List<NsgDataItem>> requestItems(NsgDataItem dataItem, NsgDataRequestParams params, {String tag = ''}) async {
  var box = await getTable(dataItem.typeName);
  var items = <NsgDataItem>[];
  //определяем нет ли в запросе ограничения по id
  var idList = <String>[];
  _getIdFromCompare(idList, dataItem, params.compare);

  if (idList.isEmpty) {
    var valueMap = await box.getAllValues();
    for (var mapKey in valueMap.keys) {
      var item = NsgDataClient.client.getNewObject(dataItem.runtimeType);
      item.fromJson(valueMap[mapKey]!.cast());
      item.storageType = NsgDataStorageType.local;
      if (params.compare.isValid(item)) {
        items.add(item);
      }
    }
  } else {
    var valueMap = await box.getAll(idList);
    for (var mapValue in valueMap) {
      if (mapValue == null) continue;
      var item = NsgDataClient.client.getNewObject(dataItem.runtimeType);
      item.fromJson(mapValue.cast());
      item.storageType = NsgDataStorageType.local;
      if (params.compare.isValid(item)) {
        items.add(item);
      }
    }
  }
  NsgDataClient.client.addItemsToCache(items: items, tag: tag);
  return items;
}