In this code i am getting an error 'The operator '[]' isn't defined for the type 'Object'.'

Viewed 24
              final messages1 = snapshot.data?.docs;
              _markers.clear();
              no_of_coordinates = 0;
              _initialPosition = CameraPosition(target: LatLng(plat, plong), zoom : 15.5);
              for (var message in messages1!) {

                double distanceInKMeters = getDistanceFromLatLonInKm(plat, plong, double.parse(message.data()!['latitude']), double.parse(message.data()!['longitude']));
                if(distanceInKMeters <= 0.5) {
                  _markers.add(
                    Marker(
                      //markerId: MarkerId('dubai'), double.parse(message.data()['longitude'])
                      position: LatLng(double.parse(message.data()!['latitude']), double.parse(message.data()!['longitude'])),
                      infoWindow: InfoWindow(title: 'Ambulance',  snippet: message.data()!['address']),
                      markerId: MarkerId("Ambulance"),
                    ),
                  );
                  print(message.data()!['latitude'] + " " + message.data()!['longitude']);
                }
                print(distanceInKMeters.toString()+ " " + message.data()!['latitude']+ " " + message.data()!['longitude']);
              }
            }

on the double distanceInKMeters variable earlier i was getting an error regarding null seafty, after fixing that error I am getting an error that The operator '[]' isn't defined for the type 'Object'.

1 Answers

For it to work I had to modifiy

message.data()!['latitude']

to

(message.data() as  Map<String, dynamic>)!['latitude']

Reason

message.data() is not mapped, we can map this by using message.data() as Map<String, dynamic>

Related