Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在颤振中隐藏文本字段中的某些字符_Flutter_Dart - Fatal编程技术网

Flutter 在颤振中隐藏文本字段中的某些字符

Flutter 在颤振中隐藏文本字段中的某些字符,flutter,dart,Flutter,Dart,我有一个文本字段,我需要使用粗体或斜体部分来设置样式。 我尝试覆盖TextEditingController的buildTextSpan并使用带有自定义样式的注释范围格式化文本,但是边缘案例太多,我真的无法让它工作 因此,考虑使用格式化程序,在每次更改格式之前,我将添加一个自定义字符,如下所示: 这篇课文是| bBOLD,这是| iITALICS。你会给我这个: 此文本为粗体,这是斜体。因此,我重写buildTextSpan,从解析函数中构建TextSpan,在解析函数中,我将文本按特殊字符分割

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

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

这篇课文是| bBOLD,这是| iITALICS。你会给我这个:

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

这很有效,除了当我按下右箭头进入“This text is”之后的下一个字符时,光标将保持固定,因为它认为有两个字符,但仅用于格式化,它们不在渲染中


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

我想这会管用的

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而不是使用TextEditingController本身。看到这个了吗