Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The argument type 'String' can't be assigned to the parameter type 'Uri'

Tags:

http

flutter

dart

I am trying to make an HTTP POST request with the flutter plugin HTTP but I am getting an error of the title. Does anyone know the cause of this since in my other applications this works just perfectly fine?

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"
    });
like image 290
Adventune Avatar asked Mar 04 '21 10:03

Adventune


2 Answers

To improve compile-time type safety, package:http 0.13.0 introduced breaking changes that made all functions that previously accepted Uris or Strings now accept only Uris instead. You will need to explicitly use Uri.parse to create Uris from Strings. (package:http formerly called that internally for you.)

Old Code Replace With
http.get(someString) http.get(Uri.parse(someString))
http.post(someString) http.post(Uri.parse(someString))

(and so on.)

In your specific example, you will need to use:

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",
  });

Edit:

Since I'm still getting upvotes on this answer over a year later, it seems that there are still many people encountering this problem, probably from outdated tutorials. If so, while I appreciate the upvotes, I strongly recommend leaving comments on those tutorials to request that they be updated.

like image 116
jamesdlin Avatar answered Oct 08 '22 21:10

jamesdlin


String url ='example.com';

http.get(Uri.parse(url),

);
like image 18
Tushar Mahmud Avatar answered Oct 08 '22 21:10

Tushar Mahmud