updateText method

void updateText(
  1. String newText
)

Updates the current text with a new one applying the mask

Implementation

void updateText(String newText) {
  // save values for possible concurrent updates
  final _oldMask = _previousMask ?? mask;
  final _mask = mask;
  final oldText = _lastUpdatedText;
  final previousCursor = _lastCursor;

  _lastUpdatedText = _applyMask(_mask, newText);
  final newCursor = _calculateCursorPosition(
    previousCursor,
    _oldMask,
    _mask,
    oldText,
    _lastUpdatedText,
  );

  _previousMask = mask;
  text = _lastUpdatedText;

  // Mark to update in next listner iteration
  _cursorUpdatePending = true;
  _cursorCalculatedPosition = newCursor;
  _moveCursor(_cursorCalculatedPosition);
}