import 'dart:convert'; import 'package:http/http.dart' as http; import '../../config/const.dart'; import '../../models/map/address/AdressResponse.dart'; import '../../models/map/place/PlaceDetails.dart'; import '../../models/map/place/PlacesResponse.dart'; import '../../models/utils/api_response.dart'; class MapServices{ Future> getAdress(String latitude,String longitude) async { var statusCode = -1; final queryParameters = {'latlng': '$latitude,$longitude', 'key': apiKey,'language':'en'}; return await http.get(Uri.https('maps.googleapis.com', 'maps/api/geocode/json', queryParameters), headers: { 'Content-type': 'application/json', 'Accept': 'application/json' }).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); AdressResponseModel adress = AdressResponseModel.fromJson(jsonData); return APIResponse(statusCode: statusCode, data: adress); } return APIResponse(statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((e) => APIResponse( statusCode: statusCode, errorMessage: e.toString())); } Future> search(String query) async { var statusCode = -1; final queryParameters = {'input': query, 'key': apiKey}; return await http.get(Uri.https('maps.googleapis.com', 'maps/api/place/autocomplete/json', queryParameters), headers: { 'Content-type': 'application/json', 'Accept': 'application/json' }).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); PlacesResponseModel adress = PlacesResponseModel.fromJson(jsonData); return APIResponse(statusCode: statusCode, data: adress); } return APIResponse(statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((e) => APIResponse( statusCode: statusCode, errorMessage: e.toString())); } Future> searchById(String id) async { var statusCode = -1; final queryParameters = {'place_id': id, 'key': apiKey,'fields':"geometry"}; return await http.get(Uri.https('maps.googleapis.com', 'maps/api/place/details/json', queryParameters), headers: { 'Content-type': 'application/json', 'Accept': 'application/json' }).then((data) async { statusCode = data.statusCode; if (data.statusCode == 200 || data.statusCode == 201) { final jsonData = json.decode(data.body); PlaceDetails address = PlaceDetails.fromJson(jsonData); return APIResponse(statusCode: statusCode, data: address); } return APIResponse(statusCode: statusCode, errorMessage: 'Please check your info'); }).catchError((e) => APIResponse( statusCode: statusCode, errorMessage: e.toString())); } }