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