spawnUri 静态方法
- Uri uri,
- List<
String> args, - dynamic message,
- {bool paused = false,
- SendPort? onExit,
- SendPort? onError,
- bool? errorsAreFatal,
- bool? checked,
- Map<
String, String> ? environment, - @弃用('The packages/ dir is not supported in Dart 2') Uri? packageRoot,
- Uri? packageConfig,
- bool automaticPackageResolution = false,
- @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)
。
如果提供了 errorsAreFatal
,onExit
和/或 onError
参数,隔离将分别像 setErrorsFatal、addOnExitListener 和 addErrorListener 一样处理,其中省略了对应参数并已在隔离开始运行之前进行处理。
您还可以在返回的隔离上调用 setErrorsFatal、addOnExitListener 和 addErrorListener 方法,但如果隔离没有被 paused
启动,它可能已经在这些方法完成之前终止。
如果将 checked
参数设置为 true
或 false
,新隔离将分别以检查模式(启用断言和类型检查)和发布模式(禁用断言和类型检查)运行代码,如果可能。如果省略了参数,新隔离将继承当前隔离的值。
在 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});