Flutter 개발을 하다 보면, pubspec.yaml 파일에서 의존성을 관리하는 과정에서 다양한 에러를 마주칠 수 있습니다. 그 중 "A dependency may only have one source."라는 에러 메시지는 특히 초보 개발자들에게 혼란을 줄 수 있는데요, 이 에러의 원인은 대부분 pubspec.yaml 파일 내에서 의존성(플러그인)의 선언 방법에 있습니다.
에러 원인: 들여쓰기 문제
pubspec.yaml 파일은 Flutter 앱의 메타데이터와 의존성을 관리하는 중요한 파일입니다.
YAML은 공백(들여쓰기)을 사용하여 데이터 구조를 표현하는데, 이 과정에서 들여쓰기가 정확하지 않으면 파서가 올바르게 해석하지 못하고 에러를 발생시킵니다.
"A dependency may only have one source." 에러는 주로 의존성 항목이 올바른 계층 구조로 정리되지 않았을 때 발생합니다. 즉, 의존성 선언이 flutter SDK 선언과 같은 레벨로 들여쓰기 되어 있어서 발생하는 문제입니다.
해결 방법
1. 의존성 선언 확인
pubspec.yaml 파일에서 해당 의존성 선언의 들여쓰기가 올바른지 확인합니다. 의존성은 dependencies: 항목 아래에 들여쓰기를 한 단계 더 해서 추가해야 합니다.
2. 올바른 들여쓰기 예시
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
http: ^0.13.3 # 이처럼 `dependencies` 항목 아래에 적절히 들여쓰기 되어야 합니다.
들여쓰기 규칙
YAML에서는 들여쓰기에 공백 2칸 또는 4칸을 일반적으로 사용합니다.
중요한 것은 일관성입니다. 파일 전체에서 동일한 크기의 공백을 들여쓰기에 사용해야 합니다.
파일 검사
수정 후 pub get 명령어를 다시 실행하여 에러가 해결되었는지 확인합니다.
결론
pubspec.yaml 파일에서 "A dependency may only have one source." 에러를 마주친다면, 대부분의 경우 들여쓰기가 잘못되었기 때문이랍니다.
이는 Flutter 뿐만 아니라 모든 YAML 파일에서 매우 흔하게 발생할 수 있는 실수입니다.
따라서, pubspec.yaml 파일을 수정할 때는 들여쓰기에 특별한 주의를 기울여야 합니다.
'Language > Flutter' 카테고리의 다른 글
[flutter] 플러터 에러 Exception: Unsupported Android Plugin version: 4.1.3 (0) | 2021.05.06 |
---|---|
[flutter] 플러터 에러 "Cannot run with sound null safety" (0) | 2021.05.03 |
[flutter] 플러터AWS 로그인 하기(amplify) #1 (0) | 2021.05.03 |
[flutter] 플러터 어셋에 이미지 추가 시 안 불러와지는 문제 (0) | 2021.04.23 |
[flutter] 앱 실행 시 Splash 만들기 (flutter_native_splash) (0) | 2021.04.14 |