handleDragUpdate method
bool
handleDragUpdate({
- required PointerMoveEvent pointerMoveEvent,
- required List<
int> lockedIndices,
Implementation
bool handleDragUpdate({
required PointerMoveEvent pointerMoveEvent,
required List<int> lockedIndices,
}) {
final draggedKey = draggedEntity?.key;
if (draggedKey == null) return false;
final localOffset = pointerMoveEvent.localPosition;
late final Offset offset;
if (_isScrollableOutside) {
offset = localOffset + scrollOffset;
} else {
offset = localOffset + (scrollOffset - _startDraggingScrollOffset);
}
final collisionReorderableEntity = _getCollisionReorderableEntity(
keyValue: draggedKey.value,
draggedOffset: offset,
);
final collisionOrderId = collisionReorderableEntity?.updatedOrderId;
if (collisionOrderId != null && !lockedIndices.contains(collisionOrderId)) {
final draggedOrderId = _draggedEntity!.updatedOrderId;
final difference = draggedOrderId - collisionOrderId;
if (difference > 1 || difference < -1) {
// print('_draggedEntity $_draggedEntity');
}
if (difference > 1) {
_updateMultipleCollisions(
collisionReorderableEntity: collisionReorderableEntity!,
draggedKey: draggedKey,
isBackwards: true,
lockedIndices: lockedIndices,
);
} else if (difference < -1) {
_updateMultipleCollisions(
collisionReorderableEntity: collisionReorderableEntity!,
draggedKey: draggedKey,
isBackwards: false,
lockedIndices: lockedIndices,
);
} else {
_updateCollision(
collisionReorderableEntity: collisionReorderableEntity!,
lockedIndices: lockedIndices,
);
}
return true;
}
return false;
}