如何在Flutter中更改PopupMenuItem的宽度?

9

我的代码像这样
enter image description here

我想让项目的宽度与父元素匹配,但我无法更改 PopupMenuItem 的宽度。

我尝试了文字包裹容器,并设置了确切的宽度,但它没有起作用。

我该怎么做?


展示一些更多的代码,例如您正在尝试匹配的父级。 - encubos
你找到答案了吗?如果是,请分享出来。 - K Pradeep Kumar Reddy
3个回答

7

包含弹出菜单项的容器

        new PopupMenuButton<Choice>(
            onSelected: _select,
            itemBuilder: (BuildContext context) {
              return choices.map((Choice choice) {
                return PopupMenuItem<Choice>(
                  value: choice,
                  child: new Container(
                    width: 100.0,
                    child: Text(choice.title)
                  ),
                );
              }).toList();
            },
          ),

其他完整示例的代码

  void _select(Choice choice) {
      print(choice);
  }

class Choice {
  const Choice({this.title, this.icon});

  final String title;
  final IconData icon;
}

const List<Choice> choices = const <Choice>[
  const Choice(title: 'Car', icon: Icons.directions_car),
  const Choice(title: 'Bicycle', icon: Icons.directions_bike),
  const Choice(title: 'Boat', icon: Icons.directions_boat),
  const Choice(title: 'Bus', icon: Icons.directions_bus),
  const Choice(title: 'Train', icon: Icons.directions_railway),
  const Choice(title: 'Walk', icon: Icons.directions_walk),
];

如何将PopupMenuItem设置为全宽?我尝试使用MediaQuery.of(context).size.width来设置全宽,但是没有效果。 - Hetal
这个方法对我不起作用。最终我使用了Expanded。 - us_david
扩展也对我不起作用... - EzPizza
扩展功能对我也没用,你是怎么做到的? - Samuel

3

在约束条件中更改 maxWidth 的值

示例代码

 Widget _offsetPopup() => PopupMenuButton<int>(
constraints: BoxConstraints(
    minWidth: 2.0 * 56.0,
    maxWidth: MediaQuery.of(context).size.width,
  ),
  itemBuilder: (context) => [
        PopupMenuItem(
          value: 1,
          child: Container(
            width: MediaQuery.of(context).size.width,
            child: Expanded(
              child: Text(
                "To Receive",
                style: TextStyle(
                    fontSize: 16,
                    color: Colors.black,
                    fontWeight: FontWeight.w700),
              ),
            ),
          ),
        ),
      ],
  icon: Icon(Icons.add),
 

  offset: Offset(0, 40));

2
PopupMenuButton(
   offset: Offset(0, 52.sp),
   constraints: BoxConstraints(
     minWidth: 0.5.sw,
     maxWidth: 0.5.sw,
   ),
 
   child: Text("Open PopupMenu"),
   itemBuilder: (BuildContext context) => [
     PopupMenuItem(
         // padding: EdgeInsets.all(20.sp),
         child: Container(width:500 , height: 200,child:Text("Item 1")))
   ],
 )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接