skip to Main Content

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


  1. 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

     Navigator.of(context).push(
                        MaterialPageRoute(builder: (context) => PlaceInfo(packageModel: destination[index], location: (location[index] as Location))),
                      );
    

    You just need to add as Location after the location[index]

    And another solution is you can declare your List location variable as

    List<Location> location.....
    
    Login or Signup to reply.
  2. The error lies in this: location.add(coordinates);.

    It appears that coordinates itself is a List and you are trying to add it as an element.

    Try to first create a Location 0bject from coordinates and then add that object to the list location.

    Hope it helps!

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search