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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:45:29