带有项目的地图中的返回语句:在 Flutter DropdownButton 中,为啥以及如何工作
Posted
技术标签:
【中文标题】带有项目的地图中的返回语句:在 Flutter DropdownButton 中,为啥以及如何工作【英文标题】:Return statement within a map with items: within Flutter DropdownButton, Why and How it works带有项目的地图中的返回语句:在 Flutter DropdownButton 中,为什么以及如何工作 【发布时间】:2019-09-13 01:10:03 【问题描述】:我是 Flutter 和 Dart 的新手。我正在关注一个免费教程,但我很困惑如何在项目中的地图中存在 return 语句:在 DropdownButton 中。这是如何运作的?我正在寻找关于为什么 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,
),
【问题讨论】:
如果任何一个答案对您有用,您应该接受一个。谢谢 【参考方案1】:命名可能会让新手感到困惑,但让我为您解释一下您发布的代码:
所以DropdownButton
构造函数期望DropdownMenuItem
列表作为参数,但在您的情况下,您没有DropdownMenuItem
列表,您有String
列表。您需要一种将字符串转换为DropdownMenuItem
的方法,最简单的方法是在字符串上执行for
,为您拥有的每个String
创建一个新的DropdownMenuItem
,将其添加到列表中然后发送到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
,对列表中要转换的每个元素应用函数。
要记住一件事,map 转换为 Iterable
而不是 List(你不能将 Iterable
转换为 List
),幸运的是 Iterable
有另一种称为 toList()
的方法可以转换将其转换为List
。
现在,在您的情况下,必须转换的列表是 _currencies
,即应用的函数:
(String dropDownStringItem)
// interested in this return statement
return DropdownMenuItem<String>(
value: dropDownStringItem,
child: Text(dropDownStringItem),
);
dropDownStringItem
将获取_currencies
中每个元素的值。
return DropdownMenuItem ...
将返回转换后的对象
希望这会有所帮助。
【讨论】:
以上是关于带有项目的地图中的返回语句:在 Flutter DropdownButton 中,为啥以及如何工作的主要内容,如果未能解决你的问题,请参考以下文章