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.
		
		
		
		
		
			
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
| 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;
 | |
|   final double? height;
 | |
| 
 | |
|   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,
 | |
|     this.height,
 | |
|   });
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     final hasIcon = iconAsset != null;
 | |
|     final hasOnTap = onTap != null || hasIcon;
 | |
| 
 | |
|     return Container(
 | |
|       height: height,
 | |
|       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),
 | |
|             ],
 | |
|           ),
 | |
|         ),
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |