본문 바로가기
Flutter/VSCode 에서 Flutter 사용

[Flutter] API 호출 하기 위해 HTTP 패키지 설치, 에러 해결 과정

by 뿌비 2024. 8. 14.
728x90

HTTP를 사용해 API를 호출하기 위해 패키지를 설치하는 과정에서 에러 와의 전쟁이 시작되었다 😱

🔥 설치 과정

1. Dart/Flutter 공식 패키지 다운 사이트 :  https://pub.dev/ 

2. 해당 사이트에서 http 검색 https://pub.dev/packages/http/install 이동 

3. 사이트에 나와있는 대로 pubspec.yaml 파일 dependencies에 아래의 코드를 추가해 주었다 

http: ^1.2.2

설치 과정 중 만난 에러 

A dependency may only have one source 

pubspec.yaml 파일에서 같은 패키지가 여러 소스에서 정의되었을 때 발생한다

Unused import: 'package:http/http.dart'. Try removing the import directive.dartunused_import

코드에서 임포트 한 패키지가 실제로 사용되지 않기 때문에, 이를 제거하라는 경고이다

The imported package 'http' isn't a dependency of the importing package

Flutter 프로젝트에서 http 패키지를 사용하는 코드가 있지만, 이 패키지가 pubspec.yaml 파일의 dependencies 섹션에 정의되어 있지 않다는 것을 의미한다. 주로 pubspec.yaml 파일에 의존성을 추가하지 않거나, 의존성을 추가한 후에 flutter pub get 명령어를 실행하지 않은 경우에 발생한다

Target of URI doesn't exist: 'package:http/http.dart'. Try creating the file referenced by the URI, or try using a URI for a file that does exist

Flutter 프로젝트가 http 패키지를 찾지 못한다는 의미이다. 주로 패키지가 제대로 설치되지 않았거나, 의존성 파일이 업데이트되지 않았을 때 발생한다

zsh: command not found: flutter

Flutter 명령어를 인식하지 못한다는 의미이다. 주로 Flutter가 설치되어 있지 않거나, 설치되어 있더라도 시스템 경로(PATH)에 Flutter 명령어가 올바르게 추가되지 않았을 때 발생 한다


✅  해결  과정

1. Flutter 프로젝트 clean 및 dependency 재설치

flutter clean
flutter pub get

2. VSCode 껐다 다시 켜기

3. pubspec.yaml 파일에 dependencies를 추가하는 방법 대신 아래의 코드로 설치 진행 

dart pub add http 

flutter pub add http

4. Flutter 명령어 인식 못하는 에러를 해결하려고, Flutter SDK가 설치된 디렉터리로 이동 후 Flutter SDK의 최신 버전과 업데이트된 파일을 가져왔다

cd ~/development/flutter
git pull

// 상태 확인
flutter doctor

5. Flutter 설치 경로가 제대로 돼있는지 확인

nano ~/.zshrc
PATH=$PATH:~/development/flutter/bin (경로 확인)
source ~/.zshrc (저장)

위 5개의 방법으로도 해결이 안 돼서 뭐가 문제일까....... 도대체 안 되는 이유가 뭐지???? 싶을 때쯤...

dependencies 섹션에 올바르게 추가하지 않았다는 말을 제대로 이해하게 되었다 👏

🎉  원인 발견...  드디어 해결!  🎉

에러 원인

  • http: ^1.2.2를 flutter: 아래에 넣으면 오류가 발생한다. 왜냐하면 YAML 파일에서 flutter:와 http:가 같은 레벨에 있어야 한다는 규칙을 위반하기 때문이다

올바른 pubspec.yaml 파일 예시

  • dependencies 섹션은 프로젝트에서 사용할 패키지와 그 버전을 정의하는 곳이다
  • dependencies 섹션에서 패키지와 버전을 정의할 때각 패키지를 개별적으로 나열해야 하며, flutter와 http를 같은 레벨에 놓아야 한다
  • flutter는 sdk: flutter로 정의하고, http는 별도로 정의해야 한다
  • 올바른 위치에 작성 후 저장 하니까 에러 없이 설치가 잘 되었다!
dependencies:
  flutter:
    sdk: flutter
    http: ^1.2.2  # 잘못된 위치

dependencies:
  flutter:
    sdk: flutter
  http: ^1.2.2  # 올바른 위치
  cupertino_icons: ^1.0.8  # 추가적인 의존성 예시

pubspec.yaml 파일

728x90