I want to pass to lists which are destinations and coordinates. I had to separate them because I have to scrape the data first then geocode them. Here is my code:
Future<void> getCoordinates()async{
for(int i=1 ; i < destination.length ; i++){
coordinates = await locationFromAddress('${destination.elementAt(i).destination}');
location.add(coordinates);
print('$i $location');
}
}
Heres a snippet to go from my first screen to second screen:
return GestureDetector(
onTap: (){
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => PlaceInfo(packageModel: destination[index], location: location[index])),
);
},
Here is a snippet of my second screen:
final PackageModel packageModel;
final Location location;
PlaceInfo({Key? key,required this.location, required this.packageModel,}):super(key:key);
@override
State<PlaceInfo> createState() => _PlaceInfoState();
}
class _PlaceInfoState extends State<PlaceInfo> {
//late double _latitude = 2.8025;
//late double _longitude = 101.7989;
late double _latitude = widget.location.latitude;
late double _longitude = widget.location.longitude;
When I do this it shows in the app the red error which is
type 'List<Location>' is not a subtype of type 'Location'
Can somebody please help
2
Answers
May be as per your error in my opinion one potential solution is when you are passing arguments to next screen you need to change the type of the argument same as below
You just need to add as Location after the location[index]
And another solution is you can declare your List location variable as
The error lies in this:
location.add(coordinates);
.It appears that
coordinates
itself is aList
and you are trying to add it as an element.Try to first create a
Location
0bject fromcoordinates
and then add that object to the listlocation
.Hope it helps!