public RevealedOffset getOffsetToReveal(RenderObject target, float alignment, Rect rect = null ) { rect = rect ?? target.paintBounds; RenderObject child = target; while (child.parent != this) { child = (RenderObject)child.parent; } ListWheelParentData parentData = (ListWheelParentData)child.parentData; float targetOffset = parentData.offset.dy; Matrix4x4 transform = target.getTransformTo(this).toMatrix4x4(); Rect bounds = MatrixUtils.transformRect(transform, rect); Rect targetRect = bounds.translate(0.0f, (this.size.height - this.itemExtent) / 2); return(new RevealedOffset(offset: targetOffset, rect: targetRect)); }
// Calculates where the `caretRect` would be if `_scrollController.offset` is set to `scrollOffset`. Rect _getCaretRectAtScrollOffset(Rect caretRect, float scrollOffset) { float offsetDiff = this._scrollController.offset - scrollOffset; return(this._isMultiline ? caretRect.translate(0.0f, offsetDiff) : caretRect.translate(offsetDiff, 0.0f)); }