我需要在一些其他字符(如“2”或“x”)上显示组合上横线字符(Unicode U+0305)。
https://www.fileformat.info/info/unicode/char/0305/index.htm
有没有办法在DART中实现这一点?
事先谢谢。

最佳答案

您可以将Unicode放在字母后进行组合:

String overlined = 'O\u{0305}V\u{0305}E\u{0305}R\u{0305}';

print(overlined);  // Output: O̅V̅E̅R̅

一个更动态的版本(具有简单的逻辑)是:
void main() {
  String overlined = overline('I AM AN OVERLINED TEXT');

  print(overlined);  // Output: I̅ A̅M̅ A̅N̅ O̅V̅E̅R̅L̅I̅N̅E̅D̅ T̅E̅X̅T̅
}

String overline(String text) {
  return text.split('').map((String char) {
    if (char.trim().isEmpty)
      return char;
    else
      return '$char\u{0305}';
  }).join();
}

然而,这是相当有限的。一种更好的方法是使用颤振的style特性来实现这一点:
const Text(
  'OVER',
  style: TextStyle(decoration: TextDecoration.overline),
);

10-08 06:58