import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/screens/home/home_page_card.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';

class HomePatientCard extends StatelessWidget {
  final Color? backgroundColor;
  final IconData? cardIcon;
  final String? cardIconImage;
  final Color? backgroundIconColor;
  final String? text;
  final Color? textColor;
  final VoidCallback? onTap;
  final double? iconSize;
  final LinearGradient? gradient;
  final double? fontSize;

  HomePatientCard({
    this.backgroundColor,
    this.backgroundIconColor,
    this.cardIcon,
    this.cardIconImage,
    this.text,
    this.textColor,
    this.onTap,
    this.iconSize = 30,
    this.gradient,
    this.fontSize
  });

  @override
  Widget build(BuildContext context) {
    double width = SizeConfig.heightMultiplier! *
        (SizeConfig.isHeightVeryShort
            ? 16
            : SizeConfig.isHeightLarge
                ? 15
                : 13);
    return HomePageCard(
      color: backgroundColor,
      width: width,
      gradient: gradient,
      margin: EdgeInsets.all(SizeConfig.widthMultiplier! * 1.121),
      child: Container(
        padding: EdgeInsets.only(left : 8 ),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Expanded(
              child: Stack(
                children: [
                  Container(
                    margin: EdgeInsets.only(top: 18, left: 10),
                    color: Colors.transparent,
                    child: cardIcon != null
                        ? Icon(
                            cardIcon,
                            size: iconSize! * 2,
                            color: backgroundIconColor,
                          )
                        : IconButton(
                            icon: Image.asset(
                              'assets/images/patient_register.png',
                              width: iconSize! * 2,
                              height: iconSize! * 2,
                              fit: BoxFit.fill,
                            ),
                            iconSize: iconSize! * 2,
                            color: backgroundIconColor,
                            onPressed: () => null,
                          ),
                  ),
                  Container(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.end,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        cardIcon != null
                            ? Icon(
                                cardIcon,
                                size: SizeConfig.getWidthMultiplier(
                                        width: width) *
                                    30,
                                color: textColor,
                              )
                            : Image.asset(
                                cardIconImage!,
                                height: iconSize,
                                width: iconSize,
                              ),
                        SizedBox(
                          height: 4,
                        ),
                      ],
                    ),
                  ),
                ],
              ),
            ),
            Expanded(
              child: Container(
                child: AppText(
                  text!,
                  color: textColor!,
                  textAlign: TextAlign.start,
                  letterSpacing: -0.33,
                  fontWeight: FontWeight.w600,
                  fontSize:
                     fontSize?? SizeConfig.getTextMultiplierBasedOnWidth(width: width) *
                          (SizeConfig.isHeightVeryShort ? 11 : 10),
                ),
              ),
            ),
          ],
        ),
      ),
      hasBorder: false,
      onTap: onTap,
    );
  }
}
