我正在寻找一个文本字段,该字段在onChanged
上检测到用户是否键入了@
tagHandle和尾随文本(类似于twitter中的提及taghandle),这将依次触发ojit_code。
作为一个代码示例,以下代码仅在每次键入_callToAction()
符号时触发:
TextField(
onChanged: (value) {
if (value.endsWith("@")) {
_callToAction();
}
}
)
但是,这不是理想的结果,因为我需要检测
@
符号(@
)后的尾随文本,当用户在表单中键入内容以及他们退格并遇到先前键入的@mention
标记句柄时,该文本都应起作用。
最佳答案
这是一个解决方案,它不是经过优化的解决方案,但确实有效。
保留变量以检查是否检测到@
,其他两个变量保留@handle
的索引。
bool detected = false;
int startIndexOfTag = 0;
int endIndexOfTag = 0;
然后在
onChanged
的TextField
中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/