flutter 的 Text 小部件如何让它显示所有以空格结尾的空格?

lon*_*ong 8 flutter

Container(
    decoration: BoxDecoration(
      color: Colors.blue,
      border: Border.all(width: 1.0,color: Colors.red)
    ),
    child: Text('11111111               '),
  ),
Run Code Online (Sandbox Code Playgroud)

我看这个Container的效果时,111...之后的所有空格都没有显示出来,除非我在最后加了一个非空格字符。我该如何解决这个问题?

Ive*_*aev 5

我发现的一种解决方法是将 Text() 末尾的每个常规空格替换为

String.fromCharCodes([
        // no-brake space
        0x00A0,
        // space
        0x0020
      ])
Run Code Online (Sandbox Code Playgroud)

您的代码将如下所示:

Container(
  decoration: BoxDecoration(
      color: Colors.blue,
      border: Border.all(width: 1.0, color: Colors.red)),
      child: Text('11111111'.padRight(
        '               '.length,
        String.fromCharCodes([
          // no-brake space
          0x00A0,
          // space
          0x0020
          ])))),
Run Code Online (Sandbox Code Playgroud)


小智 4

目前看来,无法以任何方式保留尾随空格,因为在计算换行符时,C++ 中的 Flutter 引擎会在较低级别删除它们。

AText实际上是RichText包含 a 的 a TextSpan,它本身由ParagraphBuilder属于a 呈现dart:ui链接此处)。问题是,当渲染段落时,换行符是由 Flutter 引擎的第三方成员计算的,它会删除所有尾随空格(链接此处,请参阅第 173 行)。

我建议在 Github 上填写一个新问题来提及这一点。