canReorderHeaderColumn method

bool canReorderHeaderColumn({
  1. required int rowIndex,
  2. required int columnIndex,
  3. required int targetLogicalColumnIndex,
})
inherited

Implementation

bool canReorderHeaderColumn({
  required int rowIndex,
  required int columnIndex,
  required int targetLogicalColumnIndex,
}) {
  if (buildedHeaderRows.isEmpty ||
      rowIndex < 0 ||
      rowIndex >= buildedHeaderRows.length ||
      columnIndex < 0 ||
      columnIndex >= buildedHeaderRows[rowIndex].columns.length ||
      targetLogicalColumnIndex < 0 ||
      targetLogicalColumnIndex >= buildedHeaderRows.last.columns.length) {
    return false;
  }

  final source = _reorderRange(rowIndex, columnIndex);
  final target = (targetLogicalColumnIndex, targetLogicalColumnIndex);
  if (target.$1 >= source.$1 && target.$1 <= source.$2) {
    return false;
  }
  final draggedColumn = buildedHeaderRows[rowIndex].columns[columnIndex];
  if (!draggedColumn.reorderable) {
    return false;
  }

  final leafColumns = buildedHeaderRows.last.columns;
  final sourcePinLeft = leafColumns[source.$1].pinLeft.value;
  final sourcePinRight = leafColumns[source.$1].pinRight.value;
  final targetPinLeft = leafColumns[target.$1].pinLeft.value;
  final targetPinRight = leafColumns[target.$1].pinRight.value;
  return sourcePinLeft == targetPinLeft && sourcePinRight == targetPinRight;
}