onPanUpdate method

void onPanUpdate(
  1. DragUpdateDetails details
)

Implementation

void onPanUpdate(DragUpdateDetails details) {
  if (!_isDrawing) return;

  final localPosition = details.localPosition;
  if (_isPointInBounds(localPosition)) {
    if (_currentStroke.isNotEmpty) {
      final lastPoint = _currentStroke.last;
      final distance = (localPosition - lastPoint).distance;

      if (distance > 2.0) {
        final steps = (distance / 2.0).round().clamp(1, 5);
        for (int i = 1; i <= steps; i++) {
          final t = i / steps;
          final interpolatedPoint = Offset.lerp(lastPoint, localPosition, t)!;
          _currentStroke.add(interpolatedPoint);
        }
      } else {
        _currentStroke.add(localPosition);
      }
    } else {
      _currentStroke.add(localPosition);
    }

    _updateCurrentPath();
    notifyListeners();
  }
}