Skip to content

Commit 406c989

Browse files
author
fbchen
committed
fully support pinned position
1 parent 463be96 commit 406c989

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

example/pinned_position.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class PinnedPositionExample extends StatelessWidget {
3131
anchor,
3232
PinnedPos(0, PinnedType.absolute, 0.5, PinnedType.percent),
3333
PinnedPos(0.5, PinnedType.percent, 0.5, PinnedType.percent),
34+
rotateDegree: 45,
3435
),
3536
)
3637
],

lib/src/constraint_layout.dart

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3777,8 +3777,29 @@ class _ConstraintRenderBox extends RenderBox
37773777
if (!element.translateConstraint) {
37783778
paintShift = element.translate;
37793779
}
3780-
context.paintChild(
3781-
element.renderBox!, element.offset + offset + paintShift);
3780+
3781+
if (element.pinnedInfo != null) {
3782+
context.canvas.save();
3783+
context.canvas.translate(
3784+
element.offset.dx +
3785+
offset.dx +
3786+
paintShift.dx +
3787+
element.getMeasuredWidth() / 2,
3788+
element.offset.dy +
3789+
offset.dy +
3790+
paintShift.dy +
3791+
element.getMeasuredHeight() / 2);
3792+
context.canvas
3793+
.rotate(pi + pi * (element.pinnedInfo!.rotateDegree / 180));
3794+
context.paintChild(
3795+
element.renderBox!,
3796+
Offset(-element.getMeasuredWidth() / 2,
3797+
-element.getMeasuredHeight() / 2));
3798+
context.canvas.restore();
3799+
} else {
3800+
context.paintChild(
3801+
element.renderBox!, element.offset + offset + paintShift);
3802+
}
37823803

37833804
/// Draw child's click area
37843805
assert(() {

0 commit comments

Comments
 (0)