onHandleDragUpdate method
Implementation
void onHandleDragUpdate({
required int index,
required DragUpdateDetails details,
}) {
if (_initialLayout == null || _pointerDownPosition == null) return;
final rtl = Directionality.of(context) == TextDirection.rtl;
final currentPosition = widget.axis == Axis.horizontal
? details.globalPosition.dx
: details.globalPosition.dy;
var pixelDelta = (currentPosition - _pointerDownPosition!).asFixed(6);
// Invert the offset for RTL horizontal dragging
if (rtl && widget.axis == Axis.horizontal) {
pixelDelta = -pixelDelta;
}
// Convert pixel delta to percentage of total available width.
final delta = (pixelDelta / controller.totalAvailableWidth).asFixed(6);
final result = controller.resize(
delta: delta,
initialLayout: _initialLayout!,
pivotIndices: [index, index + 1],
);
switch (result) {
case ShadResizeResult.success:
final cursor = switch (widget.axis) {
Axis.horizontal => SystemMouseCursors.resizeLeftRight,
Axis.vertical => SystemMouseCursors.resizeUpDown,
};
mouseCursorController.cursor = cursor;
case ShadResizeResult.failedLeading:
final cursor = switch (widget.axis) {
Axis.horizontal => SystemMouseCursors.resizeRight,
Axis.vertical => SystemMouseCursors.resizeDown,
};
mouseCursorController.cursor = cursor;
case ShadResizeResult.failedTrailing:
final cursor = switch (widget.axis) {
Axis.horizontal => SystemMouseCursors.resizeLeft,
Axis.vertical => SystemMouseCursors.resizeUp,
};
mouseCursorController.cursor = cursor;
}
}