0

是否可以让 IconButton 内容(图标)与父小部件边界对齐?

得到这样的代码

Padding(
        padding: const EdgeInsets.symmetric(horizontal: 20),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            IconButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                splashRadius: 20,
                constraints: BoxConstraints(),
                padding: EdgeInsets.zero,
                icon: SvgPicture.asset('assets/icons/arrow_left.svg', color: primaryColor)
            )
          ],
        )
    );

我想保持 Icon 与 Row 小部件左边界对齐,并在该位置周围保持点击启动动画。

使用此参数,可以将 Icon 定位到我需要它的位置,但单击时飞溅动画保持未对齐。

alignment: Alignment.centerLeft

所以它做了这样的事情(垂直标记线是父小部件边界)

在此处输入图像描述

但我需要这个

在此处输入图像描述

4

2 回答 2

0

我相信这是用资源而不是代码来完成的事情。

       Padding(
                padding: const EdgeInsets.symmetric(horizontal: 20),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceAround,
                  children: <Widget>[
                    IconButton(
                      constraints: BoxConstraints(),
                      padding: EdgeInsets.zero,
                      icon: Icon(Icons.arrow_back, size: 20),
                      splashRadius: 20,
                      onPressed: () => {},
                    ),
                  ],
                )
            )

我使用了你的代码,增加了它的大小,并使用了内置资源。

icon: Icon(Icons.arrow_back, size: 20),

输出是

在此处输入图像描述

于 2020-09-11T00:55:27.693 回答
0

您可以像下面这样简单地使用它。

     Padding(
        padding: const EdgeInsets.symmetric(horizontal: 20),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            Container(
              decoration: BoxDecoration(
                  color: Colors.black12,
                  borderRadius: BorderRadius.circular(50)),
              child: Padding(
                padding: const EdgeInsets.all(16.0),
                child: IconButton(
                    onPressed: () {
                      Navigator.of(context).pop();
                    },
                    constraints: BoxConstraints(),
                    padding: EdgeInsets.zero,
                    icon: SvgPicture.asset('assets/icons/arrow_left.svg',
                        color: primaryColor)),
              ),
            )
          ],
        ))
于 2020-09-11T01:32:06.200 回答