Struct 하위 필드에 어노테이션이 빠진 경우
Struct 하위 필드에 어노테이션이 빠진 경우 (missing_annotation_on_struct_field)
Struct나 Union을 상속받는 클래스의 필드 중, 타입에 어노테이션이 필요한데 그게 빠져 있을 때 나오는 진단이에요. int나 double 같은 Dart 타입은 여러 C 타입을 나타낼 수 있어서, 어떤 C 타입인지 어노테이션으로 알려줘야 해요.
출처: Fields of type '{0}' in a subclass of '{1}' must have an annotation indicating the native type.
본문
이 진단은 Struct나 Union을 상속받는 클래스의 필드 중, 타입에 어노테이션이 필요한데 그게 없을 때 분석기가 만들어내요. Dart 타입 int, double, Array는 여러 C 타입을 나타내는 데 사용되기 때문에, 어노테이션이 그 필드가 나타내는 호환 가능한 C 타입 중 어느 것인지를 지정해 주는 역할을 해요.
FFI에 대해 더 알고 싶다면 C interop using dart:ffi 문서를 참고하세요.
예시
아래 코드는 필드 x에 정수 값의 기반 너비(underlying width)를 나타내는 어노테이션이 없어서 이 진단이 나와요.
import 'dart:ffi';
final class C extends Struct {
external int x;
}
해결 방법
필드에 알맞은 어노테이션을 추가해 주세요.
import 'dart:ffi';
final class C extends Struct {
@Int64()
external int x;
}
더 알아보기
- C interop using dart:ffi — Dart에서 C 코드와 연동하는 법을 다루는 공식 가이드예요.