Flutter中RichText显示丢失开头空格问题求助
问题原因及解决方案
问题根源
Flutter 默认会折叠连续空白字符(多个空格、制表符等会被合并成一个),这和你使用的等宽字体无关,所以LUKETXT开头的大量空格会被自动移除。spellOut属性是控制屏幕阅读器是否逐个字符朗读文本,和空格显示逻辑完全不相关,调整它自然没用。
解决方法
在顶层TextStyle中添加whiteSpace: WhiteSpace.pre配置,这个属性会让文本像 HTML 的<pre>标签一样,完整保留所有原始空白字符(包括连续空格、换行),不做任何折叠处理。
修改后的代码如下:
RichText BuildText(List<OrderReceipt> OrderReceipt) { int deflen = OrderReceipt.length; return RichText( text: TextSpan( style: const TextStyle( color: Colors.black, fontFamily: "PolarSys", fontSize: 10, whiteSpace: WhiteSpace.pre, // 新增配置,保留所有空白 ), spellOut: false, children: [ for (int i = 0; i < deflen; i++) TextSpan( spellOut: false, text: OrderReceipt[i].LUKETXT, ) ] ), ); }
补充说明
WhiteSpace.pre完全适配你用等宽字体排版小票的需求,能精准还原LUKETXT里的格式布局,包括开头的缩进空格和结尾的对齐空格。
内容的提问来源于stack exchange,提问作者Lukas Fürst
相关产品推荐
相关产品推荐

