Flutter:是否可以在高度> 1.0 的文本行中设置垂直对齐方式?

Flutter: Is it possible to set vertical alignment in text lines at height> 1.0?

Figma 中的所有文本都有一些高度,例如 1.5,但是当我设置 heightTextStyle,所有具有新高度的行都与底部对齐。

如果使用 CenterAlign 小部件 - 错误的结果。示例在其行中具有底部垂直对齐。喜欢底部的截图。

[

是否可以在 flutter Text wiget 中为每一行设置垂直对齐?或者也许有人有一些有用的提示来解决问题?

    Text(
      'Example\nExample',
      textAlign: TextAlign.center,
      style:TextStyle(
        height: 2.5,
        fontSize: 20,
      ),
    );

解法:

正如user1032613所建议的那样,这样的解决方案很有帮助。

    final text = 'Example Example\nExample Example';
    const double height = 2.5;
    const double textSize = 16.0;
    const double bottomPadding = (height * textSize - textSize) / 2;
    const double baseline = height * textSize - height * textSize / 4;
    final Widget textWidget = Container(
      color: const Color(0xFFFFFFFF),
      padding: const EdgeInsets.only(bottom: bottomPadding),
      child: Baseline(
        baselineType: TextBaseline.alphabetic,
        baseline: baseline,
        child: Text(
          text,
          style: const AppTextStyle(
            height: height,
            fontSize: textSize,
            color: const Color(0xFFaa3a3a),
          ),
        ),
      ),
    );

一种方式:

Align(
 alignment: Alignment.center, 
 child: Text("Text"),
),

另一种方式:


Center(
   child: Text("Hello World", textAlign: TextAlign.center,),
),

在使用自定义字体时,这是 Flutter 中一个很常见的问题。

我们团队目前使用的解决方案是使用 PaddingBaseline 小部件并手动调整文本以使其显示为垂直居中。

有一个名为 leadingDistribution 的 属性 可用于此目的:

Text(
    'text',
    style: TextStyle(
        height: 2.0,
        leadingDistribution: TextLeadingDistribution.even,
        ),
)