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

8

有时候在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
//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :/

我想知道在插值字符串中是否有更短的方式使用charcode包中的整数常量?


它并没有直接回答你的问题,但是你可以将那部分提取到一个变量中,这样代码会更清晰 :) - Martin
当然可以。我只是觉得在使用整数常量时可能会漏掉一些重要的东西。如果 String.fromCharCode 是预期的使用方式,你可以在几天后将您的评论发布为答案,我会很乐意接受它。 - RobDil
2个回答

21

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

Text('Hello\u{00A0}world');

有没有办法像charcode包中的$nbsp一样,将它与整数变量一起使用? - RobDil

19
我想到的最好解决方案是创建一个字符串扩展方法。
// string_extension.dart

const int $nbsp = 0x00A0;

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

使用示例:

// import 'string_extension.dart';

Text('Hello World'.nonBreaking)

1
这是最佳解决方案。太棒了,亲爱的先生。 - Nicolas Zein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接