import 'package:flutter/material.dart'; class CustomButton extends StatelessWidget { final VoidCallback? onPressed; final String text; final IconData? icon; final bool isLoading; final double? width; final Color? backgroundColor; final Color? textColor; const CustomButton({ super.key, required this.onPressed, required this.text, this.icon, this.isLoading = false, this.width, this.backgroundColor, this.textColor, }); @override Widget build(BuildContext context) { final theme = Theme.of(context); return SizedBox( width: width, child: ElevatedButton( onPressed: isLoading ? null : onPressed, style: ElevatedButton.styleFrom( backgroundColor: backgroundColor ?? theme.colorScheme.primary, foregroundColor: textColor ?? Colors.white, padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), elevation: 2, ), child: isLoading ? SizedBox( height: 20, width: 20, child: CircularProgressIndicator( strokeWidth: 2, valueColor: AlwaysStoppedAnimation( textColor ?? Colors.white, ), ), ) : Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ if (icon != null) ...[ Icon(icon), const SizedBox(width: 8), ], Text( text, style: const TextStyle( fontWeight: FontWeight.bold, fontSize: 16, ), ), ], ), ), ); } }