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, padding: padding, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: isDisabled ? Colors.transparent : backgroundColor, borderRadius: borderRadius, side: BorderSide( width: borderWidth.h, color: isDisabled ? borderColor.withOpacity(0.5) : borderColor, )), 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), // ), // ), ); } }