native_field_missing_type 진단: native 타입을 추론할 수 없어요
native_field_missing_type 진단: native 타입을 추론할 수 없어요
@Native 어노테이션이 붙은 필드의 native 타입을 추론할 수 없을 때 Dart 분석기가 알려주는 native_field_missing_type 진단에 대한 설명이에요. 필드에 쓴 Dart 타입만으로는 native 표현을 하나로 정할 수 없어서 어노테이션에 타입을 명시해야 해요.
본문
설명
@Native 어노테이션이 붙은 필드가 native 타입을 추론하기 위해 어노테이션에 타입 힌트를 요구할 때 분석기가 이 진단을 만들어요.
int나 double 같은 Dart 타입은 여러 가지 native 표현을 가질 수 있어요. 필드에 접근할 때 올바른 load와 store를 생성하려면 native 타입이 컴파일 타임에 이미 알려져 있어야 하므로, 명시적인 타입을 꼭 지정해줘야 해요.
예시
다음 코드는 필드 f의 타입이 int인데(여러 native 표현이 존재하는 타입) Native 어노테이션에 타입 파라미터가 없어서 이 진단을 만들어요.
import 'dart:ffi';
@Native()
external int f;
흔한 해결 방법
이 진단을 고치려면 필드의 native 선언에서 올바른 native 표현을 찾고, 그에 맞는 타입을 어노테이션에 추가해요. 예를 들어 f가 C에서 uint8_t로 선언되었다면, Dart 필드는 다음과 같이 선언하면 돼요.
import 'dart:ffi';
@Native<Uint8>()
external int f;
FFI에 대해 더 자세히 알고 싶다면 dart:ffi를 사용한 C interop 문서를 참고해요.