|  |  |  | import 'package:flutter/material.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/enums.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/utils/size_utils.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 CustomChipWidget extends StatelessWidget { | 
					
						
							|  |  |  |   final ChipTypeEnum chipType; | 
					
						
							|  |  |  |   final String chipText; | 
					
						
							|  |  |  |   final String? iconAsset; | 
					
						
							|  |  |  |   final VoidCallback? onTap; | 
					
						
							|  |  |  |   final bool isSelected; | 
					
						
							|  |  |  |   final double borderRadius; | 
					
						
							|  |  |  |   final EdgeInsetsGeometry padding; | 
					
						
							|  |  |  |   final Color? backgroundColor; | 
					
						
							|  |  |  |   final Color? textColor; | 
					
						
							|  |  |  |   final Color? borderColor; | 
					
						
							|  |  |  |   final bool isShowBorder; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const CustomChipWidget({ | 
					
						
							|  |  |  |     super.key, | 
					
						
							|  |  |  |     required this.chipType, | 
					
						
							|  |  |  |     required this.chipText, | 
					
						
							|  |  |  |     this.iconAsset, | 
					
						
							|  |  |  |     this.onTap, | 
					
						
							|  |  |  |     this.isSelected = false, | 
					
						
							|  |  |  |     this.borderRadius = 12, | 
					
						
							|  |  |  |     this.padding = const EdgeInsets.all(8), | 
					
						
							|  |  |  |     this.backgroundColor, | 
					
						
							|  |  |  |     this.textColor, | 
					
						
							|  |  |  |     this.borderColor, | 
					
						
							|  |  |  |     this.isShowBorder = false, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Widget build(BuildContext context) { | 
					
						
							|  |  |  |     final hasIcon = iconAsset != null; | 
					
						
							|  |  |  |     final hasOnTap = onTap != null || hasIcon; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return Container( | 
					
						
							|  |  |  |       decoration: BoxDecoration( | 
					
						
							|  |  |  |         borderRadius: BorderRadius.circular(borderRadius), | 
					
						
							|  |  |  |         color: isSelected ? chipType.color : backgroundColor ?? chipType.backgroundColor, | 
					
						
							|  |  |  |         border: isShowBorder | 
					
						
							|  |  |  |             ? Border.all( | 
					
						
							|  |  |  |                 color: chipType.color, | 
					
						
							|  |  |  |                 width: isSelected ? 0 : 1, | 
					
						
							|  |  |  |               ) | 
					
						
							|  |  |  |             : null, | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |       child: InkWell( | 
					
						
							|  |  |  |         onTap: hasOnTap ? onTap : null, | 
					
						
							|  |  |  |         borderRadius: BorderRadius.circular(borderRadius), | 
					
						
							|  |  |  |         child: Container( | 
					
						
							|  |  |  |           padding: padding, | 
					
						
							|  |  |  |           decoration: BoxDecoration( | 
					
						
							|  |  |  |             borderRadius: BorderRadius.circular(borderRadius), | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |           child: Row( | 
					
						
							|  |  |  |             mainAxisSize: MainAxisSize.min, | 
					
						
							|  |  |  |             children: [ | 
					
						
							|  |  |  |               if (iconAsset != null) ...[ | 
					
						
							|  |  |  |                 Utils.buildSvgWithAssets(icon: iconAsset!), | 
					
						
							|  |  |  |                 SizedBox(width: 4.h), | 
					
						
							|  |  |  |               ], | 
					
						
							|  |  |  |               chipText.toText10(isBold: true, color: isSelected ? Colors.white : textColor ?? chipType.color, maxlines: 1, weight: FontWeight.w500, letterSpacing: -0.5), | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |