ambiguous_import 진단: 같은 이름이 여러 라이브러리에 정의됐을 때
ambiguous_import 진단: 같은 이름이 여러 라이브러리에 정의됐을 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. ambiguous_import는 참조한 이름이 두 개 이상의 임포트된 라이브러리에 선언돼 있을 때 분석기가 알려주는 컴파일 타임 진단이에요. 어느 라이브러리의 이름을 쓰려는 건지 알 수 없어서 문제가 돼요.
출처: ambiguous_import
본문
설명
분석기는 어떤 이름이 두 개 이상의 임포트된 라이브러리에 선언돼 있는데 그 이름을 참조할 때 이 진단을 만들어요.
예시
클래스 C를 정의한 라이브러리 a.dart가 있고,
class A {}
class C {}
같은 이름의 다른 클래스를 정의한 라이브러리 b.dart도 있어요.
class B {}
class C {}
아래 코드는 이 진단을 만들어요.
import 'a.dart';
import 'b.dart';
void f(A a, C c1, C c2) {}
흔한 해결 방법
필요 없는 라이브러리가 있다면, 그 라이브러리에 대한 import 지시문을 제거해요.
import 'a.dart';
void f(A a, C c1, C c2) {}
이름이 여전히 두 개 이상의 라이브러리에 정의돼 있다면, 하나의 라이브러리를 제외한 모든 라이브러리의 import 지시문에 hide 절을 붙여요.
import 'a.dart' hide C;
import 'b.dart';
void f(A a, C c1, C c2) {}
이 타입들 중 두 개 이상을 참조해야 한다면, 각 import 지시문에 접두어(prefix)를 붙이고 참조를 적절한 접두어로 한정(qualify)해요.
import 'a.dart' as a;
import 'b.dart' as b;
void f(a.A a, a.C c1, b.C c2) {}