从Flutter PopupMenuButton删除填充

时间:2020-07-18 11:58:00

标签: flutter popupmenubutton

有什么想法可以从Flutter PopupmenuButton中删除巨大的填充物吗?像shrinkWrap还是可以使用的替代小部件?它破坏了我元素的对齐方式。

我尝试将padding设置为0,但完全没有效果。

padding: EdgeInsets.all(0)

enter image description here

enter image description here

5 个答案:

答案 0 :(得分:1)

如果您仔细地看到PopupmenuButton中没有填充,则填充{@ {1}}来的。IconButton是一个Material Design小部件,它遵循可点击对象至少应为48px的规范在每一侧。因此最好创建自己的小部件以减少填充。

避免这种情况的一种简单解决方法是使用用IconButton包裹的Icon。

您可以参阅this帖子以了解更多详细信息。

答案 1 :(得分:1)

解决方案:用 SizedBox 包裹:

SizedBox(
  height:,
  child: Row(
    children: [
      PopupMenuButton(        
      )
    ],
  ),
)

答案 2 :(得分:1)

提供 child 而不是 icon 将允许您使用具有任何所需大小/填充的自定义小部件。

注意:Icons.more_vert 带有自己的填充,但可以使用任何自定义图标来避免这种情况。

PopupMenuButton(
  child: Container(
    height: 36,
    width: 48,
    alignment: Alignment.centerRight,
    child: Icon(
      Icons.more_vert,
    ),
  ),
  onSelected: (value) {},
  itemBuilder: (context) => [],
),

答案 3 :(得分:0)

从Flutter Docs中获取PopopMenuButton类,

填充→EdgeInsetsGeometry 与默认匹配IconButton的8 dps填充。在某些情况下,尤其是当此按钮显示为列表项的尾随元素时,将填充设置为零会很有用。

您可以按照文档建议将填充值更改为0。

在此处详细了解-https://api.flutter.dev/flutter/material/PopupMenuButton-class.html

答案 4 :(得分:0)

提供了一个解决方案,但您必须编辑非项目文件(PopupMenuItem类)

return InkWell(
      onTap: widget.enabled ? handleTap : null,
      child: Container(
        height: widget.height,
        padding: const EdgeInsets.symmetric(horizontal: _kHorizontalMenuPadding), // setting this to 0 worked 
        child: item,
      ),
    );

P.S:不太推荐,但仍然可以使用