fetchPlaceDetailFromId function
Implementation
Future<Address?> fetchPlaceDetailFromId(
http.Client client,
String apiKey,
String placeId, {
String? languageCode,
String? sessionToken,
}) async {
final queryParams = {
if (languageCode != null) 'languageCode': languageCode,
if (sessionToken != null) 'sessionToken': sessionToken,
};
String request = "$baseUrl/places/$placeId";
var headers = {
"X-Goog-Api-Key": apiKey,
"X-Goog-FieldMask":
"name,displayName,formattedAddress,addressComponents,shortFormattedAddress,location",
};
final response = await client.get(
Uri.parse(request).replace(queryParameters: queryParams),
headers: headers,
);
final result = jsonDecode(
utf8.decode(response.bodyBytes, allowMalformed: true),
);
if (response.statusCode == 200) {
return Address.fromJson(result);
} else if (response.statusCode == 400 && result["error"] != null) {
var exception = ApiException.fromJson(result);
throw exception;
} else {
log.e("Failed fetching place $placeId", result["error"]["details"]);
throw Exception('Failed to fetch place details for $placeId.');
}
}