In Dart SDK 1.10, you can now create a data: URI from a String, and pass that data: URI to spawnUri.
This means you can dynamically construct a string, at runtime, encode it, and dynamically load/run it. Neat!
Here's an example.
Your Dart script:
import 'dart:isolate';
main() {
var loadMe = '''
main() {
print('from isolate');
}
''';
var uri = Uri.parse('data:application/dart;charset=utf-8,${Uri.encodeComponent(loadMe)}');
print('loading $uri');
Isolate.spawnUri(uri, null, null);
}
Notice the data: URI must be of the form:
data:application/dart;charset=utf-8,DATA
where DATA
is URI percent encoded.
Also, utf-8
must be lower case.