spawnUri静态方法
- Uri uri,
- List<
String> args, - dynamic message, {
- bool paused = false,
- SendPort? onExit,
- SendPort? onError,
- bool errorsAreFatal = true,
- 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库代码的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)
。
如果提供了errorsAreFatal
、onExit
和/或onError
参数,isolate将分别表现得像调用setErrorsFatal、addOnExitListener和addErrorListener一样,并处理相应的参数,在isolate开始运行之前。
您还可以在返回的isolate上调用setErrorsFatal、addOnExitListener和addErrorListener方法,但如果isolate未以paused
启动,它可能在那些方法完成之前已经终止。
如果将checked
参数设置为true
或false
,则新隔离实例将分别在检查模式(启用断言和类型检查)和生产模式(禁用断言和类型检查)下运行代码,如果可能的话。如果省略此参数,则新隔离实例将继承当前隔离实例的值。
在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});