Skip to content

Commit 34f23a7

Browse files
SaadArdatiBirjuVachhani
authored andcommitted
🔧 Fix visibleHandles were disabling handles over enabledHandles.
1 parent 2443c07 commit 34f23a7

File tree

2 files changed

+48
-34
lines changed

2 files changed

+48
-34
lines changed

packages/flutter_box_transform/lib/src/handle_builders.dart

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ class CornerHandleWidget extends StatelessWidget {
3232
/// Whether the handle is resizable.
3333
final bool enabled;
3434

35+
/// Whether the handle is visible.
36+
final bool visible;
37+
3538
/// Whether to paint the handle's bounds for debugging purposes.
3639
final bool debugPaintHandleBounds;
3740

@@ -45,13 +48,16 @@ class CornerHandleWidget extends StatelessWidget {
4548
this.onPanUpdate,
4649
this.onPanEnd,
4750
this.onPanCancel,
48-
required this.enabled,
51+
this.enabled = true,
52+
this.visible = true,
4953
this.debugPaintHandleBounds = false,
5054
}) : assert(handlePosition.isDiagonal, 'A corner handle must be diagonal.');
5155

5256
@override
5357
Widget build(BuildContext context) {
54-
Widget child = builder(context, handlePosition);
58+
Widget child =
59+
visible ? builder(context, handlePosition) : const SizedBox.shrink();
60+
5561
if (enabled) {
5662
child = GestureDetector(
5763
behavior: HitTestBehavior.opaque,
@@ -127,6 +133,9 @@ class SideHandleWidget extends StatelessWidget {
127133
/// Whether the handle is resizable.
128134
final bool enabled;
129135

136+
/// Whether the handle is visible.
137+
final bool visible;
138+
130139
/// Whether to paint the handle's bounds for debugging purposes.
131140
final bool debugPaintHandleBounds;
132141

@@ -140,13 +149,16 @@ class SideHandleWidget extends StatelessWidget {
140149
this.onPanUpdate,
141150
this.onPanEnd,
142151
this.onPanCancel,
143-
required this.enabled,
152+
this.enabled = true,
153+
this.visible = true,
144154
this.debugPaintHandleBounds = false,
145155
}) : assert(handlePosition.isSide, 'A cardinal handle must be cardinal.');
146156

147157
@override
148158
Widget build(BuildContext context) {
149-
Widget child = builder(context, handlePosition);
159+
Widget child =
160+
visible ? builder(context, handlePosition) : const SizedBox.shrink();
161+
150162
if (enabled) {
151163
child = GestureDetector(
152164
behavior: HitTestBehavior.opaque,

packages/flutter_box_transform/lib/src/transformable_box.dart

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -566,36 +566,38 @@ class _TransformableBoxState extends State<TransformableBox> {
566566
height: rect.height,
567567
child: content,
568568
),
569-
for (final handle
570-
in widget.visibleHandles.where((handle) => handle.isDiagonal))
571-
CornerHandleWidget(
572-
key: ValueKey(handle),
573-
handlePosition: handle,
574-
handleTapSize: widget.handleTapSize,
575-
debugPaintHandleBounds: widget.debugPaintHandleBounds,
576-
enabled:
577-
widget.resizable && widget.enabledHandles.contains(handle),
578-
onPanStart: (event) => onHandlePanStart(event, handle),
579-
onPanUpdate: (event) => onHandlePanUpdate(event, handle),
580-
onPanEnd: (event) => onHandlePanEnd(event, handle),
581-
onPanCancel: () => onHandlePanCancel(handle),
582-
builder: widget.cornerHandleBuilder,
583-
),
584-
for (final handle
585-
in widget.visibleHandles.where((handle) => handle.isSide))
586-
SideHandleWidget(
587-
key: ValueKey(handle),
588-
handlePosition: handle,
589-
handleTapSize: widget.handleTapSize,
590-
debugPaintHandleBounds: widget.debugPaintHandleBounds,
591-
enabled:
592-
widget.resizable && widget.enabledHandles.contains(handle),
593-
onPanStart: (event) => onHandlePanStart(event, handle),
594-
onPanUpdate: (event) => onHandlePanUpdate(event, handle),
595-
onPanEnd: (event) => onHandlePanEnd(event, handle),
596-
onPanCancel: () => onHandlePanCancel(handle),
597-
builder: widget.sideHandleBuilder,
598-
),
569+
if (widget.resizable)
570+
for (final handle in HandlePosition.corners.where((handle) =>
571+
widget.visibleHandles.contains(handle) ||
572+
widget.enabledHandles.contains(handle)))
573+
CornerHandleWidget(
574+
key: ValueKey(handle),
575+
handlePosition: handle,
576+
handleTapSize: widget.handleTapSize,
577+
enabled: widget.enabledHandles.contains(handle),
578+
visible: widget.visibleHandles.contains(handle),
579+
onPanStart: (event) => onHandlePanStart(event, handle),
580+
onPanUpdate: (event) => onHandlePanUpdate(event, handle),
581+
onPanEnd: (event) => onHandlePanEnd(event, handle),
582+
onPanCancel: () => onHandlePanCancel(handle),
583+
builder: widget.cornerHandleBuilder,
584+
),
585+
if (widget.resizable)
586+
for (final handle in HandlePosition.sides.where((handle) =>
587+
widget.visibleHandles.contains(handle) ||
588+
widget.enabledHandles.contains(handle)))
589+
SideHandleWidget(
590+
key: ValueKey(handle),
591+
handlePosition: handle,
592+
handleTapSize: widget.handleTapSize,
593+
enabled: widget.enabledHandles.contains(handle),
594+
visible: widget.visibleHandles.contains(handle),
595+
onPanStart: (event) => onHandlePanStart(event, handle),
596+
onPanUpdate: (event) => onHandlePanUpdate(event, handle),
597+
onPanEnd: (event) => onHandlePanEnd(event, handle),
598+
onPanCancel: () => onHandlePanCancel(handle),
599+
builder: widget.sideHandleBuilder,
600+
),
599601
],
600602
),
601603
);

0 commit comments

Comments
 (0)