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