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) {}

더 알아보기