import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:mohem_flutter_app/classes/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; 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, }) : super(key: key); @override Widget build(BuildContext context) { return InkWell( onTap: onPress, child: Container( height: 43, decoration: BoxDecoration( borderRadius: BorderRadius.circular(6.0), gradient: onPress == null ? const LinearGradient( colors: [ Color(0xffEAEAEA), Color(0xffEAEAEA), ], ) : color == MyColors.yellowColorII ? const LinearGradient( colors: [ MyColors.yellowColorII, MyColors.yellowColorII, ], ) : color == MyColors.greenColor ? const LinearGradient( colors: [ MyColors.greenColor, MyColors.greenColor, ], ) : LinearGradient( transform: const GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: colors ?? [ MyColors.gradiantEndColor, MyColors.gradiantStartColor, ], ), ), 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 ?? 16, fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48, ), ), ), if (isTextExpanded) Expanded( child: Text( text, textAlign: TextAlign.center, style: TextStyle( fontSize: fontSize ?? 16, 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, ), ), ), ) ], ), ), ); } }