inputEmoji method

void inputEmoji(
  1. String displayText
)

Implementation

void inputEmoji(String displayText) {
  final TextEditingValue value = textEditingController.value;
  final int start = value.selection.start;
  int end = value.selection.end;
  if (value.selection.isValid) {
    String newText = '';
    if (value.selection.isCollapsed) {
      if (end > 0) {
        newText += value.text.substring(0, end);
      }
      newText += displayText;
      if (value.text.length > end) {
        newText += value.text.substring(end, value.text.length);
      }
    } else {
      newText = value.text.replaceRange(start, end, displayText);
      end = start;
    }

    textEditingController.value = value.copyWith(
        text: newText,
        selection: value.selection.copyWith(
            baseOffset: end + displayText.length,
            extentOffset: end + displayText.length));
  } else {
    textEditingController.value = TextEditingValue(
      text: displayText,
      selection: TextSelection.fromPosition(
        TextPosition(offset: displayText.length),
      ),
    );
  }

  SchedulerBinding.instance.addPostFrameCallback((Duration timeStamp) {
    textFieldKey.currentState
        ?.bringIntoView(textEditingController.selection.base);
  });
}