我知道你可以使用字符串插值来引用字符串文字中的对象,但这是否可以通过读取文本文件给出一个字符串?
我的意思是。类似的东西:Function MyTemplate() {
return (Context context) {
return readMyFile(); // String: "My name is ${context.name}"
}
}
我读过 Can I apply Dart's string interpolation dynamically?
但这似乎仅适用于硬编码字符串。
答案 0 :(得分:1)
字符串插值仅适用于硬编码字符串。您需要构建自己的解决方案或使用现有模板包之一。
答案 1 :(得分:0)
使用核心库中的splitMapJoin 方法的简单解决方案:
String inter(String format, Map<String, dynamic> sub ,{String placeholder = ""}){
return format.splitMapJoin(RegExp(r'{.*?}'),
onMatch: (m) => sub[m.group(0).substring(1, m.group(0).length - 1)].toString() ?? placeholder,
onNonMatch: (n) => n);
}
还有一个package来处理这个问题。
但是,这些解决方案对于我的应用程序并不令人满意,我的应用程序还需要从用户提供的文件中插入字符串。由于在这种情况下可以做出较少的假设,因此希望可以从输入字符串中检测到错误。因此,我开发了another package来实现此目标,同时略微提高了性能。该软件包仍处于初级阶段,但是所有功能都经过了测试。如果您有任何建议,请反馈。