@@ -242,6 +242,9 @@ class BoxTransformer {
242242 rect: rect,
243243 clampingRect: clampingRect,
244244 handle: handle,
245+ constraints: constraints,
246+ initialRect: initialBox,
247+ flip: flip,
245248 );
246249 break ;
247250 case ResizeMode .symmetric:
@@ -327,15 +330,37 @@ class BoxTransformer {
327330 required Box rect,
328331 required Box clampingRect,
329332 required HandlePosition handle,
333+ required Constraints constraints,
334+ required Box initialRect,
335+ required Flip flip,
330336 }) {
337+
338+ Box effectiveInitialRect = flipBox (initialRect, flip, handle);
339+
340+ Box newRect = Box .fromLTRB (
341+ max (rect.left, clampingRect.left),
342+ max (rect.top, clampingRect.top),
343+ min (rect.right, clampingRect.right),
344+ min (rect.bottom, clampingRect.bottom),
345+ );
346+
347+ if (! constraints.isUnconstrained) {
348+ final maxWidth =
349+ newRect.width.clamp (constraints.minWidth, constraints.maxWidth);
350+ final maxHeight =
351+ newRect.height.clamp (constraints.minHeight, constraints.maxHeight);
352+
353+ newRect = Box .fromHandle (
354+ handle.flip (flip).anchor (effectiveInitialRect),
355+ handle.flip (flip),
356+ maxWidth,
357+ maxHeight,
358+ );
359+ }
360+
331361 return InternalResizeResult (
332- rect: Box .fromLTRB (
333- max (rect.left, clampingRect.left),
334- max (rect.top, clampingRect.top),
335- min (rect.right, clampingRect.right),
336- min (rect.bottom, clampingRect.bottom),
337- ),
338- largest: clampingRect,
362+ rect: newRect,
363+ largest: effectiveInitialRect,
339364 );
340365 }
341366
0 commit comments