跳到主要内容

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