Flutter 字符串插值中的不间断空格

Ton*_*ado 8 string-interpolation character-codes flutter

有时,我需要在 Flutter Text 小部件中添加一个不间断的空格,例如“显示更多”链接或带有“50 km/h”等单位的数字。

下面的代码工作正常,但看起来过于复杂:

const int $nbsp = 0x00A0; // from https://pub.dev/packages/charcode

print('Hello${String.fromCharCode($nbsp)}World'); // --> prints "Hello World", does not break
//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :/
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有更短的方法可以在我的插值字符串中使用charcode 包中的整数常量?

小智 22

最简单的方法是使用转义组合 [\u{00A0}]:

Text('Hello\u{00A0}world');
Run Code Online (Sandbox Code Playgroud)


Ton*_*ado 19

我想出的最佳解决方案是创建一个字符串扩展方法。

// string_extension.dart

const int $nbsp = 0x00A0;

extension StringExtension on String {
  String get nonBreaking => replaceAll(' ', String.fromCharCode($nbsp));
}
Run Code Online (Sandbox Code Playgroud)

使用示例:

// import 'string_extension.dart';

Text('Hello World'.nonBreaking)
Run Code Online (Sandbox Code Playgroud)