formatText method

void formatText(
  1. int index,
  2. int len,
  3. Attribute? attribute, {
  4. bool shouldNotifyListeners = true,
})

Implementation

void formatText(
  int index,
  int len,
  Attribute? attribute, {
  bool shouldNotifyListeners = true,
}) {
  if (len == 0 &&
      attribute!.isInline &&
      attribute.key != Attribute.link.key) {
    // Add the attribute to our toggledStyle.
    // It will be used later upon insertion.
    toggledStyle = toggledStyle.put(attribute);
  }

  final change = document.format(index, len, attribute);
  // Transform selection against the composed change and give priority to
  // the change. This is needed in cases when format operation actually
  // inserts data into the document (e.g. embeds).
  final adjustedSelection = selection.copyWith(
      baseOffset: change.transformPosition(selection.baseOffset),
      extentOffset: change.transformPosition(selection.extentOffset));
  if (selection != adjustedSelection) {
    _updateSelection(adjustedSelection);
  }
  if (shouldNotifyListeners) {
    notifyListeners();
  }
}