import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; class CustomButton extends StatelessWidget { final String text; final String? icon; final VoidCallback onPressed; final Color backgroundColor; final Color borderColor; final Color textColor; final double? borderRadius; final double borderWidth; final EdgeInsetsGeometry padding; final double? fontSize; final String? fontFamily; final FontWeight fontWeight; final bool isDisabled; final Color? iconColor; final double? height; final double? width; final double? iconSize; final TextOverflow? textOverflow; final BorderSide? borderSide; const CustomButton({ super.key, required this.text, required this.onPressed, this.backgroundColor = const Color(0xFFED1C2B), this.borderColor = const Color(0xFFED1C2B), this.textColor = Colors.white, this.borderRadius, this.borderWidth = 2, this.padding = const EdgeInsets.fromLTRB(8, 10, 8, 10), this.fontSize, this.fontFamily, this.fontWeight = FontWeight.w500, this.isDisabled = false, this.icon, this.iconColor = Colors.white, this.height, this.width, this.iconSize, this.textOverflow, this.borderSide, }); @override Widget build(BuildContext context) { final radius = borderRadius ?? (12.r); final iconS = iconSize ?? (24.h); final fontS = fontSize ?? (16.f); return GestureDetector( onTap: isDisabled ? null : onPressed, child: Container( height: height ?? (50.h), width: width, padding: padding, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: isDisabled ? backgroundColor.withOpacity(.5) : backgroundColor, borderRadius: radius, customBorder: BorderRadius.circular(radius), side: borderSide ?? BorderSide(width: borderWidth.h, color: isDisabled ? borderColor.withValues(alpha: 0.5) : borderColor)), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ if (icon != null) Padding( padding: text.isNotEmpty ? EdgeInsets.only(right: 8.h, left: 8.h) : EdgeInsets.zero, child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconS, height: iconS), ), Visibility( visible: text.isNotEmpty, child: Padding( padding: EdgeInsets.only(top: 0), child: Text( text, overflow: textOverflow, style: context.dynamicTextStyle( fontSize: fontS, color: isDisabled ? textColor.withOpacity(0.5) : textColor, letterSpacing: 0, fontWeight: fontWeight, ), ), ), ), ], ), )); } }