NativeCallable<T extends Function>.isolateLocal 构造函数

NativeCallable<T extends Function>.isolateLocal(
  1. @DartRepresentationOf("T") Function callback,
  2. {Object? exceptionalReturn}
)

创建一个 NativeCallable,它必须在与之创建的相同线程上调用。

如果 callback 抛出异常,则本地函数将返回 exceptionalReturn,该值必须可以赋值给 callback 的返回类型。

返回的函数地址只能在当前 isolate 的 mutator(主)线程上调用。如果在任何其他线程上调用,它将终止进程。使用 NativeCallable.listener 创建可以在任何线程上调用的回调。

Pointer.fromFunction 不同,NativeCallable 可以从任何 Dart 函数或闭包创建,而不仅仅是静态或顶层函数。

当不再需要此回调时,必须对其进行 close。创建回调的 Isolate 将在 close 被调用之前保持存活。在调用 NativeCallable.close 后,从原生代码调用 nativeFunction 将导致未定义行为。

实现

factory NativeCallable.isolateLocal(
    @DartRepresentationOf("T") Function callback,
    {Object? exceptionalReturn}) {
  throw UnsupportedError("NativeCallable cannot be constructed dynamically.");
}