我想向 PopupMenu 展示我從 API 回應中獲得的動態資料。我嘗試在 PopupMenu 子項中使用 listview.builder ,但它不起作用。

我的 showmenu() 代碼
void showMemberMenu() async {
await showMenu(
context: context,
position: RelativeRect.fromLTRB(200, 150, 100, 100),
items: [
PopupMenuItem(
value: 1,
child: Text(
"ROHIT",
style: TextStyle(
fontSize: 15.sp,
fontWeight: FontWeight.bold,
fontFamily: 'Roboto',
color: green3),
),
),
PopupMenuItem(
value: 2,
child: Text(
"REKHA",
style: TextStyle(
fontSize: 15.sp,
fontWeight: FontWeight.bold,
fontFamily: 'Roboto',
color: green3),
),
),
PopupMenuItem(
value: 3,
child: Text(
"DHRUV",
style: TextStyle(
fontSize: 15.sp,
fontWeight: FontWeight.bold,
fontFamily: 'Roboto',
color: green3),
),
),
],
elevation: 8.0,
).then((value) {
if (value != null) print(value);
});
}
請幫助擺脫這種情況。
uj5u.com熱心網友回復:
您可以使用List.generate從 API 回應中獲得的現有串列使用方法生成串列的動態長度。
下面是一個如何實作它的示例。
void showMemberMenu() async {
final List<String> popList = ['ROHIT', 'REKHA', 'DHRUV'];
await showMenu(
context: context,
position: RelativeRect.fromLTRB(200, 150, 100, 100),
items: List.generate(
popList.length,
(index) => PopupMenuItem(
value: 1,
child: Text(
popList[index],
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
fontFamily: 'Roboto',
),
),
),
),
elevation: 8.0,
).then((value) {
if (value != null) print(value);
});
}
我添加
final List<String> popList = ['ROHIT', 'REKHA', 'DHRUV'];只是為了測驗目的,您可以將其替換為您從 API 回應中獲得的串列。
uj5u.com熱心網友回復:
嘗試這個:
呼叫 api 并將值放入 PopupMenuItem
class PopupMenu {
PopupMenu({@required this.title, @required this.onTap});
final String title;
final VoidCallback onTap;
static PopupMenuButton<String> createPopup(List<PopupMenu> popupItems) {
return PopupMenuButton<String>(
onSelected: (value) {
popupItems.firstWhere((e) => e.title == value).onTap();
},
itemBuilder: (context) => popupItems
.map((item) => PopupMenuItem<String>(
value: item.title,
child: Text(
item.title,
),
))
.toList(),
);
}
}
uj5u.com熱心網友回復:
你可以嘗試做這樣的事情:
https://dartpad.dev/?id=a3f9002a37cbacc2cfae46174cbd2eba
您可以添加任何狀態管理來替換 FutureBuilder,但這是合乎邏輯的方法。
我希望它會有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/430808.html
