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));
        }
示例#2
0
        // 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));
        }