You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Dart
		
	
| 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 ? borderColor.withValues(alpha: 0.5) : 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,
 | |
|                   ),
 | |
|                 ),
 | |
|               ),
 | |
|             ],
 | |
|           ),
 | |
|         ));
 | |
|   }
 | |
| }
 |