El tipo de argumento 'Cadena' no se puede asignar al tipo de parámetro 'Uri'
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"
});
Para mejorar la seguridad de tipos en tiempo de compilación, package:http
0.13.0 introdujo cambios importantes que hicieron que todas las funciones que anteriormente aceptaban Uri
s o String
s ahora acepten solo Uri
s. Deberá usarlo explícitamente Uri.parse
para crear Uri
s a partir de String
s. ( package:http
anteriormente 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.