读取文件的Dart字符串插值

时间:2015-04-21 23:14:45

标签: dart

我知道你可以使用字符串插值来引用字符串文字中的对象,但这是否可以通过读取文本文件给出一个字符串?

我的意思是。类似的东西:

Function MyTemplate() {
    return (Context context) {
        return readMyFile(); // String: "My name is ${context.name}"
    }
}

我读过 Can I apply Dart's string interpolation dynamically?

但这似乎仅适用于硬编码字符串。

2 个答案:

答案 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来实现此目标,同时略微提高了性能。该软件包仍处于初级阶段,但是所有功能都经过了测试。如果您有任何建议,请反馈。