import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; extension WithContainer on Widget { Widget get insideContainer => Container( color: Colors.white, padding: const EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21), child: this, ); } class DefaultButton extends StatelessWidget { final String text; final VoidCallback? onPress; final Color textColor; final Color? color; final Color? disabledColor; final IconData? iconData; final String? svgIcon; final double? fontSize; final bool isTextExpanded; final int count; final List? colors; final double height; final double borderRadius; const DefaultButton(this.text, this.onPress, {Key? key, this.color, this.isTextExpanded = true, this.svgIcon, this.disabledColor, this.count = 0, this.textColor = Colors.white, this.iconData, this.fontSize, this.colors, this.height = 50, this.borderRadius = 100}) : super(key: key); @override Widget build(BuildContext context) { return InkWell( onTap: onPress, child: Container( height: height, decoration: BoxDecoration( borderRadius: BorderRadius.circular(borderRadius), gradient: onPress == null ? LinearGradient( colors: [ disabledColor ?? const Color(0xffEAEAEA), disabledColor ?? const Color(0xffEAEAEA), ], ) : LinearGradient( transform: const GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: colors ?? [ AppColors.buttonColor, AppColors.buttonColor, ], ), ), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ if (iconData != null) Icon(iconData, color: textColor), if (svgIcon != null) SvgPicture.asset(svgIcon ?? "", color: textColor), if (!isTextExpanded) Padding( padding: EdgeInsets.only( left: (iconData ?? svgIcon) != null ? 6 : 0, ), child: Text( text, textAlign: TextAlign.center, style: TextStyle( fontSize: fontSize ?? 18.fSize, fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48, ), ), ), if (isTextExpanded) Expanded( child: Text( text, textAlign: TextAlign.center, style: TextStyle( fontSize: fontSize ?? 18.fSize, fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48, ), ), ), if (count > 0) Align( alignment: Alignment.topCenter, child: Container( margin: const EdgeInsets.only(top: 6, bottom: 6), padding: const EdgeInsets.only(left: 5, right: 5), alignment: Alignment.center, height: 16, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.0), color: Colors.white, ), child: Text( "$count", textAlign: TextAlign.center, style: const TextStyle( fontSize: 12, fontWeight: FontWeight.w700, color: Color(0xffD02127), letterSpacing: -0.6, ), ), ), ) ], ), ), ); } }