본문 바로가기
Flutter/Flutter FAQ

Flutter 아규먼트 타입 'String'은(는) 파라미터 타입 'Uri'에 할당할 수 없습니다., The argument type 'String' can't be assigned to the parameter type 'Uri'

by 베타코드 2023. 7. 17.
반응형

질문


나는 플러그인 HTTP를 사용하여 HTTP POST 요청을 만들려고 하지만 제목의 오류가 발생합니다. 다른 애플리케이션에서는 이 작업이 완벽하게 작동하기 때문에 이것의 원인을 아시는 분은 계신가요?

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

답변


컴파일 타임의 타입 안정성을 향상시키기 위해, package:http 0.13.0에서는 깨진 변경사항을 도입했습니다. 이 변경으로 인해 이전에 UriString을 인수로 받던 모든 함수들은 이제 오직 Uri만을 받습니다. 따라서 String에서 Uri를 명시적으로 생성하기 위해 Uri.parse를 사용해야 합니다. (package:http는 이전에 이를 내부적으로 호출했습니다.)

이전 코드 대체 코드
http.get(someString) http.get(Uri.parse(someString))
http.post(someString) http.post(Uri.parse(someString))

(등등.)

특정 예제에서는 다음을 사용해야 합니다:

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

편집:

이 답변에 여전히 많은 좋아요를 받고 있으므로, 아마도 오래된 튜토리얼로 인해 이 문제를 여전히 겪는 많은 사람들이 있을 것으로 보입니다. 그렇다면, 좋아요를 감사히 받지만, 해당 튜토리얼에 업데이트를 요청하는 댓글을 남기는 것을 강력히 권장합니다.

반응형

댓글