본문 바로가기
Dart/Flutter

[Flutter] 어노테이션(annotation) `@` 사용해보기

by 검은냥냥이 2023. 3. 19.

어노테이션은 개발자가 소스 코드를 정적으로 분석하여 추론할 수 없는 의도를 표현하는 데 사용할 수 있는 주석입니다.

어노테이션 종류

@alwaysThrows

해당 함수가 항상 예외를 던진다는 것을 나타내는 어노테이션입니다. 이 어노테이션이 붙은 함수를 오버라이드하는 함수도 동일한 계약을 준수해야 합니다.

@doNotStore

해당 메서드, 게터, 혹은 최상위 게터나 함수에서 반환된 값을 필드나 최상위 변수에 저장하지 말아야 한다는 것을 나타내는 어노테이션입니다.

@experimental

해당 라이브러리나 클래스의 API가 실험적이며 언제든지 변경될 수 있다는 것을 나타내는 어노테이션입니다. 이 어노테이션이 붙은 API가 변경되어도 해당 패키지의 버전이 업데이트되지 않아도 됩니다.

@factory

해당 인스턴스나 스태틱 메서드가 반드시 새로운 객체를 반환하거나 null을 반환해야 함을 나타내는 어노테이션입니다.

@immutable

해당 클래스와 그 하위 클래스들이 불변 객체여야 한다는 것을 나타내는 어노테이션입니다.

@internal

해당 선언이 패키지 외부에서 사용되지 않아야 하며, 해당 패키지의 공개 API가 아니라는 것을 나타내는 어노테이션입니다.

@isTest

해당 함수가 단일 테스트를 실행하는 함수임을 나타내는 어노테이션입니다.

@isTestGroup

해당 함수가 여러 테스트를 그룹으로 실행하는 함수임을 나타내는 어노테이션입니다.

@literal

해당 상수 생성자가 const 키워드를 사용해야 한다는 것을 나타내는 어노테이션입니다.

@mustCallSuper

해당 인스턴스 메서드가 오버라이드되는 메서드에서는 반드시 super 메서드를 호출해야 한다는 것을 나타내는 어노테이션입니다.

@nonVirtual

해당 인스턴스 멤버가 서브타입에서 오버라이드되지 않아야 한다는 것을 나타내는 어노테이션입니다.

@optionalTypeArgs

해당 클래스, 믹스인, 익스텐션, 함수, 메서드, 혹은 타입 정의에서 선언된 제너릭 타입 인자가 옵셔널임을 나타내는 어노테이션입니다.

@protected

해당 인스턴스 멤버가 해당 클래스나 믹스인의 인스턴스와 하위 타입에서만 접근 가능하다는 것을 나타내는 어노테이션입니다.

@required

해당 메서드나 함수에서 선택적 매개변수로 정의된 매개변수가 반드시 인자로 전달되어야 한다는 것을 나타내는 어노테이션입니다.

@sealed

해당 클래스가 슈퍼타입으로 사용될 수 없다는 것을 나타내는 어노테이션입니다.

@UseResult

해당 메서드, 필드, 혹은 게터에서 반환값이 사용되어야 한다는 것을 나타내는 어노테이션입니다.

@visibleForOverriding

해당 인스턴스 멤버가 해당 라이브러리 외부에서는 접근할 수 없지만, 하위 클래스에서 오버라이드하여 사용할 수 있다는 것을 나타내는 어노테이션입니다.

@visibleForTesting

해당 선언이 테스트 코드에서 사용될 수 있도록 일반적으로 허용되지 않는 범위에서 공개되었다는 것을 나타내는 어노테이션입니다.

728x90
사업자 정보 표시
레플라 | 홍대기 | 경기도 부천시 부일로 519 화신오피스텔 1404호 | 사업자 등록번호 : 726-04-01977 | TEL : 070-8800-6071 | Mail : support@reafla.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기