getObjects method
Implementation
Future<List<AlgoliaQuerySnapshot>> getObjects() async {
assert(queries != null && _queries!.isNotEmpty,
'You require at least one query added before performing `.getObject()`');
var requests = <Map<String, dynamic>>[];
for (var q in _queries!) {
var _q = q;
if (_q.parameters.containsKey('minimumAroundRadius')) {
assert(
(_q.parameters.containsKey('aroundLatLng') ||
_q.parameters.containsKey('aroundLatLngViaIP')),
'This setting only works within the context of a circular geo search, enabled by `aroundLatLng` or `aroundLatLngViaIP`.');
}
if (_q.parameters['attributesToRetrieve'] == null) {
_q = _q._copyWithParameters(<String, dynamic>{
'attributesToRetrieve': const ['*']
});
}
requests.add({
'indexName': q._index,
'params': _encodeMap(q.parameters),
});
}
var response = await _algolia._apiCall(
ApiRequestType.post,
'indexes/*/queries',
data: {
'requests': requests,
'strategy': 'none',
},
);
Map<String, dynamic> body = json.decode(response.body);
if (!(response.statusCode >= 200 && response.statusCode < 300)) {
throw AlgoliaError._(body, response.statusCode);
}
var results = (body['results'] as List).cast<Map<String, dynamic>>();
var snapshots = <AlgoliaQuerySnapshot>[];
if (results.isNotEmpty) {
for (var snap in results) {
snapshots.add(AlgoliaQuerySnapshot._(_algolia, snap['index'], snap));
}
}
return snapshots;
}