Flutter RichText中WidgetSpan后接TextSpan溢出时TextSpan不显示问题
Flutter 混合布局下 RichText 溢出丢失后续文本问题
问题触发条件
- 该异常的复现条件较为特殊,目前暂未明确根本成因,可稳定复现的最小代码逻辑如下
- 基础场景搭建逻辑:创建带固定宽度的Container组件,将RichText设为其直接子组件;RichText内容配置两个InlineSpan,第一个为WidgetSpan,第二个为位于WidgetSpan后方的TextSpan
- 异常触发临界点:所有InlineSpan的总内容宽度超出Container设定宽度,且RichText设置
maxLines: 1时,界面仅渲染WidgetSpan的内容,后方的TextSpan完全不显示
开发诉求
- 期望组件可在容器宽度范围内尽可能展示可容纳的文本内容,末尾按照配置的溢出规则做对应处理;目前已尝试调整多种溢出配置,均无法改变异常结果,优先期望溢出效果为
TextOverflow.ellipsis,其余非TextOverflow.clip的溢出效果也可接受 - 当前开发要求必须使用WidgetSpan实现图标类字符的垂直居中对齐,如有可实现同等垂直居中效果的替代方案也可接受
复现验证说明
- 当Container宽度设为250时,可完整承载全部内容,渲染效果正常;WidgetSpan内的字符为随机选取,替换字符无法修复该异常
- 当Container宽度设为240时,直接触发溢出异常,表现为后方TextSpan内容完全消失;WidgetSpan为实现右对齐配置了对应对齐参数,调整对齐方式也无法改变异常结果
最小复现代码
Container( width: 250, child: RichText( maxLines: 1, text: TextSpan( children: [ WidgetSpan( alignment: PlaceholderAlignment.middle, child: Text(String.fromCharCode(1005), style: TextStyle( color: Colors.black, fontSize: 25)) ), TextSpan( text: 'wwwwwwwwwwwwwwwwwwww', style: TextStyle( color: Colors.black, fontSize: 15), ) ] ), ), ),
内容的提问来源于stack exchange,提问作者One Bad Student
相关产品推荐
相关产品推荐

