invalid_export_of_internal_element 진단: 내부 전용 요소를 공개 API로 내보낼 때

invalid_export_of_internal_element 진단: 내부 전용 요소를 공개 API로 내보낼 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. invalid_export_of_internal_element공개 라이브러리가 @internal로 표시된 선언을 내보내려 할 때 분석기가 알려주는 컴파일 타임 진단이에요. 내부 전용으로 만든 멤버를 패키지의 공개 API 일부로 export하면 안 되니까요.

출처: invalid_export_of_internal_element

본문

설명

@internal 애너테이션으로 표시된 선언을 공개 라이브러리가 export할 때 분석기는 이 진단을 만들어요. 여기서 공개 라이브러리란 패키지의 lib 디렉터리에 있으면서 lib/src 디렉터리 안에는 없는 라이브러리를 말해요.

예시

src 디렉터리의 a.dart 파일에 다음 내용이 있다고 해 볼게요.

import 'package:meta/meta.dart';

@internal class One {}

공개 라이브러리에 있는 아래 코드는 내부에서만 쓰려고 한 이름을 export하고 있기 때문에 이 진단이 나와요.

export 'src/a.dart';

흔한 해결 방법

만약 export가 필요하다면, hide 절을 붙여서 내부 전용 이름을 가려요.

export 'src/a.dart' hide One;

export가 필요 없다면, 그냥 제거하면 돼요.

더 알아보기