方法elementAt(),带索引但不带listview.builder



如果我需要在没有listView.builder的情况下使用索引,我如何从映射中获取所有元素?

我创建了下拉菜单,当我进入时,它使用DropDownItem((小部件的map()方法创建了列表。我正在尝试使用它,但获取原始字符串数据,但不应该这样。此外,API正在处理websockets,它返回Map,如{2: GMT +02:00, 3: GMT +03:00},(它返回Object,但我需要用作字符串(

因此,当我尝试在没有API原始字符串的情况下将其放入UI时,我会这样做:

items: snapshot.data?.values
.map((e) => DropdownMenuItem<String>(
value: e,
child:
Text(snapshot.data?.values.elementAt(index) ?? '')))
.toList(),

那么问题来了,在不创建listview.builder来获取元素索引的情况下,如何使用elementAt()方法并将其放入index中呢?可能是我应该用entries操作吗?我试图创建int? index,但它不起作用。

如果重要的话,元素的长度是11。

items: snapshot.data?.values
.map((e) => DropdownMenuItem<String>(
value: e,
child:
Text(snapshot.data?.values.elementAt(index) ?? '')))
.toList(),

这里e本身是来自该值的单个条目。所以您可以在childto-like中使用相同的值,除非您希望访问其他元素的索引。

items: snapshot.data?.values
.map((e) => DropdownMenuItem<String>(
value: e,
child:
Text(e.toString()??"")))
.toList(),

您可以使用List.generate

DropdownButton(
items: List.generate(values.length, (index) => ..),

或用于环路

DropdownButton(
items: [
for (int i = 0; i < values.length; i++)
DropdownMenuItem(child: child)
],

最新更新