Flutter Dart:如何强制变量上的字符串插值

Flutter Dart:如何强制变量上的字符串插值,flutter,dart,Flutter,Dart,我有一个变量,它包含一个带有插值变量的字符串。在下面的代码中,该变量是template。当我将这个变量传递给generateString函数时,我想对它应用字符串插值,因为插值变量所需的值仅在generateString函数中可用 void main() { String template = '<p>\${name}</p>'; var res = generateString(template); } generateString(template) {

我有一个变量,它包含一个带有插值变量的字符串。在下面的代码中,该变量是template。当我将这个变量传递给generateString函数时,我想对它应用字符串插值,因为插值变量所需的值仅在generateString函数中可用

void main() {
  String template = '<p>\${name}</p>';
  var res = generateString(template);
}

generateString(template) {
  var name = 'abc';
  print(template);
  return template;
}
void main(){
字符串模板=“\${name}

”; var res=发电成本(模板); } 生成约束(模板){ 变量名称='abc'; 打印(模板); 返回模板; }
问题是,当我在generateString fn中打印并返回模板时,我得到的是
${name}

,而不是
abc

。有没有一种方法可以明确地告诉省道进行字符串插值

我是个新手。我不知道这是否可能实现。请建议我怎么做

编辑:根据其他用户的输入,我想澄清一下所呈现的场景。模板变量的值不是字符串文字。作为用户输入,我从用户界面中获取。为了简化代码,我在这里将其显示为字符串文本。此外,请考虑我的方案中名称和模板不在同一范围内。

< P> Walter White。 您必须将变量
name
定义为全局变量,这样它就可以在这里为您“烹饪”字符串


您必须将变量
name
定义为全局变量,以便它可以为您“烹饪”字符串

我没有完全理解您的问题,也许这会有所帮助

void main() {
  print(generateString('abc')); //<p>abc</p>
}

generateString(String template) {
  return r"<p>" "$template" r"</p>";
}
void main(){
打印(generateString('abc');//abc

} generateString(字符串模板){ 返回r“”$template“r”

”; }
我没有完全理解你的问题,也许这会有所帮助

void main() {
  print(generateString('abc')); //<p>abc</p>
}

generateString(String template) {
  return r"<p>" "$template" r"</p>";
}
void main(){
打印(generateString('abc');//abc

} generateString(字符串模板){ 返回r“”$template“r”

”; }
如果模板和变量在同一范围内,它将按预期工作

// evaluate variable inside ${}
var sport = 'basketball';
String template = 'I like <p>${sport}</p>';
print(template);
//计算${}内的变量
var sport=‘篮球’;
字符串模板='I like${sport}

'; 打印(模板);
如果模板和变量在同一范围内,它将按预期工作

// evaluate variable inside ${}
var sport = 'basketball';
String template = 'I like <p>${sport}</p>';
print(template);
//计算${}内的变量
var sport=‘篮球’;
字符串模板='I like${sport}

'; 打印(模板);
到目前为止,其他答案都是错误的

字符串插值(查找$等)仅在从源代码编译到内存中的值时发生。如果这个字符串反过来也有$,它就不再特别了


通过原始编译步骤触发插值是不可能的。您可以编写一个模板系统,在值中查找类似于
{{name}
的内容,并将其替换为
name

的当前值。到目前为止,其他答案都是错误的

字符串插值(查找$等)仅在从源代码编译到内存中的值时发生。如果这个字符串反过来也有$,它就不再特别了


通过原始编译步骤触发插值是不可能的。您可以编写一个模板系统,在值中查找类似
{{name}
的内容,并将其替换为当前值
name

您的模板应位于“generateString”内,然后传递参数“name”。现在,您的generateString绝对不会返回与您作为参数传递的内容完全相同的内容。您的模板应该位于“generateString”中,然后传递参数“name”。现在,generateString绝对不会返回与您作为参数传递的内容完全相同的内容。感谢您解释为什么字符串插值在这种情况下不起作用。感谢您解释为什么字符串插值在这种情况下不起作用。不,这不起作用:模板正在作为编译的结果进行处理。这不是OP想要的。不,这不起作用:模板是编译的结果。这不是OP想要的。