import 'package:flutter/material.dart'; class SubmitButton extends StatefulWidget { const SubmitButton({ super.key, required this.onPressed, this.label = 'Analisis', this.colors = const [Color(0xFF6C63FF), Color(0xFF48CAE4)], }); final VoidCallback onPressed; final String label; final List colors; @override State createState() => _SubmitButtonState(); } class _SubmitButtonState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; late Animation _scaleAnim; @override void initState() { super.initState(); _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 120), lowerBound: 0.0, upperBound: 0.05, ); _scaleAnim = Tween( begin: 1.0, end: 0.95, ).animate(CurvedAnimation(parent: _controller, curve: Curves.easeInOut)); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return GestureDetector( onTapDown: (_) => _controller.forward(), onTapUp: (_) { _controller.reverse(); widget.onPressed(); }, onTapCancel: () => _controller.reverse(), child: ScaleTransition( scale: _scaleAnim, child: Container( height: 54, decoration: BoxDecoration( borderRadius: BorderRadius.circular(16), gradient: LinearGradient( colors: widget.colors, begin: Alignment.centerLeft, end: Alignment.centerRight, ), boxShadow: [ BoxShadow( color: widget.colors.first.withAlpha(80), blurRadius: 16, offset: const Offset(0, 6), ), ], ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.analytics_outlined, color: Colors.white, size: 20), const SizedBox(width: 8), Text( widget.label, style: const TextStyle( color: Colors.white, fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: 0.5, ), ), ], ), ), ), ); } }