addWithAxisOffset method Null safety

bool addWithAxisOffset(
  1. {required Offset? paintOffset,
  2. required double mainAxisOffset,
  3. required double crossAxisOffset,
  4. required double mainAxisPosition,
  5. required double crossAxisPosition,
  6. required SliverHitTest hitTest}
)

Transforms mainAxisPosition and crossAxisPosition to the local coordinate system of a child for hit-testing the child.

The actual hit testing of the child needs to be implemented in the provided hitTest callback, which is invoked with the transformed position as argument.

For the transform mainAxisOffset is subtracted from mainAxisPosition and crossAxisOffset is subtracted from crossAxisPosition.

The paintOffset describes how the paint position of a point painted at the provided mainAxisPosition and crossAxisPosition would change after mainAxisOffset and crossAxisOffset have been applied. This paintOffset is used to properly convert PointerEvents to the local coordinate system of the event receiver.

The paintOffset may be null if mainAxisOffset and crossAxisOffset are both zero.

The function returns the return value of hitTest.

Implementation

bool addWithAxisOffset({
  required Offset? paintOffset,
  required double mainAxisOffset,
  required double crossAxisOffset,
  required double mainAxisPosition,
  required double crossAxisPosition,
  required SliverHitTest hitTest,
}) {
  assert(mainAxisOffset != null);
  assert(crossAxisOffset != null);
  assert(mainAxisPosition != null);
  assert(crossAxisPosition != null);
  assert(hitTest != null);
  if (paintOffset != null) {
    pushOffset(-paintOffset);
  }
  final bool isHit = hitTest(
    this,
    mainAxisPosition: mainAxisPosition - mainAxisOffset,
    crossAxisPosition: crossAxisPosition - crossAxisOffset,
  );
  if (paintOffset != null) {
    popTransform();
  }
  return isHit;
}