1

为什么 ButtonStyle 的属性在像素方面padding不等同于 Container 的属性?padding

我希望将 TextButton 和 Container 文本放在一起时对齐:

Column(
  crossAxisAlignment: CrossAxisAlignment.start,
  children: [
    TextButton(
      style: ButtonStyle(
        padding: MaterialStateProperty.all(EdgeInsets.all(24)),
      ),
      onPressed: () => print('pressed!'),
      child: Text('My Button'),
    ),
    Container(
      padding: EdgeInsets.all(24),
      child: Text('Some other text'),
    )
  ],
);

理论上,TextButton 和 Container 都采用了相同的填充量,但文本并没有对齐。请注意,Container 文本中的“S”与 TextButton 中的“M”不对齐,尽管它们具有相同的填充量:

在此处输入图像描述

请注意,列crossAxisAlignment已设置为“开始”,以便两个小部件都应与最左侧对齐。

我是否遗漏了有关 ButtonStylepadding属性的某些内容?


更新

我可以确认 iOS 和 Android 没有相同的问题。此问题似乎与 Web 和桌面 (macOS/Linux) 无关。我还没有测试过 Windows。

4

1 回答 1

1

因此,这似乎是一个错误,并已在 GitHub 上进行了跟踪。

根据评论,修复已master在 3 月份推送到发布渠道,我认为将在下一个 2.3.0 稳定版本中提供。

对于那些想要切换到最新版本master以仔细检查它是否正常工作的人;跑:

$ flutter channel master
$ flutter upgrade

您可能还需要在运行之前重新安装任何软件包。

于 2021-06-08T14:36:47.690 回答