insertTaggable method

void insertTaggable(
  1. String prefix,
  2. T taggable,
  3. int charactersToReplace
)

Inserts a taggable into the text field at the current cursor position.

Insertion typically replaces any tag prompt with the taggable. The number of characters to replace is given by charactersToReplace.

Implementation

void insertTaggable(String prefix, T taggable, int charactersToReplace) {
  final tagStyle = tagStyles.where((style) => prefix == style.prefix).first;
  final tag = Tag<T>(taggable: taggable, style: tagStyle);
  final tagText = tag.toModifiedString(
    toFrontendConverter,
    toBackendConverter,
    isFrontend: false,
  );

  _tagBackendFormatsToTaggables[tagText] = taggable;

  final end = selection.baseOffset;
  final start = end - charactersToReplace;

  value = TextEditingValue(
    text: text.replaceRange(start, end, tagText),
    selection: TextSelection.collapsed(offset: start + tagText.length),
  );
}