autocomplete static method
- {required String query,
- required List<
TaxonomyName> taxonomyNames, - required OpenFoodFactsLanguage language,
- User? user,
- int size = 10,
- Fuzziness fuzziness = Fuzziness.none,
- UriProductHelper uriHelper = uriHelperFoodProd}
Returns a list of suggestions.
/!\ For brands, language must be English.
Implementation
static Future<AutocompleteSearchResult> autocomplete({
required String query,
required final List<TaxonomyName> taxonomyNames,
required final OpenFoodFactsLanguage language,
final User? user,
final int size = 10,
final Fuzziness fuzziness = Fuzziness.none,
final UriProductHelper uriHelper = uriHelperFoodProd,
}) async {
query = query.trim();
if (query.isEmpty) {
throw Exception('Query cannot be empty!');
}
final List<String> taxonomyTags = <String>[];
for (final TaxonomyName taxonomyName in taxonomyNames) {
taxonomyTags.add(taxonomyName.offTag);
}
if (taxonomyTags.isEmpty) {
throw Exception('Taxonomies cannot be empty!');
}
final Uri uri = uriHelper.getUri(
path: '/autocomplete',
forcedHost: _getHost(uriHelper),
queryParameters: <String, dynamic>{
'q': query,
'taxonomy_names': taxonomyTags.join(','),
'lang': language.offTag,
'size': size.toString(),
'fuzziness': fuzziness.offTag,
},
);
final Response response = await HttpHelper().doGetRequest(
uri,
user: user,
uriHelper: uriHelper,
);
return AutocompleteSearchResult.fromJson(
HttpHelper().jsonDecode(utf8.decode(response.bodyBytes)),
);
}