我正在处理需要模板的项目。主模板具有一个指定数据源的导入属性。然后读取数据并使用String.replaceAllMapped将其插入到字符串中。下面的代码可以和File api一起工作,因为它有一个readAsStringSync方法来同步读取文件。我现在想从任何返回Future的任意流中读取数据。String.replaceAllMapped异步结果
如何在此场景中使异步/等待工作? 我也寻找一个异步兼容替换replaceAllMapped,但我还没有找到一个解决方案,不需要与正则表达式多次传递。
这里是我的代码非常简单的例子:
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</";
});
}
用法示例:
print(loadImports("<div import='myfragment.txt'></div>"))
我不知道我理解你想要做什么,那就是,这部分你想用'Future'代替?您在调用'replaceAllMapped'内部读取的文件内容? –
Tonio
没有这样的函数的内置版本,你必须编写一个需要回调函数为异步的函数,就像下面的Tonio一样。 – lrn