Sto lavorando su un progetto che richiede modelli. Il modello principale ha un attributo di importazione che specifica l'origine dati. I dati vengono quindi letti e inseriti nella stringa utilizzando String.replaceAllMapped. Il seguente codice funziona correttamente con File api perché ha un metodo readAsStringSync per leggere il file in modo sincrono. Ora voglio leggere da qualsiasi flusso arbitrario che restituisce un futuro.String.replaceAllMapped con risultato asincrono
Come eseguire lavori asincroni/attendi in questo scenario? Ho anche cercato una sostituzione async compatibile per replaceAllMapped ma non ho trovato una soluzione che non richieda più passaggi con la regex.
Ecco un esempio molto semplificato del mio codice:
String loadImports(String content){
RegExp exp = new RegExp("import=[\"\']([^\"\']*)[\"\']>\\s*<\/");
return content.replaceAllMapped(exp, (match) {
String filePath = match.group(1);
File file = new File(filePath);
String fileContent = file.readAsStringSync();
return ">$fileContent</";
});
}
Esempio di utilizzo:
print(loadImports("<div import='myfragment.txt'></div>"))
io non sono sicuro di capire che cosa si vuole fare, cioè, quale parte si fa vuoi sostituire con un 'Future'? Il contenuto del file che hai letto all'interno della chiamata a 'replaceAllMapped'? –
Tonio
Non esiste una versione integrata di tale funzione, è necessario scriverne una che si aspetti che la funzione di callback sia asincrona, come Tonio di seguito. – lrn