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; DefaultButton(this.text, this.onPress, {this.color, this.isTextExpanded = true, this.svgIcon, this.disabledColor, this.count = 0, this.textColor = Colors.white, this.iconData, this.fontSize, this.colors}); @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)]) : LinearGradient( transform: 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), ), ), ) ], ), ), ); } }