【问题标题】:Non-breaking space in Flutter string interpolationFlutter 字符串插值中的不间断空格
【发布时间】:2020-10-07 13:53:24
【问题描述】:

有时我需要在我的 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 package 的整数常量?

【问题讨论】:

  • 它不会直接回答你的问题,但你总是可以将那部分提取到一个变量中,这样代码会更清晰:)
  • 当然可以。我只是想在使用整数常量时可能会遗漏一些重要的东西。如果事实证明String.fromCharCode 是使用它们的预期方式,您可以在几天后发表您的评论作为答案,我会很乐意接受。

标签: flutter string-interpolation character-codes


【解决方案1】:

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

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

【讨论】:

  • 有没有办法将它与charcode包中的$nbsp等整数变量一起使用?
【解决方案2】:

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

// 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)

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 2014-08-17
    • 2011-02-05
    • 2010-11-24
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多