addWithOutOfBandPosition method Null safety
- {Offset? paintOffset,
- Matrix4? paintTransform,
- Matrix4? rawTransform,
- required BoxHitTestWithOutOfBandPosition hitTest}
Pass-through method for adding a hit test while manually managing the position transformation logic.
The actual hit testing of the child needs to be implemented in the
provided hitTest callback. The position needs to be handled by
the caller.
The function returns the return value of the hitTest callback.
A paintOffset, paintTransform, or rawTransform should be
passed to the method to update the hit test stack.
-
paintOffsethas the semantics of theoffsetpassed to addWithPaintOffset. -
paintTransformhas the semantics of thetransformpassed to addWithPaintTransform, except that it must be invertible; it is the responsibility of the caller to ensure this. -
rawTransformhas the semantics of thetransformpassed to addWithRawTransform.
Exactly one of these must be non-null.
See also:
- addWithPaintTransform, which takes a generic paint transform matrix and documents the intended usage of this API in more detail.
Implementation
bool addWithOutOfBandPosition({
Offset? paintOffset,
Matrix4? paintTransform,
Matrix4? rawTransform,
required BoxHitTestWithOutOfBandPosition hitTest,
}) {
assert(hitTest != null);
assert(
(paintOffset == null && paintTransform == null && rawTransform != null) ||
(paintOffset == null && paintTransform != null && rawTransform == null) ||
(paintOffset != null && paintTransform == null && rawTransform == null),
'Exactly one transform or offset argument must be provided.',
);
if (paintOffset != null) {
pushOffset(-paintOffset);
} else if (rawTransform != null) {
pushTransform(rawTransform);
} else {
assert(paintTransform != null);
paintTransform = Matrix4.tryInvert(PointerEvent.removePerspectiveTransform(paintTransform!));
assert(paintTransform != null, 'paintTransform must be invertible.');
pushTransform(paintTransform!);
}
final bool isHit = hitTest(this);
popTransform();
return isHit;
}