|  |  |  | 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:  text.isNotEmpty ?EdgeInsets.only(right: 8.h, left: 8.h): EdgeInsets.zero, | 
					
						
							|  |  |  |                   child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconSize, height: iconSize), | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |               Visibility( | 
					
						
							|  |  |  |                 visible: text.isNotEmpty, | 
					
						
							|  |  |  |                 child: 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, | 
					
						
							|  |  |  |                     ), | 
					
						
							|  |  |  |                   ), | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |               ), | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         )); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |