flutter - 将 flutter 中的图像与文本对齐在 Flutter 的基线上

标签 flutter dart baseline

我无法将 Logo 放置在某些文本旁边并正确垂直对齐。 Logo PNG的PNG尺寸约为750x256。我希望它的大小与旁边文本中的大写字母相同。因此,我将字体大小设置为 28,图像高度设置为 20。我假设将其放入具有交叉轴对齐基线的行中,图像应放置在基线处,但它放置在顶部。

这是我的代码:

static Widget _buildLogo() {
  return Row(
    mainAxisAlignment: MainAxisAlignment.center,
    crossAxisAlignment: CrossAxisAlignment.baseline,
    textBaseline: TextBaseline.alphabetic,
    children: [
      SizedBox(width: 15.0),
      Image.asset("assets/images/header-logo-red_256_solid.png", height: 20),
      SizedBox(width: 10.0),
      Text('Text',
        style: TextStyle(
          fontSize: 28.0,
          backgroundColor: Colors.green
        )
      ),
    ]
  );
}

它看起来是这样的:

enter image description here

我希望它是这样的(我添加了一行来指示字母基线):

enter image description here

编辑:快速解释:我想要实现的是您将在以下代码片段中获得的默认 HTML 行为?

<html>
<body>
<img src="logo.png" /><font size=200>laBlaBla</font>
</body>
</html>

HTML-Baseline alignment

最佳答案

我终于找到了解决办法。

对于 Row,如果不更改 RenderingBox 是不可能的,但对于 RichText 则可以。秘诀是使用正确的基线/对齐方式。

RichText baseline

    RichText(
      text: TextSpan(
        children: [
          WidgetSpan(child: Image.asset("assets/images/logo.png"), baseline: TextBaseline.alphabetic, alignment: PlaceholderAlignment.baseline),
          TextSpan(text: "laBlaBla", style: TextStyle(fontSize: 48),)
        ]
      )
    ),

编辑:不过要小心,这个解决方案也并不总是按预期工作。

关于flutter - 将 flutter 中的图像与文本对齐在 Flutter 的基线上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69604017/

相关文章:

css - 在 CSS calc() 中实现模数行为——这可能吗?

list - FLUTTER - 检查一个字符串是否包含另一个字符串

flutter - 删除 flutter 警报对话框的灰色背景

flutter - 如何在抖动中绕过Artboard(Rive)

asynchronous - Dart 中的 stdout.write() 显然已从同步更改为异步,但我该如何使用它?

dart - Flutter - 中心的 FloatingActionButton

android-studio - Android Studio 默认打开 iPhone XR 模拟器。怎么改?

logging - Dart/flutter 错误 : 'toStringDeep' isn't defined for the class 'Logger'

jquery - 将图像容器高度调整为某个值的倍数(加载、方向更改和调整大小时)