You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter的Text组件中实现两行文本水平居中?

问题:圆形Container内的Text无法水平居中

我尝试在圆形Container内创建Text组件,却卡在了让文本水平居中的步骤上。

当前使用的代码:

Container(
  width: 80,
  height: 80,
  decoration: BoxDecoration(
  color: Colors.red,
  borderRadius:
    const BorderRadius.all(
      Radius.circular(100.0),
    ),
  ),
  child: const Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Text(
        'Hello\nWorld',
        maxLines: 2,
      )
    ],
  ),
),

这段代码能将文本分成两行,但文本并未水平居中,效果如下:

文本未居中的圆形容器

解决办法

问题核心是Text组件默认左对齐,即便Row把Text整体放在容器中间,Text内部的换行文字还是保持左对齐状态,以下两种方法可以解决:

方法1:给Text添加textAlign属性

直接在Text组件中设置textAlign: TextAlign.center,让文本的每一行都水平居中:

Container(
  width: 80,
  height: 80,
  decoration: BoxDecoration(
    color: Colors.red,
    borderRadius: const BorderRadius.all(Radius.circular(100.0)),
  ),
  child: const Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Text(
        'Hello\nWorld',
        maxLines: 2,
        textAlign: TextAlign.center, // 添加该行实现文本内部居中
      )
    ],
  ),
),

方法2:用Center组件替代Row

其实不需要嵌套Row,直接用Center作为Container的子组件,配合Text的居中对齐,代码更简洁:

Container(
  width: 80,
  height: 80,
  decoration: BoxDecoration(
    color: Colors.red,
    borderRadius: const BorderRadius.all(Radius.circular(100.0)),
  ),
  child: const Center(
    child: Text(
      'Hello\nWorld',
      maxLines: 2,
      textAlign: TextAlign.center,
    ),
  ),
),

修改后,文本的每一行都会在圆形容器内水平居中显示。

内容的提问来源于stack exchange,提问作者Ivone Djaja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:37:27