annotion

topics 500-모바일개발 501 Flutter 503 Dart
types 이론 레퍼런스
tags #dart #annotation #code-generation
references nx006.tistory.com/69 stackoverflow.com/questions/77277048

Annotation과 코드 제너레이션

Dart에서 어노테이션을 활용한 코드 생성 방식에 대한 정리다.

어노테이션이란

메타데이터를 코드에 추가하는 방식이다. @ 기호로 시작한다.

@override
@deprecated
@JsonSerializable()
@riverpod

코드 제너레이션 장단점

장점

  • 보일러플레이트 코드 감소
  • 타입 안정성 향상
  • 실수 방지 (컴파일 타임 체크)

단점

  • 빌드 시간 증가
  • 생성된 코드 디버깅 어려움
  • 학습 곡선

주요 코드 생성 패키지

패키지 용도
json_serializable JSON 직렬화
freezed 불변 데이터 클래스
riverpod_generator Provider 생성
retrofit_generator API 클라이언트
auto_route_generator 라우팅

코드 생성 명령어

# <span id="한번만-빌드"></span>한번만 빌드
dart run build_runner build

# <span id="파일-변경-감지"></span>파일 변경 감지
dart run build_runner watch

# <span id="충돌-해결"></span>충돌 해결
dart run build_runner build --delete-conflicting-outputs

# <span id="캐시-삭제"></span>캐시 삭제
flutter clean
dart run build_runner clean

문제 해결

빌드가 안 될 때

# <span id="1-캐시-삭제"></span>1. 캐시 삭제
flutter clean
dart run build_runner clean

# <span id="2-의존성-재설치"></span>2. 의존성 재설치
flutter pub get

# <span id="3-재빌드"></span>3. 재빌드
dart run build_runner build --delete-conflicting-outputs

흔한 오류들

  • part 파일 없음: dart run build_runner build 먼저 실행
  • 타입 불일치: import 확인, 생성된 파일이 최신인지 확인
  • 버전 충돌: pubspec.lock 삭제 후 flutter pub get

: build_runner watch를 켜놓으면 파일 저장할 때마다 자동으로 코드가 생성된다. 개발할 때 편하다.

관련 문서