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; 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; CustomButton( {Key? key, required this.text, required this.onPressed, this.backgroundColor = const Color(0xFFED1C2B), this.borderColor = const Color(0xFFED1C2B), this.textColor = Colors.white, this.borderRadius = 12, this.borderWidth = 2, this.padding = const EdgeInsets.fromLTRB(8, 10, 8, 10), this.fontSize = 16, this.fontFamily, this.fontWeight = FontWeight.w500, this.isDisabled = false, this.icon, this.iconColor = Colors.white, this.height = 56, this.width, this.iconSize = 24, this.textOverflow, this.borderSide}) : super(key: key); @override Widget build(BuildContext context) { return GestureDetector( onTap: isDisabled ? null : onPressed, child: Container( height: height, width: width, padding: padding, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: isDisabled ? backgroundColor.withOpacity(.5) : backgroundColor, borderRadius: borderRadius, customBorder: BorderRadius.circular(borderRadius), side: borderSide ?? BorderSide(width: borderWidth.h, color: isDisabled ? Colors.transparent : borderColor)), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ if (icon != null) Padding( padding: EdgeInsets.only(right: 8.h, left: 8.h), child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconSize, height: iconSize), ), Padding( padding: EdgeInsets.only(top: 0), child: Text( text, overflow: textOverflow, style: context.dynamicTextStyle( fontSize: fontSize.fSize, color: isDisabled ? textColor.withOpacity(0.5) : textColor, letterSpacing: 0, fontWeight: fontWeight, ), ), ), ], ), )); } }