protected override void insertChildRenderObject(RenderObject child, object slotRaw) { D.assert(slotRaw != null); int slot = (int)slotRaw; D.assert(this._currentlyUpdatingChildIndex == slot); D.assert(this.renderObject.debugValidateChild(child)); this.renderObject.insert((RenderBox)child, after: this._currentBeforeChild); D.assert(() => { SliverMultiBoxAdaptorParentData childParentData = (SliverMultiBoxAdaptorParentData)child.parentData; D.assert(slot == childParentData.index); return(true); }); }
public override void applyParentData(RenderObject renderObject) { D.assert(renderObject.parentData is SliverMultiBoxAdaptorParentData); SliverMultiBoxAdaptorParentData parentData = (SliverMultiBoxAdaptorParentData)renderObject.parentData; if (parentData.keepAlive != this.keepAlive) { parentData.keepAlive = this.keepAlive; var targetParent = renderObject.parent; if (targetParent is RenderObject && !this.keepAlive) { ((RenderObject)targetParent).markNeedsLayout(); } } }
public override void debugVisitOnstageChildren(ElementVisitor visitor) { this._childElements.Values.Where(child => { SliverMultiBoxAdaptorParentData parentData = (SliverMultiBoxAdaptorParentData)child.renderObject.parentData; double itemExtent = 0; switch (this.renderObject.constraints.axis) { case Axis.horizontal: itemExtent = child.renderObject.paintBounds.width; break; case Axis.vertical: itemExtent = child.renderObject.paintBounds.height; break; } return(parentData.layoutOffset < this.renderObject.constraints.scrollOffset + this.renderObject.constraints.remainingPaintExtent && parentData.layoutOffset + itemExtent > this.renderObject.constraints.scrollOffset); }).ToList().ForEach(e => visitor(e)); }