Flutter中如何让换行后的文本保持右对齐?
解决文本换行后右对齐的问题
问题核心在于你外层的Align无法控制文本内部的换行对齐,且自定义BoxText默认大概率是左对齐,导致换行后文本左偏。同时固定的height:40会在文本换行后截断内容,建议同步调整。
修改方案
- 移除外层
Align组件,直接给文本组件设置自身右对齐 - 删除
Container的固定高度,避免文本换行后被裁剪 - 保持
Flexible确保文本区域自适应剩余空间
修改后的代码:
const LrListItem({Key? key, required this.label, required this.text}) : super(key: key); @override Widget build(BuildContext context) { return Padding( padding: bPadding25, child: Container( decoration: BoxDecoration( border: Border( bottom: BorderSide(width: 1, color: lrDarkBlue.withOpacity(0.3)), )), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, // 让标签与文本顶部对齐 children: [ SizedBox( width: 150, child: BoxText( text: label, size: 16, color: lrDarkBlue.withOpacity(0.3), ), ), Flexible( child: BoxText( text: text, size: 16, color: lrDarkBlue, lines: 2, textAlign: TextAlign.right, // 关键:设置文本自身右对齐 ), ), ], ), ), ); }
若BoxText未封装textAlign参数
直接替换为原生Text组件即可:
Flexible( child: Text( text, style: TextStyle( fontSize: 16, color: lrDarkBlue, ), maxLines: 2, textAlign: TextAlign.right, ), ),
补充说明
- 移除固定高度是因为文本换行后高度会超过40,固定高度会导致内容被裁剪
- 设置
crossAxisAlignment: CrossAxisAlignment.start能让左侧标签和右侧文本顶部对齐,视觉更协调
内容的提问来源于stack exchange,提问作者Samira827
相关产品推荐
相关产品推荐

