El tipo de argumento 'Cadena' no se puede asignar al tipo de parámetro 'Uri'

Resuelto Adventune asked hace 3 años • 1 respuestas

Estoy intentando realizar una solicitud HTTP POST con el complemento HTTP de flutter, pero aparece un error en el título. ¿Alguien sabe la causa de esto ya que en mis otras aplicaciones funciona perfectamente bien?

await http.post(Uri.encodeFull("https://api.instagram.com/oauth/access_token"), body: {
      "client_id": clientID,
      "redirect_uri": redirectUri,
      "client_secret": appSecret,
      "code": authorizationCode,
      "grant_type": "authorization_code"
    });
Adventune avatar Mar 04 '21 17:03 Adventune
Aceptado

Para mejorar la seguridad de tipos en tiempo de compilación, package:http0.13.0 introdujo cambios importantes que hicieron que todas las funciones que anteriormente aceptaban Uris o Strings ahora acepten solo Uri s. Deberá usarlo explícitamente Uri.parsepara crear Uris a partir de Strings. ( package:httpanteriormente se llamaba así internamente).

Código antiguo Reemplazar con
http.get(someString) http.get(Uri.parse(someString))
http.post(someString) http.post(Uri.parse(someString))

(etcétera.)

En su ejemplo específico, deberá utilizar:

await http.post(
  Uri.parse("https://api.instagram.com/oauth/access_token"),
  body: {
    "client_id": clientID,
    "redirect_uri": redirectUri,
    "client_secret": appSecret,
    "code": authorizationCode,
    "grant_type": "authorization_code",
  });

Editar:

Dado que todavía recibo votos positivos por esta respuesta más de un año después, parece que todavía hay muchas personas que enfrentan este problema, probablemente debido a tutoriales desactualizados. Si es así, aunque agradezco los votos a favor, recomiendo dejar comentarios en esos tutoriales para solicitar que se actualicen.

jamesdlin avatar Mar 04 '2021 10:03 jamesdlin