autocomplete static method

Future<AutocompleteSearchResult> autocomplete(
  1. {required String query,
  2. required List<TaxonomyName> taxonomyNames,
  3. required OpenFoodFactsLanguage language,
  4. User? user,
  5. int size = 10,
  6. Fuzziness fuzziness = Fuzziness.none,
  7. 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)),
  );
}