import 'package:flutter/material.dart'; import 'package:social_app/core/theme/design_tokens.dart'; import 'package:social_app/features/todo/data/apis/todo_api.dart'; class TodoDragItem extends StatelessWidget { final TodoResponse todo; final int quadrant; final int sourceIndex; final VoidCallback onDragStarted; final VoidCallback onDragEnd; final Widget child; const TodoDragItem({ super.key, required this.todo, required this.quadrant, required this.sourceIndex, required this.onDragStarted, required this.onDragEnd, required this.child, }); @override Widget build(BuildContext context) { return LongPressDraggable( data: '${todo.id}:$quadrant:$sourceIndex', delay: const Duration(milliseconds: 150), feedback: Material( elevation: 8, borderRadius: BorderRadius.circular(AppRadius.md), child: Transform.scale( scale: 1.03, child: SizedBox(width: 280, child: _buildDragFeedback(context)), ), ), childWhenDragging: AnimatedOpacity( duration: const Duration(milliseconds: 100), opacity: 0.3, child: child, ), onDragStarted: onDragStarted, onDragEnd: (_) => onDragEnd(), child: child, ); } Widget _buildDragFeedback(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; return Container( padding: const EdgeInsets.symmetric( horizontal: AppSpacing.md, vertical: AppSpacing.sm, ), decoration: BoxDecoration( color: colorScheme.surface, borderRadius: BorderRadius.circular(AppRadius.md), boxShadow: [ BoxShadow( color: colorScheme.shadow.withValues(alpha: 0.2), blurRadius: 12, offset: const Offset(0, 4), ), ], ), child: Text( todo.title, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13, fontWeight: FontWeight.w600, color: colorScheme.onSurfaceVariant, ), ), ); } }