【问题标题】:Hide certain characters in a text field in Flutter在 Flutter 中隐藏文本字段中的某些字符
【发布时间】:2020-12-07 20:20:14
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    我认为这会奏效!

    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),
      );
    }
    

    【讨论】:

    • 这适用于事物的显示面,但是当我移动光标时,选择会变得混乱,尤其是在尝试选择隐藏字符之前的下一个字符时。有办法解决吗?
    • 如果是这种情况,我认为您应该选择 onChanged 而不是使用 TextEditinngController 本身。看到这个stackoverflow.com/questions/56904313/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2012-05-07
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    相关资源
    最近更新 更多