Flutter 如何为带有颤振的PopupMenuItem按钮提供PopupMenuItem的动态编号?

Flutter 如何为带有颤振的PopupMenuItem按钮提供PopupMenuItem的动态编号?,flutter,button,dart,popup,Flutter,Button,Dart,Popup,如何使用类似于ListView.builder()的索引将PopupMenuItem的编号动态设置为PopupMenuButton 实际上,我正在使用FutureBuilder从api获取数据,作为响应,获取了4个项,这意味着它给出了动态的项数。 并希望以列表形式将它们显示到PopupMenuItem。 但是与ListView.builder()不同的是,PopupMenuButton中没有计数构造函数 代码: FutureBuilder( 未来:FutureListMaterialsStatu

如何使用类似于
ListView.builder()的索引将
PopupMenuItem
的编号动态设置为
PopupMenuButton

实际上,我正在使用
FutureBuilder
从api获取数据,作为响应,获取了4个项,这意味着它给出了动态的项数。 并希望以列表形式将它们显示到
PopupMenuItem
。 但是与ListView.builder()不同的是,
PopupMenuButton
中没有计数构造函数

代码:

FutureBuilder(
未来:FutureListMaterialsStatusCommonModel,
生成器:(BuildContext上下文,异步快照){
如果(!snapshot.hasData){
返回文本(“加载…”);
}
if(snapshot.hasError){
返回文本(snapshot.error);
}
//在显示项目之前,我试图通过循环获得解决方案,但出现了错误
for(int i;i[
PopupMenuItem(
值:snapshot.data.content[0]。title,
子:文本(
snapshot.data.content[0]。标题,
样式:TextStyle(
颜色:Colors.black,fontwweight:fontwweight.w700),
),
),
],
onSelected:(值){
设置状态(){
材料状态=价值;
});
},
子项:materialStatus==null?文本(“选择…”,
样式:TextStyle(颜色:Colors.orange),)
:Text(materialStatus,
样式:TextStyle(颜色:Colors.black,fontwweight:fontwweight.bold),)
);
} ,
)
我终于成功了。 这太简单了,我真是太傻了

return  PopupMenuButton<String>(
                   itemBuilder: (context ) => 
                  snapshot.data.content
                     .map((item) => PopupMenuItem<String>(
                           value: item.title,
                           child: Text(
                             item.title,
                           ),
                         ))
                     .toList(),


                   onSelected: (value) { 
                     setState(() {
                       materialStatus = value;
                     });

                   },
                   child: materialStatus ==null? Text("Select...", 
                     style: TextStyle(color:Colors.orange),)
                     :Text(materialStatus, 
                     style: TextStyle(color:Colors.black, fontWeight: FontWeight.bold),)
                 );
返回弹出菜单按钮(
itemBuilder:(上下文)=>
snapshot.data.content
.map((项)=>PopupMenuItem(
值:item.title,
子:文本(
项目名称,
),
))
.toList(),
onSelected:(值){
设置状态(){
材料状态=价值;
});
},
子项:materialStatus==null?文本(“选择…”,
样式:TextStyle(颜色:Colors.orange),)
:Text(materialStatus,
样式:TextStyle(颜色:Colors.black,fontwweight:fontwweight.bold),)
);
return  PopupMenuButton<String>(
                   itemBuilder: (context ) => 
                  snapshot.data.content
                     .map((item) => PopupMenuItem<String>(
                           value: item.title,
                           child: Text(
                             item.title,
                           ),
                         ))
                     .toList(),


                   onSelected: (value) { 
                     setState(() {
                       materialStatus = value;
                     });

                   },
                   child: materialStatus ==null? Text("Select...", 
                     style: TextStyle(color:Colors.orange),)
                     :Text(materialStatus, 
                     style: TextStyle(color:Colors.black, fontWeight: FontWeight.bold),)
                 );