2015-05-26 9 views
11

Ich möchte ein Dart-Skript dynamisch erstellen und laden. Wie mache ich das?Wie kann ich dynamisch ein Dart-Skript für spawnUri erstellen?

Ich weiß, dass ich Isolate.spawnUri verwenden kann, um ein Dart-Skript dynamisch zu laden. Mir ist jedoch nur bewusst, dass ich von Datei: und http: URIs laden kann. Das bedeutet, dass ich mein Skript irgendwo zum Laden bringen muss, was eine Komplikation ist, die ich vermeiden möchte.

Antwort

15

In Dart SDK 1.10 können Sie jetzt einen Daten: URI aus einer Zeichenfolge erstellen und diese Daten übergeben: URI an spawnUri.

Dies bedeutet, dass Sie dynamisch eine Zeichenfolge erstellen können, die zur Laufzeit codiert und dynamisch geladen/ausgeführt wird. Ordentlich!

Hier ist ein Beispiel.

Ihr Dart Skript:

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

Beachten Sie die Daten: URI der Form sein muss:

data:application/dart;charset=utf-8,DATA 

wo DATA URI Prozent codiert.

Auch utf-8 muss Kleinbuchstaben sein.

Verwandte Themen