只有一个字符的小容器没有正确居中 - Flutter

Posted

技术标签:

【中文标题】只有一个字符的小容器没有正确居中 - Flutter【英文标题】:Small container with only one character no centering correctly - Flutter 【发布时间】:2020-06-17 10:57:55 【问题描述】:

只有一个字符的小容器没有正确居中,有或没有填充设置为 0。

如果我减小字体大小将呈现居中,但没有默认文本大小

Container(
  decoration: BoxDecoration(
    color: Colors.green,
    shape: BoxShape.circle,
  ),
  width: 20.0,
  height: 20.0,
  alignment: Alignment.center,
  padding: EdgeInsets.all(0.0),
  child: Text(
    '+',
  ),
)

更新: 使用图标代替字母的行为完全相同。

如果我将大小从 20 更改为 40:

代码

Container(
            width: 40,
            height: 40,
            alignment: Alignment.center,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
              color: Colors.grey,
            ),
            child: RotatedBox(
              quarterTurns: 3,
              child: Icon(
                Icons.expand_less,
                color: Colors.white,
              ),
            ),
          ),

更新 2:使用 Fitted 可以使用图标:

Container(
            width: 20,
            height: 20,
            alignment: Alignment.center,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
              color: Theme.of(context).textTheme.caption.color,
            ),
            child: FittedBox(
              child: RotatedBox(
                quarterTurns: 3,
                child: Icon(
                  Icons.expand_less,
                  color: Theme.of(context).primaryColor,
                ),
              ),
            ),
          ),

【问题讨论】:

我无法重现您的问题。您的代码完全按照您的预期工作。屏幕截图:i.imgur.com/ZdKcl3p.png 您的问题可能来自代码中的其他内容。可能是因为您的绿点是装饰,而您的文本是小部件,它们受到的影响不同。 关于我可以检查什么的任何线索?我不敢相信你工作得很好 这可能有助于分享更多您正在使用它的周围代码。 【参考方案1】:

我无法重现这个。但我假设您的默认字体大小对于容器来说太大了。您可以尝试将 Text 包装在 FittedBox 中,这样它就会适应容器:

return Container(
      decoration: BoxDecoration(
        color: Colors.green,
        shape: BoxShape.circle,
      ),
      width: 20.0,
      height: 20.0,
      alignment: Alignment.center,
      padding: EdgeInsets.all(0.0),
      child: FittedBox(
        child:Text('+')
     ),
);

【讨论】:

这增加了一点加号,但没有完全居中 这是 FittedBox i.imgur.com/5FXwIC0.png的结果 检查“颤振医生”。你在哪个分支? 我在想...不会是字体吧?我使用字体 Futura-Medium... 我当前的分支是 Channel stable,v1.12.13+hotfix.8,在 Microsoft Windows [版本 10.0.18362.657],区域设置 en-US

以上是关于只有一个字符的小容器没有正确居中 - Flutter的主要内容,如果未能解决你的问题,请参考以下文章

一个iOS约束布局的小技巧

关于flex布局垂直居中

颤动如何使具有灵活约束的容器的孩子居中

CSS垂直居中

CSS - 正确的文本垂直居中对齐[重复]

有没有更可取的方法来居中对齐容器中的 2 列? [关闭]