Flutter中Expanded嵌套FittedBox时auto_size_text属性失效问题求解
问题根因
AutoSizeText属性失效的核心原因是外层嵌套了FittedBox组件:FittedBox会强制子组件适配自身边界进行缩放,完全覆盖了AutoSizeText的自动换行、字号限制逻辑,两个组件的缩放规则冲突,最终FittedBox优先级更高,导致你设置的maxLines和maxFontSize都不生效。
修复代码
直接移除FittedBox,让AutoSizeText作为Expanded的子组件即可,修改后代码如下:
Row( // Row是Container内部Column的子组件 children: [ const SizedBox(width: 55), // 文字左侧内边距 Expanded( child: AutoSizeText( '70 | Brighton - Abbotsford and Green Island', // 标题示例 maxLines: 2, // 限制最多显示2行,超出会自动缩小字号 maxFontSize: 20, // 限制最大字号为20,短标题不会放大到超出这个值 minFontSize: 12, // 可选添加,限制最小字号,避免文字缩到过小看不清 style: TextStyle( fontSize: 20, // 初始字号,AutoSizeText会在min和max之间自动调整 color: color.AppColor.textMain.withOpacity(0.8), fontWeight: FontWeight.bold, ), ), ), const SizedBox(width: 55), // 文字右侧内边距 ], ),
生效逻辑说明
- 移除
FittedBox后,AutoSizeText可以正常识别Expanded提供的边界宽度:如果内容长度用20号字号渲染能在2行内放下,就保持20号字号;如果内容过长,会自动缩小字号直到能放进2行,或者降到你设置的minFontSize下限 - 短标题内容不足2行时,
maxFontSize会把字号限制在20,不会出现无限制放大撑满整行的问题 - 如果需要调整文字对齐,可给
AutoSizeText添加textAlign参数,比如textAlign: TextAlign.center实现居中对齐
额外建议
后续如果你的项目适配了空安全,可升级auto_size_text到3.x正式版,功能更稳定,2.1.0版本也可正常运行上述修改后的代码。
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

