Struct 하위 필드에 어노테이션이 빠진 경우

Struct 하위 필드에 어노테이션이 빠진 경우 (missing_annotation_on_struct_field)

StructUnion을 상속받는 클래스의 필드 중, 타입에 어노테이션이 필요한데 그게 빠져 있을 때 나오는 진단이에요. intdouble 같은 Dart 타입은 여러 C 타입을 나타낼 수 있어서, 어떤 C 타입인지 어노테이션으로 알려줘야 해요.

출처: Fields of type '{0}' in a subclass of '{1}' must have an annotation indicating the native type.

본문

이 진단은 StructUnion을 상속받는 클래스의 필드 중, 타입에 어노테이션이 필요한데 그게 없을 때 분석기가 만들어내요. 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;
}

더 알아보기