メインコンテンツにスキップ

must_return_void

'NativeCallable.listener' に渡された関数の戻り値の型は、'{0}' ではなく 'void' である必要があります。

説明

#

NativeCallable.listener コンストラクタに void を返さない関数を渡すと、アナライザーはこの診断を生成します。

NativeCallable.listener は、どのスレッドからでも呼び出せるネイティブ呼び出し可能オブジェクトを作成します。この呼び出し可能オブジェクトを呼び出すネイティブコードは、呼び出し元を生成したアイソレートにメッセージを返送し、応答を待ちません。そのため、呼び出し可能オブジェクトから結果を返すことはできません。

FFI の詳細については、dart:ffi を使用した C の相互運用 を参照してください。

#

以下のコードは、関数 fvoid ではなく int を返すため、この診断を生成します。

dart
import 'dart:ffi';

int f(int i) => i * 2;

void g() {
  NativeCallable<Int32 Function(Int32)>.listener(f);
}

一般的な修正

#

関数の戻り値の型を void に変更してください。

dart
import 'dart:ffi';

void f(int i) => print(i * 2);

void g() {
  NativeCallable<Void Function(Int32)>.listener(f);
}