我是Flutter和Dart的新手。我正在遵循免费教程,但是我对在map中的dropdownButton中的item中如何有一个return语句感到困惑。这是如何运作的?我正在寻找有关return语句为何存在以及将其值发送到何处的说明。
我试图查找return语句在地图中的位置,但是我可能对如何问这个问题有误。该代码按给定的方式工作,但是我不确定它如何工作。该代码是否有逐步简化的形式,可能会导致更多的理解。现在,它“已经超过我的头了。”
DropdownButton<String>(
items: _currencies.map(
(String dropDownStringItem) {
// interested in this return statement
return DropdownMenuItem<String>(
value: dropDownStringItem,
child: Text(dropDownStringItem),
);
}
).toList(), //convert to List
onChanged: (String newValueSelected) {
_onDropDownItemSelected(newValueSelected);
},
value: _currentItemSelected,
),
答案 0 :(得分:0)
对于新来的人来说,命名可能会造成混淆,但是让我为您解释一下您发布的代码:
因此,with open('hello.csv', 'r', encoding="latin-1") as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
with open('helloout.csv', 'w', encoding="latin-1") as outfile:
outCSV = csv.writer(outfile,delimiter=',')
for line in readCSV:
new_column_value = func(line[j]) # Your modification function j column number
new_line = line + [new_column_value]
outCSV.writerow(newline)
构造函数希望使用DropdownButton
的列表作为参数,但是在您的情况下,您没有DropdownMenuItem
的列表,而您有DropdownMenuItem
的列表。您需要的是一种将字符串转换为String
的方法,最简单的方法是对字符串执行DropdownMenuItem
,为每个for
创建一个新的DropdownMenuItem
您将其添加到列表中,然后将其发送到String
。像这样:
DropdownButton
上面的代码与您拥有的代码具有相同的功能,但我认为效果不是很好。
您正在使用的函数List<DropdownMenuItem> newGenerated = [];
_currencies.forEach((value) {
DropdownMenuItem newItem = DropdownMenuItem<String>(
value: dropDownStringItem,
child: Text(dropDownStringItem),
);
newGenerated.add(newItem)
}
DropdownButton<String>(
items: newGenerated, //convert to List
onChanged: (String newValueSelected) {
_onDropDownItemSelected(newValueSelected);
},
value: _currentItemSelected,
),
用于将对象列表转换为其他元素的map
,将函数应用于将要转换的列表的每个元素。
请记住,映射转换为Iterable
而不是列表(您无法将Iterable
转换为Iterable
),幸运的是List
还有另外一件事称为Iterable
的方法将其转换为toList()
。
现在,在您的情况下,必须转换的列表是List
,即要应用的功能:
_currencies
(String dropDownStringItem) {
// interested in this return statement
return DropdownMenuItem<String>(
value: dropDownStringItem,
child: Text(dropDownStringItem),
);
将采用dropDownStringItem
中每个元素的值。
_currencies
将返回转换后的对象
希望这会有所帮助。