如何在Flutter中普遍简化这种PopupMenuButton排列



我正在AppBar((小部件中创建一个PopupMenuButton。通常,检索列表中的元素以生成PopupMenuButton。

final List<String> entries = <String>['Choose a category','Verbs','Nouns','Adjectives','Adverbs','Determiners','Prepositions','Pronouns','Conjunctions','Expressions','Sentences' ];

PopupMenuButton(
itemBuilder: (context) => [
PopupMenuItem(
value: 1,
child: Text(entries[1]),
),
PopupMenuItem(
value: 2,
child: Text(entries[2]),
),
PopupMenuItem(
value: 3,
child: Text(entries[3]),
),
PopupMenuItem(
value: 4,
child: Text(entries[4]),
),
PopupMenuItem(
value: 5,
child: Text(entries[5]),
),
PopupMenuItem(
value: 6,
child: Text(entries[6]),
),
PopupMenuItem(
value: 7,
child: Text(entries[7]),
),
PopupMenuItem(
value: 8,
child: Text(entries[8]),
),
PopupMenuItem(
value: 9,
child: Text(entries[9]),
),
PopupMenuItem(
value: 10,
child: Text(entries[10]),
),
],
onSelected: (value) {
if (value > 0) {
Navigator.pushNamed(
context,
"/home",
arguments: {
'wordType': entries[value],
'page': "no_home",
},
);
}
},
),

我期待着这样的事情。

PopupMenuButton(
itemBuilder: (context, index) => [
PopupMenuItem(
value: index,
child: Text(entries[index]),
),
onSelected: (value) {
if (value > 0) {
Navigator.pushNamed(
context,
"/home",
arguments: {
'wordType': entries[value],
'page': "no_home",
},
],
),

我见过一些解决方案,其中需要创建一个外部方法,甚至是一个类。有没有一个内置的解决方案可以做到这一点?

谢谢。

您可以执行类似的操作

PopupMenuButton(
itemBuilder: (context) => List.generate(
entries.length,
(index) => PopupMenuItem(
value: index,
child: Text(
entries[index],
),
),
),
),

最新更新