diff --git a/lib/src/elements/flow_element.dart b/lib/src/elements/flow_element.dart index da9ce96..7768904 100755 --- a/lib/src/elements/flow_element.dart +++ b/lib/src/elements/flow_element.dart @@ -90,6 +90,7 @@ class FlowElement extends ChangeNotifier { isDraggable = true, isResizable = false, isConnectable = true, + isDeletable = false, // fixing offset issue under extreme scaling position = position - Offset( @@ -191,6 +192,9 @@ class FlowElement extends ChangeNotifier { /// Whether this element can be resized bool isResizable; + /// Whether this element can be deleted quickly by clicking on the trash icon + bool isDeletable; + /// Whether this element can be connected to others bool isConnectable; diff --git a/lib/src/ui/element_widget.dart b/lib/src/ui/element_widget.dart index 25fc2ee..d320013 100755 --- a/lib/src/ui/element_widget.dart +++ b/lib/src/ui/element_widget.dart @@ -179,6 +179,7 @@ class _ElementWidgetState extends State { children: [ element, if (widget.element.isResizable) _buildResizeHandle(), + if (widget.element.isDeletable) _buildDeleteHandle(), ], ), ), @@ -208,6 +209,22 @@ class _ElementWidgetState extends State { ); } + Widget _buildDeleteHandle() { + return Listener( + onPointerUp: (event) { + widget.dashboard.removeElement(widget.element); + }, + child: const Align( + alignment: Alignment.bottomLeft, + child: HandlerWidget( + width: 30, + height: 30, + icon: Icon(Icons.delete_outline), + ), + ), + ); + } + Widget _buildDraggableWidget(Widget element) { return Listener( onPointerDown: (event) {