跳到主要內容

must_return_void

傳遞給 'NativeCallable.listener' 的函式的返回型別必須是 'void' 而不是 '{0}'。

描述

#

當您向 NativeCallable.listener 建構函式傳遞一個不返回 void 的函式時,分析器會生成此診斷訊息。

NativeCallable.listener 建立一個可從任何執行緒呼叫的原生可呼叫物件。呼叫該原生可呼叫物件的原生程式碼會將訊息傳送回建立該可呼叫物件的隔離區,並且不等待響應。因此,無法從可呼叫物件返回結果。

有關 FFI 的更多資訊,請參閱 使用 dart:ffi 進行 C 互操作

示例

#

以下程式碼會生成此診斷訊息,因為函式 f 返回 int 而不是 void

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);
}