import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:hmg_nurses/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<Color>? 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>[
                    Color(0xffEAEAEA),
                    Color(0xffEAEAEA),
                  ],
                )
              : color == MyColors.yellowColorII
                  ? const LinearGradient(
                      colors: <Color>[
                        MyColors.yellowColorII,
                        MyColors.yellowColorII,
                      ],
                    )
                  : LinearGradient(
                      transform: const GradientRotation(.83),
                      begin: Alignment.topRight,
                      end: Alignment.bottomLeft,
                      colors: colors ??
                          <Color>[
                            MyColors.gradiantEndColor,
                            MyColors.gradiantStartColor,
                          ],
                    ),
        ),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            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,
                    ),
                  ),
                ),
              )
          ],
        ),
      ),
    );
  }
}
