import 'package:flutter/material.dart'; import 'package:syncrow_web/utils/color_manager.dart'; class DefaultButton extends StatelessWidget { const DefaultButton({ super.key, this.enabled = true, this.onPressed, required this.child, this.isSecondary = false, this.isLoading = false, this.isDone = false, this.customTextStyle, this.customButtonStyle, this.backgroundColor, this.foregroundColor, this.borderRadius, this.height = 40, this.padding, this.borderColor, this.elevation, this.borderWidth = 1.0, }); final void Function()? onPressed; final Widget child; final double? height; final bool isSecondary; final double? borderRadius; final double borderWidth; final bool enabled; final double? padding; final bool isDone; final bool isLoading; final TextStyle? customTextStyle; final ButtonStyle? customButtonStyle; final Color? backgroundColor; final Color? foregroundColor; final Color? borderColor; final double? elevation; @override Widget build(BuildContext context) { return ElevatedButton( onPressed: enabled ? onPressed : null, style: isSecondary ? null : customButtonStyle ?? ButtonStyle( textStyle: WidgetStateProperty.all( customTextStyle ?? Theme.of(context).textTheme.bodySmall!.copyWith( fontSize: 13, color: foregroundColor, fontWeight: FontWeight.normal), ), foregroundColor: WidgetStateProperty.all( isSecondary ? Colors.black : enabled ? foregroundColor ?? Colors.white : Colors.black, ), backgroundColor: WidgetStateProperty.resolveWith( (Set states) { return enabled ? backgroundColor ?? ColorsManager.primaryColor : Colors.black.withOpacity(0.2); }), shape: WidgetStateProperty.all( RoundedRectangleBorder( side: BorderSide( color: borderColor ?? Colors.transparent, width: borderWidth, ), borderRadius: BorderRadius.circular(borderRadius ?? 20), ), ), fixedSize: height != null ? WidgetStateProperty.all(Size.fromHeight(height!)) : null, padding: WidgetStateProperty.all( EdgeInsets.all(padding ?? 10), ), minimumSize: WidgetStateProperty.all( const Size.fromHeight(10), ), elevation: WidgetStateProperty.all(elevation ?? 0), ), child: SizedBox( height: height ?? 50, child: Center( child: isLoading ? const SizedBox.square( dimension: 24, child: CircularProgressIndicator( color: Colors.white, ), ) : isDone ? const Icon( Icons.check_circle_outline, color: Colors.white, ) : child, ), ), ); } }