flutter - Flutter文本字段onChanged-检测最后键入的文本是否是标记句柄 '@mention'

标签 flutter dart

我正在寻找一个文本字段,该字段在onChanged上检测到用户是否键入了@ tagHandle和尾随文本(类似于twitter中的提及taghandle),这将依次触发oj​​it_code。

作为一个代码示例,以下代码仅在每次键入_callToAction()符号时触发:

TextField(
  onChanged: (value) {
    if (value.endsWith("@")) {
      _callToAction();
    }
  }
)

但是,这不是理想的结果,因为我需要检测@符号(@)后的尾随文本,当用户在表单中键入内容以及他们退格并遇到先前键入的@mention标记句柄时,该文本都应起作用。

最佳答案

这是一个解决方案,它不是经过优化的解决方案,但确实有效。

保留变量以检查是否检测到@,其他两个变量保留@handle的索引。

bool detected = false;
int startIndexOfTag = 0;
int endIndexOfTag = 0;

然后在onChangedTextField
onChanged: (value) {
    if (value.endsWith('@')) {
      detected = true;
      startIndexOfTag = value.length - 1;
    }

    if (detected == true) {
      print(value.substring(startIndexOfTag));
    }

    if ((detected == true && value.endsWith(' ')) || startIndexOfTag == 1) {
      detected = false;
      endIndexOfTag = value.length;
    }

    if (value.length < endIndexOfTag) {
      detected = true;
      endIndexOfTag = value.length;
      startIndexOfTag = value.indexOf('@');
    }
  },

这是同样的DartPad

关于flutter - Flutter文本字段onChanged-检测最后键入的文本是否是标记句柄 '@mention',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62079253/

相关文章:

flutter - 折叠卡片效果 - Flutter

flutter - 如何为具有多种颜色波动的文本设置动画颜色

google-maps - 点击谷歌地图标记时显示模态底部工作表

firebase - 如何获取在Firebase中具有重复值的字段的长度(如类别)

flutter - 如何显示部分html?

json - HttpRequest.getString遇到错误功能,即使其成功

arrays - 如何在 Flutter 中的 ListView Builder 中解析嵌套的 json 数组响应数据

dart - 在 Dart 中克隆新 map

dart - 将 dart 库转移到 pub.dartlang.org 中的另一个所有者

flutter - 从 pubspec.yaml 检索应用程序的当前版本