setChildParentData method

  1. @override
void setChildParentData(
  1. RenderObject child,
  2. SliverConstraints constraints,
  3. SliverGeometry? geometry
)
override

Sets the SliverPhysicalParentData.paintOffset for the given child according to the SliverConstraints.axisDirection and SliverConstraints.growthDirection and the given geometry.

Implementation

@override
void setChildParentData(RenderObject child, SliverConstraints constraints,
    SliverGeometry? geometry) {
  final SliverPhysicalParentData? childParentData =
      child.parentData as SliverPhysicalParentData?;
  Offset offset = Offset.zero;
  switch (applyGrowthDirectionToAxisDirection(
      constraints.axisDirection, constraints.growthDirection)) {
    case AxisDirection.up:
      offset += Offset(
          0.0,
          geometry!.paintExtent -
              childMainAxisPosition(child as RenderBox) -
              childExtent!);
      break;
    case AxisDirection.down:
      offset += Offset(0.0, childMainAxisPosition(child as RenderBox));
      break;
    case AxisDirection.left:
      offset += Offset(
          geometry!.paintExtent -
              childMainAxisPosition(child as RenderBox) -
              childExtent!,
          0.0);
      break;
    case AxisDirection.right:
      offset += Offset(childMainAxisPosition(child as RenderBox), 0.0);
      break;
  }
  childParentData!.paintOffset = offset;
}