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 = true,
  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库代码的isolate。

该isolate将从给定URI的库中执行顶层main函数。

目标main函数必须能够接受零、一个或两个参数。示例

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

如果存在,参数args将被设置为提供的args列表。如果存在,参数message将被设置为初始message

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

如果提供了errorsAreFatalonExit和/或onError参数,isolate将分别表现得像调用setErrorsFataladdOnExitListeneraddErrorListener一样,并处理相应的参数,在isolate开始运行之前。

您还可以在返回的isolate上调用setErrorsFataladdOnExitListeneraddErrorListener方法,但如果isolate未以paused启动,它可能在那些方法完成之前已经终止。

如果将checked参数设置为truefalse,则新隔离实例将分别在检查模式(启用断言和类型检查)和生产模式(禁用断言和类型检查)下运行代码,如果可能的话。如果省略此参数,则新隔离实例将继承当前隔离实例的值。

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

可能无法始终遵守checked参数。如果隔离实例代码已预先编译,则可能无法动态更改检查模式设置。在这种情况下,将忽略checked参数。

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

如果提供了packageConfig参数,则它用于查找为生成的隔离实例提供的包解析配置文件的位置。

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

environment是一个从字符串到字符串的映射,生成隔离实例在查找String.fromEnvironment值时使用。系统也可能向环境添加自己的条目。如果省略environment,则生成的隔离实例与生成它的隔离实例具有相同的环境声明。

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

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

返回一个future,如果生成成功,则该future将完成一个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});