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

Flutter中如何将Row组件居中显示在Container内?

Flutter Row组件在Container内居中显示问题解决

问题描述

希望让Row组件在Container内居中显示,预期效果为图片与文字整体居中且保持合适间距;但实际输出中文字偏右,未达到预期布局。

预期效果示意图:
预期效果

实际效果示意图:
实际效果

现有代码

Container布局代码

Container(
  height: Dimensions.height40,
  decoration: BoxDecoration(borderRadius: BorderRadius.circular(Dimensions.radius10), color: Colors.white),
  child: Padding(
    padding: EdgeInsets.symmetric(horizontal: Dimensions.width45),
    child: Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: [
        Image.asset("assets/images/g.png", width: Dimensions.width20 + 5),
        SmallText(text: LanguageStringKeys.instance.continueWithGoogle.tr)
      ],
    ),
  ),
),

SmallText组件代码

class SmallText extends StatelessWidget {
  final Color? color;
  final String text;
  final double size;
  final TextAlign? align;

  const SmallText({
    Key? key,
    this.color = const Color(0xffCF1357),
    this.size = 16,
    required this.text, this.align=TextAlign.center,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Text(
      text,
      textAlign: align,
      style: TextStyle(
          color: color, fontSize: size, fontFamily: 'ROCK'),
    );
  }
}

问题原因

当前代码中Row使用了MainAxisAlignment.spaceBetween,该属性会让子组件分别贴紧Row的左右两端,再加上Container的左右padding,导致文字偏移到右侧,无法实现整体居中的效果。

解决方案

将Row的mainAxisAlignment改为MainAxisAlignment.center,同时通过SizedBox控制图片与文字的间距,即可让内容整体居中。

修改后的代码示例

Container(
  height: Dimensions.height40,
  decoration: BoxDecoration(borderRadius: BorderRadius.circular(Dimensions.radius10), color: Colors.white),
  child: Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Image.asset("assets/images/g.png", width: Dimensions.width20 + 5),
      SizedBox(width: Dimensions.width10), // 根据需求调整间距大小
      SmallText(text: LanguageStringKeys.instance.continueWithGoogle.tr)
    ],
  ),
),

如果需要保留Container的左右padding,也可以直接修改Row的对齐方式:

Container(
  height: Dimensions.height40,
  decoration: BoxDecoration(borderRadius: BorderRadius.circular(Dimensions.radius10), color: Colors.white),
  child: Padding(
    padding: EdgeInsets.symmetric(horizontal: Dimensions.width45),
    child: Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Image.asset("assets/images/g.png", width: Dimensions.width20 + 5),
        SizedBox(width: Dimensions.width10),
        SmallText(text: LanguageStringKeys.instance.continueWithGoogle.tr)
      ],
    ),
  ),
),

内容的提问来源于stack exchange,提问作者Mansoor Malik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:06:04