saveCurrentLocation method
Future<void>
saveCurrentLocation(
- PlaceDetails? selectedPlace, {
- Prediction? searchedItem,
- dynamic onDecodeAddress()?,
Implementation
Future<void> saveCurrentLocation(
PlaceDetails? selectedPlace, {
Prediction? searchedItem,
Function(UFUAddressModel?)? onDecodeAddress,
}) async {
UFUtils.hideKeyboard();
if (selectedPlace == null && searchedItem == null) return;
Location? sLocation = selectedPlace?.geometry?.location;
if (searchedItem != null) {
Map<String, dynamic> addressComponent = {"address_components": []};
if (searchedItem.terms?.isNotEmpty ?? false) {
for (var element in selectedPlace?.addressComponents ?? []) {
addressComponent["address_components"].add(element.toJson());
}
}
_geocodingResult = GeocodingResult.fromJson({
"geometry": {
"location": {"lat": sLocation?.lat, "lng": sLocation?.lng},
},
"place_id": searchedItem.placeId,
'formatted_address': searchedItem.description,
...addressComponent,
});
}
try {
String? city;
String? state;
String? country;
String? postcode;
for (var component in _geocodingResult?.addressComponents ?? []) {
if (component.types?.contains('locality') ?? false) {
city = component.longName;
} else if (component.types?.contains('administrative_area_level_1') ??
false) {
state = component.longName;
} else if (component.types?.contains('country') ?? false) {
country = component.longName;
} else if (component.types?.contains('postal_code') ?? false) {
postcode = component.longName;
}
}
debugPrint(
"selectedLocLatLng----> ${_geocodingResult?.geometry?.location.lat}----${_geocodingResult?.geometry?.location.lng}",
);
UFUAddressModel address = UFUAddressModel();
address
..placeId = _geocodingResult?.placeId
..address = _geocodingResult?.formattedAddress
..completeAddress = _geocodingResult?.formattedAddress
..address1 = _geocodingResult?.formattedAddress
..address2 = null
..latitude = _geocodingResult?.geometry?.location.lat
..longitude = _geocodingResult?.geometry?.location.lng
..city = city
..state = state
..country = country
..postcode = postcode;
onDecodeAddress?.call(address);
} catch (e) {
UFUtils.handleError(e);
}
}