hitTestChildren method

  1. @override
bool hitTestChildren(
  1. SliverHitTestResult result,
  2. {required double mainAxisPosition,
  3. required double crossAxisPosition}

Override this method to check whether any children are located at the given position.

Typically children should be hit-tested in reverse paint order so that hit tests at locations where children overlap hit the child that is visually "on top" (i.e., paints later).

Used by hitTest. If you override hitTest and do not call this function, then you don't need to implement this function.

For a discussion of the semantics of the arguments, see hitTest.


bool hitTestChildren(SliverHitTestResult result, {required double mainAxisPosition, required double crossAxisPosition}) {
  RenderSliver? child = lastChild;
  while (child != null) {
    final bool isHit = result.addWithAxisOffset(
      mainAxisPosition: mainAxisPosition,
      crossAxisPosition: crossAxisPosition,
      paintOffset: null,
      mainAxisOffset: childMainAxisPosition(child),
      crossAxisOffset: childCrossAxisPosition(child),
      hitTest: child.hitTest,
    if (isHit) {
      return true;
    child = childBefore(child);
  return false;