import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart'; import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart'; import 'package:flutter/material.dart'; import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:rating_bar/rating_bar.dart'; class DoctorHeader extends StatelessWidget { final HeaderModel headerModel; final VoidCallback onTap; final String buttonTitle; final bool isNeedToShowButton; DoctorHeader({Key key, @required this.headerModel, @required this.buttonTitle, @required this.onTap, this.isNeedToShowButton = true}) : super(key: key); @override Widget build(BuildContext context) { String _speciality = (headerModel?.speciality ?? []).length > 0 ? headerModel.speciality.first : ""; return Container( color: Colors.white, child: Column( mainAxisSize: MainAxisSize.min, children: [ Padding( padding: EdgeInsets.only(left: 21, right: 21, bottom: 21), child: Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ LargeAvatar( name: headerModel.doctorName, url: headerModel.doctorImageURL, width: 51, height: 51, ), SizedBox(width: 10), Expanded( child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( _speciality, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12), ), myRichText(TranslationBase.of(context).invoiceNo + ":", headerModel.invoiceNo), myRichText(TranslationBase.of(context).branch, headerModel.projectName), ], ), ), Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.end, children: [ Text( DateUtil.formatDateToDate(headerModel.orderDate), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ), Text( DateUtil.formatDateToTime(headerModel.orderDate), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ), // Padding( // padding: const EdgeInsets.only(top: 8.0), // child: Image.network(headerModel.nationalityFlagURL ?? "", height: 16), // ), ], ) ], ), ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox(width: 21), RatingBar.readOnly( initialRating: headerModel.doctorRate + 0.0, size: 15.0, filledColor: Color(0XFFD02127), emptyColor: Color(0XFFD02127), isHalfAllowed: true, halfFilledIcon: Icons.star_half, filledIcon: Icons.star, emptyIcon: Icons.star_border, ), SizedBox(width: 6), Text( "${headerModel.actualDoctorRate} ${TranslationBase.of(context).reviews}", style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ), ], ), isNeedToShowButton ? InkWell( onTap: () { showConfirmMessage(context, onTap, headerModel.email); }, child: Container( padding: EdgeInsets.only(top: 10, bottom: 10, right: 21, left: 15), decoration: BoxDecoration(color: Color(0XFFD02127), borderRadius: BorderRadius.only(topLeft: Radius.circular(10))), child: Row( mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset('assets/images/new/email.svg', width: 19.0), SizedBox(width: 6), Text( buttonTitle == null ? TranslationBase.of(context).sendEmail : buttonTitle, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.64, height: 25 / 16), ), ], ), ), ) : Container(), ], ) ], ), ); } void showConfirmMessage(BuildContext context, GestureTapCallback onTap, String email) { showDialog( context: context, child: ConfirmSendEmailDialog( email: email, onTapSendEmail: () { onTap(); }, ), ); } }