ffi_native_unexpected_number_of_parameters_with_receiver 진단: Native 애노테이션에 수신자 타입이 빠졌어요

ffi_native_unexpected_number_of_parameters_with_receiver 진단: Native 애노테이션에 수신자 타입이 빠졌어요

Dart 분석기가 내보내는 진단에는 이름이 있어요. ffi_native_unexpected_number_of_parameters_with_receiver네이티브 메서드의 @Native 애노테이션에 쓴 함수 타입에 메서드의 수신자(receiver) 타입이 포함돼 있지 않을 때 분석기가 알려주는 컴파일 타임 진단이에요. 메서드라면 시그니처 맨 앞에 해당 클래스 타입이 와야 해요.

출처: ffi_native_unexpected_number_of_parameters_with_receiver

본문

설명

분석기는 네이티브 메서드의 @Native 애노테이션에 쓰인 타입 인자가 메서드의 수신자 타입을 포함하지 않을 때 이 진단을 만들어요.

예시

아래 코드는 @Native 애노테이션의 타입 인자(Void Function(Double))에 메서드의 수신자 타입이 포함돼 있지 않아서 이 진단을 만들어요.

import 'dart:ffi';

class C {
  @Native<Void Function(Double)>()
  external void f(double x);
}

흔한 해결 방법

첫 번째 파라미터로 네이티브 메서드가 선언된 클래스와 같은 타입을 추가해요.

import 'dart:ffi';

class C {
  @Native<Void Function(C, Double)>()
  external void f(double x);
}

더 알아보기