我可以使用Dart';s字符串动态插值?

我可以使用Dart';s字符串动态插值?,dart,dynamic,string-interpolation,Dart,Dynamic,String Interpolation,(摘自Tristan McNab的Dart讨论邮件列表) 我正在尝试构建一个服务器端MVC框架,并基于模板等生成视图,我想知道是否可以动态应用Dart的字符串插值。例如,这将是我的视图模板: ${ViewData[“Title”]} ${ViewData[“Title”]} 你好,世界 我想使用以下方法应用ViewData变量: 静态字符串applyViewData(字符串html、地图视图数据){ //在此应用插值 } 目前这一切可能吗?我对API的搜索表明它不是 有一个技巧涉及到noS

(摘自Tristan McNab的Dart讨论邮件列表)

我正在尝试构建一个服务器端MVC框架,并基于模板等生成视图,我想知道是否可以动态应用Dart的字符串插值。例如,这将是我的视图模板:


${ViewData[“Title”]}
${ViewData[“Title”]}
你好,世界

我想使用以下方法应用ViewData变量:

静态字符串applyViewData(字符串html、地图视图数据){
//在此应用插值
}
目前这一切可能吗?我对API的搜索表明它不是

有一个技巧涉及到
noSuchMethod()

类模板{
var_语境;
noSuchMethod(方法,args){
如果(!method.startsWith(“get:”)返回super.noSuchMethod(method,args);
返回上下文[method.substring(4)];
}
抽象字符串模板();
字符串计算(上下文){
_上下文=上下文;
试一试{
返回模板();
}最后{u context=null;}
}
}
然后创建一个子类:

类MyTemplate扩展了模板{Template()=>“”“
$title
$title
""";}
最后,使用它

final renderedText=new MyTemplate().evaluate({“title”:“Hello,world”})
(由比尔·黑森发布)

通过将字符串文字包装到以上下文为 一个参数,可以有一个函数:context->String 传递而不是串。如果你需要使用一些字符串 在这些对象上的操作,如concat,可以实现这些 封装此类型的类上的操作(“提升”它们)。这 似乎是一种简单的方法,可以在一个 放置,并提供要在另一个中插值的数据

字符串插值总是动态发生,每次 使用,数据可以很容易地从参数到函数 而不是从词汇语境

例如:

函数MyTemplate(){
返回(上下文){
返回“redsox${context.data}”;
}
}

var templateHere=MyTemplate();

var输出=templateHere(上下文);
您也可以跳过一个间接层次,只创建

String FillMyTemplate(上下文)=>“”
$context.title
''';
并在需要模板的地方使用FillMyTemplate