search static method

Future<List<FormattedLocation>> search({
  1. required Locale locale,
  2. required String query,
  3. SearchFilters? searchFilters,
})

Implementation

static Future<List<FormattedLocation>> search({
  required Locale locale,
  required String query,
  SearchFilters? searchFilters,
}) async {
  var url = Uri.parse("https://nominatim.openstreetmap.org/search");

  url = url.replace(
    queryParameters: {
      "q": query,
      "format": "jsonv2",
      "namedetails": "1",
      "accept-language": locale.languageCode,
      "addressdetails": "1",
      "polygon_geojson": "1",
      "extratags": "1",
      "polygon_threshold": "1",
      if (searchFilters != null) ...(searchFilters.toJson())
    },
  );
  var response = await http.get(url);
  var parsed = jsonDecode(utf8.decode(response.bodyBytes));
  if (parsed is List) {
    List<FormattedLocation> resList = [];
    for (var loc in parsed) {
      try {
        var res = FormattedLocation.fromJson(loc);
        resList.add(res);
      } catch (e) {
        if (kDebugMode) {
          print(e);
        }
      }
    }
    return Future<List<FormattedLocation>>.value(resList);
  } else {
    throw Exception(parsed);
  }
}