spawnUri method Null safety

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. @Deprecated('The packages/ dir is not supported in Dart 2') Uri? packageRoot,
  11. Uri? packageConfig,
  12. bool automaticPackageResolution = false,
  13. @Since("2.3") String? debugName}
)

Creates and spawns an isolate that runs the code from the library with the specified URI.

The isolate starts executing the top-level main function of the library with the given URI.

The target main must be callable with zero, one or two arguments. Examples:

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

When present, the parameter args is set to the provided args list. When present, the parameter message is set to the initial message.

If the paused parameter is set to true, the isolate will start up in a paused state, as if by an initial call of isolate.pause(isolate.pauseCapability). To resume the isolate, call isolate.resume(isolate.pauseCapability).

If the errorsAreFatal, onExit and/or onError parameters are provided, the isolate will act as if, respectively, setErrorsFatal, addOnExitListener and addErrorListener were called with the corresponding parameter and was processed before the isolate starts running.

You can also call the setErrorsFatal, addOnExitListener and addErrorListener methods on the returned isolate, but unless the isolate was started as paused, it may already have terminated before those methods can complete.

If the checked parameter is set to true or false, the new isolate will run code in checked mode (enabling asserts and type checks), respectively in production mode (disabling asserts and type checks), if possible. If the parameter is omitted, the new isolate will inherit the value from the current isolate.

In Dart2 strong mode, the checked parameter only controls asserts, but not type checks.

It may not always be possible to honor the checked parameter. If the isolate code was pre-compiled, it may not be possible to change the checked mode setting dynamically. In that case, the checked parameter is ignored.

WARNING: The checked parameter is not implemented on all platforms yet.

If the packageConfig parameter is provided, then it is used to find the location of a package resolution configuration file for the spawned isolate.

If the automaticPackageResolution parameter is provided, then the location of the package sources in the spawned isolate is automatically determined.

The environment is a mapping from strings to strings which the spawned isolate uses when looking up String.fromEnvironment values. The system may add its own entries to environment as well. If environment is omitted, the spawned isolate has the same environment declarations as the spawning isolate.

WARNING: The environment parameter is not implemented on all platforms yet.

If debugName is provided, the spawned Isolate will be identifiable by this name in debuggers and logging.

Returns a future that will complete with an Isolate instance if the spawning succeeded. It will complete with an error otherwise.

Implementation

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});