有什么想法可以从Flutter PopupmenuButton中删除巨大的填充物吗?像shrinkWrap还是可以使用的替代小部件?它破坏了我元素的对齐方式。
我尝试将padding
设置为0,但完全没有效果。
padding: EdgeInsets.all(0)
答案 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:不太推荐,但仍然可以使用