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; HomePatientCard({ this.backgroundColor, this.backgroundIconColor, this.cardIcon, this.cardIconImage, this.text, this.textColor, this.onTap, this.iconSize = 30, this.gradient, }); @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.all(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: SizeConfig.getTextMultiplierBasedOnWidth(width: width) * (SizeConfig.isHeightVeryShort ? 11 : 10), ), ), ), ], ), ), hasBorder: false, onTap: onTap, ); } }