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.
		
		
		
		
		
			
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.2 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 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, left: 8.0),
 | |
|                   child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconSize, height: iconSize),
 | |
|                 ),
 | |
|               Padding(
 | |
|                 padding: EdgeInsets.only(top: 2.5),
 | |
|                 child: 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),
 | |
|         //   ),
 | |
|         // ),
 | |
|         );
 | |
|   }
 | |
| }
 |