getPlaceDetailFromId method

Future<Place> getPlaceDetailFromId(
  1. String? placeId
)

Implementation

Future<Place> getPlaceDetailFromId(String? placeId) async {
  String _apiKey =
      _remoteConfigService!.getValue(RemoteConfigKey.googlePlaceAPIKey);

  final request = Uri.parse(
      'https://maps.googleapis.com/maps/api/place/details/json?place_id=$placeId&fields=address_component&key=$_apiKey&sessiontoken=$_sessionToken');
  final response = await client.get(request);

  if (response.statusCode == 200) {
    final result = json.decode(response.body);
    if (result['status'] == 'OK') {
      final components =
          result['result']['address_components'] as List<dynamic>;
      // build result
      final place = Place();
      components.forEach((c) {
        final List type = c['types'];
        if (type.contains('street_number')) {
          place.streetNumber = c['long_name'];
        }
        if (type.contains('route')) {
          place.street = c['long_name'];
        }
        if (type.contains('locality')) {
          place.city = c['long_name'];
        }
        if (type.contains('postal_code')) {
          place.zipCode = c['long_name'];
        }
      });
      return place;
    }
    throw Exception(result['error_message']);
  } else {
    throw Exception('Failed to fetch suggestion');
  }
}