Excepción: RangeError (índice): valor no válido: el rango de valores válido está vacío: 0

2 minutos de lectura

Estoy tratando de crear una ruta entre dos ubicaciones en el mapa y obtengo los marcadores en la posición correcta, pero la ruta no se dibuja debido a este error.

setPolylines() async 
{   
  List<PointLatLng> result = await
    polylinePoints.getRouteBetweenCoordinates(
      googleAPIKey,
      SOURCE_LOCATION.latitude, 
      SOURCE_LOCATION.longitude,
      DEST_LOCATION.latitude, 
      DEST_LOCATION.longitude
    );   

    if(result.isNotEmpty){      
      result.forEach((PointLatLng point){
        polylineCoordinates.add(
          LatLng(point.latitude, point.longitude));
      });
    }

    setState(() {
      Polyline polyline = Polyline(
        polylineId: PolylineId("poly"),
        color: Color.fromARGB(255, 40, 122, 198),
        points: polylineCoordinates
      );
      _polylines.add(polyline);    
    });
}

Excepción no controlada: Excepción: RangeError (índice): Valor no válido: el rango de valores válido está vacío: 0

¿Cómo se supone que voy a arreglar esto?

  • ¿Encontraste alguna solución para esto?

    – Dhaval Kansara

    10 de agosto de 2020 a las 8:49

Prueba esto.

 await
    polylinePoints.getRouteBetweenCoordinates(
      googleAPIKey,
      SOURCE_LOCATION.latitude, 
      SOURCE_LOCATION.longitude,
      DEST_LOCATION.latitude, 
      DEST_LOCATION.longitude
    ).then((result){

if(result.isNotEmpty){      
  result.forEach((PointLatLng point){
    polylineCoordinates.add(
      LatLng(point.latitude, point.longitude));
  });
}

setState(() {
  Polyline polyline = Polyline(
    polylineId: PolylineId("poly"),
    color: Color.fromARGB(255, 40, 122, 198),
    points: polylineCoordinates
  );
  _polylines.add(polyline);    
});
   });

  • No, no funcionó. Está lanzando la misma excepción. Lo siento por la respuesta tardía.

    – Jay

    23 de febrero de 2020 a las 6:44

  • ¿Puedes agregar la salida results.toString()?

    – Viren V Varasadiya

    23 de febrero de 2020 a las 6:46

  • ¡¡Si seguro!! Pero, ¿dónde debo agregar result.toString() , porque arroja una excepción en polylinePoints.getRouteBetweenCoordinates y agregué después de eso, entonces no se está imprimiendo.

    – Jay

    23 de febrero de 2020 a las 7:12


  • ¿Se aseguró de que está creando el objeto con éxito (PolylinePoints polylinePoints = PolylinePoints();) y colocando correctamente googleapikey?

    – Viren V Varasadiya

    23 de febrero de 2020 a las 7:15


  • Sí, verifiqué ambas cosas y también verifiqué en el tablero de la API de direcciones, me muestra que se realizó el golpe pero falló

    – Jay

    23 de febrero de 2020 a las 7:36

El error probablemente se deba a que no habilitó la API de indicaciones en su consola de Google, en mi caso, también tuve que configurar mi facturación después de habilitarla para mostrar la ruta. También puede hacer uso del crédito de prueba gratuito de $ 300.

Está recibiendo este error porque {
"error_message": "This API project is not authorized to use this API.",
"routes": [],
"status": "REQUEST_DENIED"
}

Asegúrese de habilitar la API de mapas.

  • ¿Cómo supiste que él está recibiendo este error? Cuando no mencionó en ningún lado !!!

    –Ali Yar Khan

    30 de mayo de 2021 a las 7:07

¿Ha sido útil esta solución?