getInitialTripData calls getCurrentLocationData with await but it never prints "coming here 1" and on getCurrentLocationData the function goes on till printing the data and then stuck on return statement i dont know what the issue is
setInitialTripData() async {
print("coming here");
MapLocation startingPoint=await Get.find<LocationService>().getCurrentLocationData();
print("coming here 1");
if (startingPoint != null) {
tripData.startingPoint = startingPoint;
startingPointTextController.text = startingPoint.name;
update();
}
}
Future<MapLocation> getCurrentLocationData()async{
try{
if(!locationAllowed.value){
return null;
}
LocationData position=await _location.getLocation();
List<geo.Placemark> placemark =
await geo.placemarkFromCoordinates(position.latitude, position.longitude);
if(placemark.length==0 || placemark==null){
return null;
}
MapLocation mapLocation=MapLocation(name: "${placemark[0].name.isNotEmpty? placemark[0].name ", ":""}${placemark[0].subAdministrativeArea.isNotEmpty? placemark[0].subAdministrativeArea ", ":""}${placemark[0].isoCountryCode.isNotEmpty? placemark[0].isoCountryCode:""}",latitude: position.latitude,longitude: position.longitude);
print(mapLocation.getDataMap());
return mapLocation;
}
catch(e){
return null;
}
}
CodePudding user response:
getCurrentLocation
has a bunch of chances to return null
, and you're not handling a potential null
return value in setInitialTripData
your code only continues executing if startingPoint != null
it seems.
CodePudding user response:
Well Problem is in your getCurrentLocationData
function because your function is expecting a return value of type MapLocation because you have declared in your function it's return type here
Future<MapLocation> getCurrentLocationData(){}
That's why when you return null
from this function this throws an error and break
your functions.
What you need to do is either remove return type
or make it nullable
whichever works fine like :
Future<MapLocation?> getCurrentLocationData(){}
Or
Future getCurrentLocationData(){}
Apart from that you need to make the receiving
variable nullable
so that it can handle null
data
MapLocation? startingPoint=await Get.find<LocationService>().getCurrentLocationData();