spawnUri 静态方法

Future<Isolate> spawnUri(
  1. Uri uri,
  2. List<String> args,
  3. dynamic message,
  4. {bool paused = false,
  5. SendPort? onExit,
  6. SendPort? onError,
  7. bool? errorsAreFatal,
  8. bool? checked,
  9. Map<String, String>? environment,
  10. @弃用('The packages/ dir is not supported in Dart 2') Uri? packageRoot,
  11. Uri? packageConfig,
  12. bool automaticPackageResolution = false,
  13. @Since("2.3") String? debugName}
)

创建并启动一个运行指定 URI 库中代码的隔离。

隔离开始执行给定 URI 库中的顶层 main 函数。

目标 main 函数必须可以以零个、一个或两个参数调用。示例

  • main()
  • main(args)
  • main(args, message)

当存在时,参数 args 被设置为提供的 args 列表。当存在时,参数 message 被设置为初始 message

如果将 paused 参数设置为 true,隔离将以暂停状态启动,就像通过初始调用 isolate.pause(isolate.pauseCapability)。要恢复隔离,请调用 isolate.resume(isolate.pauseCapability)

如果提供了 errorsAreFatalonExit 和/或 onError 参数,隔离将分别像 setErrorsFataladdOnExitListeneraddErrorListener 一样处理,其中省略了对应参数并已在隔离开始运行之前进行处理。

您还可以在返回的隔离上调用 setErrorsFataladdOnExitListener 和 addErrorListener 方法,但如果隔离没有被 paused 启动,它可能已经在这些方法完成之前终止。

如果将 checked 参数设置为 truefalse,新隔离将分别以检查模式(启用断言和类型检查)和发布模式(禁用断言和类型检查)运行代码,如果可能。如果省略了参数,新隔离将继承当前隔离的值。

在 Dart2 强模式下,checked 参数仅控制断言,不控制类型检查。

有时可能无法始终尊重 checked 参数。如果隔离代码是预编译的,可能无法动态更改选中模式设置。在这种情况下,checked 参数会被忽略。

警告:目前尚未在所有平台上实现 checked 参数。

如果提供了 packageConfig 参数,则它被用来查找为生成的隔离程序定位的包解析配置文件。

如果提供了 automaticPackageResolution 参数,则生成的隔离程序中的包源位置将自动确定。

环境 是字符串到字符串的映射,隔离程序在查找 String.fromEnvironment 值时使用它。系统还可以将自己的条目添加到环境中。如果省略了 环境,则生成的隔离程序具有与启动隔离程序相同的环境声明。

警告:目前尚未在所有平台上实现 环境 参数。

如果提供了 debugName,则生成的 Isolate 将可以通过此名称在调试器和日志中识别。

返回一个未来实例,如果启动成功则包含一个 Isolate 实例。否则,它将包含一个错误。

实现

external static Future<Isolate> spawnUri(
    Uri uri, List<String> args, var message,
    {bool paused = false,
    SendPort? onExit,
    SendPort? onError,
    bool errorsAreFatal = true,
    bool? checked,
    Map<String, String>? environment,
    @Deprecated('The packages/ dir is not supported in Dart 2')
    Uri? packageRoot,
    Uri? packageConfig,
    bool automaticPackageResolution = false,
    @Since("2.3") String? debugName});