updateDrag method

void updateDrag(
  1. Offset globalPosition
)

Implementation

void updateDrag(Offset globalPosition) {
  _lastOffset = globalPosition - dragStartPoint!;
  _entry?.markNeedsBuild();

  //TODO norbert it's here :)
  if (onMove != null) onMove!(globalPosition);
  final HitTestResult result = new HitTestResult();
  WidgetsBinding.instance.hitTest(result, globalPosition + feedbackOffset!);

  final List<_MyDragTargetState<T>> targets =
      _getMyDragTargets(result.path.toList()).toList();

  bool listsMatch = false;
  if (targets.length >= _enteredTargets.length &&
      _enteredTargets.isNotEmpty) {
    listsMatch = true;
    final Iterator<_MyDragTargetState<T>> iterator = targets.iterator;
    for (int i = 0; i < _enteredTargets.length; i += 1) {
      iterator.moveNext();
      if (iterator.current != _enteredTargets[i]) {
        listsMatch = false;
        break;
      }
    }
  }

  // If everything's the same, bail early.
  if (listsMatch) return;

  // Leave old targets.
  _leaveAllEntered();

  // Enter new targets.
  final _MyDragTargetState<T>? newTarget =
      targets.where((_MyDragTargetState<T> target) {
    _enteredTargets.add(target);
    return target.didEnter(this);
  }).first;

  _activeTarget = newTarget;
}