import 'package:flutter/material.dart'; import 'plus_button_widget.dart'; // Make sure to import your PlusButtonWidget class SpaceCardWidget extends StatelessWidget { final int index; final Size screenSize; final Offset position; final bool isHovered; final Function(int index, bool isHovered) onHoverChanged; final Function(int index, Offset newPosition, String direction) onButtonTap; final Widget Function(int index) buildSpaceContainer; final ValueChanged onPositionChanged; const SpaceCardWidget({ super.key, required this.index, required this.onPositionChanged, required this.screenSize, required this.position, required this.isHovered, required this.onHoverChanged, required this.onButtonTap, required this.buildSpaceContainer, }); @override Widget build(BuildContext context) { return GestureDetector( behavior: HitTestBehavior.opaque, onPanUpdate: (details) { // Call the provided callback to update the position final newPosition = position + details.delta; onPositionChanged(newPosition); }, child: MouseRegion( onEnter: (_) { // Call the provided callback to handle hover state onHoverChanged(index, true); }, onExit: (_) { // Call the provided callback to handle hover state onHoverChanged(index, false); }, child: Stack( clipBehavior: Clip .none, // Allow hovering elements to be displayed outside the boundary children: [ buildSpaceContainer(index), // Build the space container if (isHovered) ...[ PlusButtonWidget( index: index, direction: 'left', offset: const Offset(-21, 20), onButtonTap: onButtonTap, ), PlusButtonWidget( index: index, direction: 'right', offset: const Offset(140, 20), onButtonTap: onButtonTap, ), PlusButtonWidget( index: index, direction: 'down', offset: const Offset(63, 50), onButtonTap: onButtonTap, ), ], ], ), ), ); } }