2015-05-26 6 views
11

Voglio costruire e caricare dinamicamente uno script Dart. Come faccio a fare questo?Come posso costruire dinamicamente uno script Dart per spawnUri?

So che posso usare Isolate.spawnUri per caricare dinamicamente uno script Dart. Tuttavia, sono a conoscenza del fatto che posso caricare da file: e http: URI. Ciò significa che ho bisogno di mettere il mio script da qualche parte per essere caricato, che è una complicazione che vorrei evitare.

risposta

15

In Dart SDK 1.10, è ora possibile creare un dato: URI da una stringa e passare i dati: URI per spawnUri.

Ciò significa che è possibile costruire dinamicamente una stringa, in fase di esecuzione, codificarla e caricarla/eseguirla dinamicamente. Neat!

Ecco un esempio.

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

Avviso i dati: URI deve essere della forma:

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

dove DATA è codificato URI per cento.

Inoltre, utf-8 deve essere in minuscolo.