Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 建造管柱后更换可变管柱_String_Flutter_Dart_Replace - Fatal编程技术网

String 建造管柱后更换可变管柱

String 建造管柱后更换可变管柱,string,flutter,dart,replace,String,Flutter,Dart,Replace,我试图替换循环中动态生成的字符串中的变量 String url = ""; data.forEach((key, value) { url = "$url&$value=\${$key}"; }); 上面的方法返回如下内容“https://example.com/test.php?user=${id}&pass=${pass}” 我有两个变量,分别是id和pass。但是在我动态生成这个字符串之后,当我打印它时,它不会替换变量 var

我试图替换循环中动态生成的字符串中的变量

String url = "";

data.forEach((key, value) {
      url = "$url&$value=\${$key}";
});
上面的方法返回如下内容“https://example.com/test.php?user=${id}&pass=${pass}”

我有两个变量,分别是id和pass。但是在我动态生成这个字符串之后,当我打印它时,它不会替换变量

var id = 1;
var pass = abc;

String url = "";

data.forEach((key, value) {
      url = "$url&$value=\${$key}";
});

print(url);
它应该回来”https://example.com/test.php?user=1&pass=abc“

正如Dart中的字符串插值是编译时语法。如中简要提到的,字符串插值是在字符串文本上执行的。它不会在常规
字符串
对象上执行

你必须想出另一种方法来做你想做的事。例如:

stringurl=”“;
data.forEach((键,值){
如果(键=“\${id}”){
key=id;
}else if(键=“\${pass}”){
键=通过;
}
url=“$url&$value=$key”;
});
或者,如果您有更多的变量要处理,则可能会更好:

var allowedKeys={
“\${id}”:id,
“\${pass}”:pass,
};
字符串url=“”;
data.forEach((键,值){
键=允许的键[键]??键;
url=“$url&$value=$key”;
});

(顺便说一句,您对“key”和“value”的使用看起来很混乱,与通常的用法相反。)

不使用它只是像这样打印&pass=passURL是我纠正的书写错误,但仍然是相同的问题我的数据变量只是一个类似{id:user,pass:pass}{id}&pass=${pass}的数组如果我直接打印它就可以了,但是如果我用循环动态地构建URL就不行了。主要问题是这能回答你的问题吗。Dart字符串插值是编译时语法;无法动态生成模板字符串。