我在flutter中有一个文本字段和一个表情符号选择器按钮。在选择一个表情符号时,我需要将其插入到当前光标位置。我如何实现这一点?目前使用TextEditingController
时,我只能附加表情符号。我无法获得当前光标偏移。
emojiPicker() {
return EmojiPicker(
rows: 3,
columns: 7,
recommendKeywords: null,
indicatorColor: flujoAccentColor,
onEmojiSelected: (emoji, category) {
print(emoji);
_messageInputController.text =
_messageInputController.text + emoji.emoji;
}
);
}
4条答案
按热度按时间x9ybnkn61#
1.使用
_txtController.selection
获取选择(或光标位置)。1.用所选表情替换所选内容。
1.然后固定控制器的选择(或光标位置
有了这个你不仅可以插入选定的表情在光标位置,但也可以取代一些选定的文本
polkgigr2#
这是对CrazyLazyCat答案的一个小小修改。
_controller
是一个TextEditingController
。TextEditingValue
,而不是单独更改它们(因为它们各自触发更新)。TextSelection.collapsed
具有调整后的索引。nc1teljy3#
除了
text.replaceRange
,我还有另一个解决方案。您需要的是:
然后将结果添加到tec或您需要的任何小部件中:
对于选择或光标位置与上述相同,但如果您需要将光标放置在"youWillAddToTEC"之后,您可以这样做:
fwzugrvs4#
如果你想用一个新的字符串替换选中的文本字段,我发现下面的方法很有用。
像这样使用它