pasteText method Null safety

  1. @override
Future<void> pasteText(
  1. SelectionChangedCause cause
)
override

Paste text from Clipboard.

Implementation

@override
Future<void> pasteText(SelectionChangedCause cause) async {
  if (widget.readOnly) {
    return;
  }
  final TextSelection selection = textEditingValue.selection;
  assert(selection != null);
  if (!selection.isValid) {
    return;
  }
  // Snapshot the input before using `await`.
  // See https://github.com/flutter/flutter/issues/11427
  final ClipboardData? data = await Clipboard.getData(Clipboard.kTextPlain);
  if (data == null) {
    return;
  }

  // After the paste, the cursor should be collapsed and located after the
  // pasted content.
  final int lastSelectionIndex = math.max(selection.baseOffset, selection.extentOffset);
  final TextEditingValue collapsedTextEditingValue = textEditingValue.copyWith(
    selection: TextSelection.collapsed(offset: lastSelectionIndex),
  );

  userUpdateTextEditingValue(
    collapsedTextEditingValue.replaced(selection, data.text!),
    cause,
  );
  if (cause == SelectionChangedCause.toolbar) {
    // Schedule a call to bringIntoView() after renderEditable updates.
    SchedulerBinding.instance.addPostFrameCallback((_) {
      if (mounted) {
        bringIntoView(textEditingValue.selection.extent);
      }
    });
    hideToolbar();
  }
}