|  |  |  | 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 iconSize; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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.iconSize = 24, | 
					
						
							|  |  |  |   }) : super(key: key); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Widget build(BuildContext context) { | 
					
						
							|  |  |  |     return GestureDetector( | 
					
						
							|  |  |  |         onTap: isDisabled ? null : onPressed, | 
					
						
							|  |  |  |         child: Container( | 
					
						
							|  |  |  |           height: height, | 
					
						
							|  |  |  |           decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | 
					
						
							|  |  |  |               color: isDisabled ? Colors.transparent : backgroundColor, | 
					
						
							|  |  |  |               borderRadius: borderRadius, | 
					
						
							|  |  |  |               side: BorderSide( | 
					
						
							|  |  |  |                 width: borderWidth, | 
					
						
							|  |  |  |                 color: isDisabled ? borderColor.withOpacity(0.5) : borderColor, | 
					
						
							|  |  |  |               )), | 
					
						
							|  |  |  |           child: Padding( | 
					
						
							|  |  |  |             padding: padding, | 
					
						
							|  |  |  |             child: Row( | 
					
						
							|  |  |  |               crossAxisAlignment: CrossAxisAlignment.center, | 
					
						
							|  |  |  |               mainAxisAlignment: MainAxisAlignment.center, | 
					
						
							|  |  |  |               children: [ | 
					
						
							|  |  |  |                 if (icon != null) | 
					
						
							|  |  |  |                   Padding( | 
					
						
							|  |  |  |                     padding: const EdgeInsets.only(right: 8.0), | 
					
						
							|  |  |  |                     child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconSize, height: iconSize), | 
					
						
							|  |  |  |                   ), | 
					
						
							|  |  |  |                 Text( | 
					
						
							|  |  |  |                   text, | 
					
						
							|  |  |  |                   style: context.dynamicTextStyle( | 
					
						
							|  |  |  |                     fontSize: fontSize.fSize, | 
					
						
							|  |  |  |                     color: isDisabled ? textColor.withOpacity(0.5) : textColor, | 
					
						
							|  |  |  |                     letterSpacing: -0.4, | 
					
						
							|  |  |  |                     fontWeight: fontWeight, | 
					
						
							|  |  |  |                   ), | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |               ], | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //     .toSmoothContainer(
 | 
					
						
							|  |  |  |         //   smoothness: 1,
 | 
					
						
							|  |  |  |         //   side: BorderSide(width: borderWidth, color: backgroundColor),
 | 
					
						
							|  |  |  |         //   borderRadius: BorderRadius.circular(borderRadius * 1.2),
 | 
					
						
							|  |  |  |         //   foregroundDecoration: BoxDecoration(
 | 
					
						
							|  |  |  |         //     color: isDisabled ? backgroundColor.withOpacity(0.5) : Colors.transparent,
 | 
					
						
							|  |  |  |         //     borderRadius: BorderRadius.circular(borderRadius),
 | 
					
						
							|  |  |  |         //   ),
 | 
					
						
							|  |  |  |         // ),
 | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |