flutter 删除抖动弹出菜单按钮的填充

0yg35tkg  于 2023-01-31  发布在  Flutter
关注(0)|答案(7)|浏览(110)

有什么想法我可以删除巨大的填充从一个抖动PopupmenuButton?像一个收缩 Package ,甚至是一个替代部件,可以使用?它破坏了我的元素对齐。
我尝试将padding设置为0,但完全没有效果。

padding: EdgeInsets.all(0)

58wvjzkj

58wvjzkj1#

提供child而不是icon将允许您使用具有任何所需大小/填充的自定义小部件。
注意:Icons.more_vert自带填充,但任何自定义图标都可以避免这种情况。

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

2nc8po8w2#

如果你仔细观察填充不在PopupmenuButton中,那么填充是来自IconButton的。IconButton是一个材质设计部件,它遵循可点击对象每边至少为48px的规范。因此,最好创建自己的部件来减少填充。
避免这种情况的简单解决方法是使用GestureDetector Package 的图标。
您可以参考this post了解更多详细信息。

8mmmxcuj

8mmmxcuj3#

从PopopMenuButton类的Flutter文档中,
padding → EdgeInsetsGeometrydefault匹配图标按钮的8 dps填充。在某些情况下,特别是当此按钮作为列表项的尾随元素出现时,将填充设置为零非常有用。
您可以按照文档的建议将填充更改为0。
在此处阅读更多信息-https://api.flutter.dev/flutter/material/PopupMenuButton-class.html

azpvetkf

azpvetkf4#

已提供解决方案,但您必须编辑非项目文件(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,
      ),
    );

不是很推荐,但还能用

9udxz4iz

9udxz4iz5#

解决方案:使用SizedBox Package :

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

inn6fuwd6#

要从PopUpMenu按钮中删除填充,请将其放入容器中并提供所需宽度。

Container(
  width:20,
  child: PopupMenuButton( 
       // your Code is Here       
      ),
  )
l0oc07j2

l0oc07j27#

您只需为子属性提供图标,如下所示

PopupMenuButton(
  child: Icon(
      Icons.more_vert,
    ),
  onSelected: (value) {},
  itemBuilder: (context) => [],
),

相关问题