parsePlaceFromJson function
Parses a Places API v2 JSON response into a platform interface inter.Place.
The JSON structure follows: https://developers.google.com/maps/documentation/places/web-service/reference/rest/v1/places#Place
Implementation
inter.Place parsePlaceFromJson(Map<String, Object?> json) {
return inter.Place(
id: json['id'] as String?,
address: json['formattedAddress'] as String?,
addressComponents: _parseAddressComponents(json['addressComponents']),
businessStatus: _parseBusinessStatus(json['businessStatus'] as String?),
attributions: _parseAttributions(json['attributions']),
latLng: _parseLatLng(json['location'] as Map<String, Object?>?),
name: _parseDisplayNameText(json['displayName']),
nameLanguageCode: _parseDisplayNameLanguage(json['displayName']),
openingHours: _parseOpeningHours(
json['regularOpeningHours'] as Map<String, Object?>?,
),
phoneNumber: json['nationalPhoneNumber'] as String?,
photoMetadatas: _parsePhotos(json['photos']),
plusCode: _parsePlusCode(json['plusCode'] as Map<String, Object?>?),
priceLevel: _parsePriceLevel(json['priceLevel'] as String?),
rating: (json['rating'] as num?)?.toDouble(),
types: _parseTypes(json['types']),
userRatingsTotal: (json['userRatingCount'] as num?)?.toInt(),
utcOffsetMinutes: (json['utcOffsetMinutes'] as num?)?.toInt(),
viewport: _parseViewport(json['viewport'] as Map<String, Object?>?),
websiteUri: json['websiteUri'] != null
? Uri.tryParse(json['websiteUri'] as String)
: null,
reviews: _parseReviews(json['reviews']),
// New API fields
displayName: _parseLocalizedText(
json['displayName'] as Map<String, Object?>?,
),
primaryType: json['primaryType'] as String?,
primaryTypeDisplayName: _parseLocalizedText(
json['primaryTypeDisplayName'] as Map<String, Object?>?,
),
shortFormattedAddress: json['shortFormattedAddress'] as String?,
internationalPhoneNumber: json['internationalPhoneNumber'] as String?,
nationalPhoneNumber: json['nationalPhoneNumber'] as String?,
adrFormatAddress: json['adrFormatAddress'] as String?,
editorialSummary: _parseLocalizedText(
json['editorialSummary'] as Map<String, Object?>?,
),
iconBackgroundColor: json['iconBackgroundColor'] as String?,
iconMaskBaseUri: json['iconMaskBaseUri'] as String?,
googleMapsUri: json['googleMapsUri'] as String?,
currentOpeningHours: _parseOpeningHours(
json['currentOpeningHours'] as Map<String, Object?>?,
),
// Boolean service attributes
curbsidePickup: json['curbsidePickup'] as bool?,
delivery: json['delivery'] as bool?,
dineIn: json['dineIn'] as bool?,
reservable: json['reservable'] as bool?,
servesBeer: json['servesBeer'] as bool?,
servesBreakfast: json['servesBreakfast'] as bool?,
servesBrunch: json['servesBrunch'] as bool?,
servesDinner: json['servesDinner'] as bool?,
servesLunch: json['servesLunch'] as bool?,
servesVegetarianFood: json['servesVegetarianFood'] as bool?,
servesWine: json['servesWine'] as bool?,
takeout: json['takeout'] as bool?,
servesCocktails: json['servesCocktails'] as bool?,
servesCoffee: json['servesCoffee'] as bool?,
servesDessert: json['servesDessert'] as bool?,
goodForChildren: json['goodForChildren'] as bool?,
allowsDogs: json['allowsDogs'] as bool?,
restroom: json['restroom'] as bool?,
goodForGroups: json['goodForGroups'] as bool?,
goodForWatchingSports: json['goodForWatchingSports'] as bool?,
liveMusic: json['liveMusic'] as bool?,
outdoorSeating: json['outdoorSeating'] as bool?,
menuForChildren: json['menuForChildren'] as bool?,
pureServiceAreaBusiness: json['pureServiceAreaBusiness'] as bool?,
);
}