首页 > 解决方案 > 在 Flutter 中隐藏文本字段中的某些字符

问题描述

我有一个文本字段,我需要对其进行样式设置,例如粗体或斜体部分。我尝试覆盖TextEditingController's buildTextSpan 并使用具有自定义样式的注释范围格式化文本,但边缘情况太多了,我真的无法让它工作。

因此,考虑使用格式化程序,在每次更改格式之前,我都会添加一个自定义字符,如下所示:

此文本是 |bBOLD,这是 |iITALICS。会给我这个:

这段文字是粗体,这是斜体。因此,我重写了 buildTextSpan 以从解析函数构建 TextSpan,在该函数中,我将文本按特殊字符拆分,并检查每个文本的首字母以获取格式信息。

这很好用,除了当我按右箭头转到“此文本是”之后的下一个字符时,光标将保持固定,因为它认为有两个字符但仅用于格式化,它们不存在在渲染上。

有什么方法可以告诉文本字段在选择、移动选择或键入时忽略某些字符?

标签: flutterdart

解决方案


我认为这会奏效!

static const kCharToBEIgnored = 0x2C;
// Here 0x2C means ',' comma
// For complete list visit https://api.flutter.dev/flutter/charcode/charcode-library.html
String get text {
  return String.fromCharCodes(
    _value.text.codeUnits.where((ch) => ch != kCharToBEIgnored),
  );
}

推荐阅读