import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; class PatientCard extends StatelessWidget { final PatiantInformtion patientInfo; final Function onTap; final String patientType; const PatientCard({Key key, this.patientInfo, this.onTap, this.patientType}) : super(key: key); @override Widget build(BuildContext context) { return Container( padding: EdgeInsets.all(10), decoration: myBoxDecoration(), margin: EdgeInsets.only(bottom: 12), child: InkWell( child: Row( children: [ Column( mainAxisAlignment: MainAxisAlignment .start, children: < Widget>[ Padding( padding: EdgeInsets .only( left: 12.0), child: Container( decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Color.fromRGBO( 0, 0, 0, 0.08), offset: Offset(0.0, 5.0), blurRadius: 16.0) ], borderRadius: BorderRadius.all( Radius.circular(35.0)), color: Color( 0xffCCCCCC), ), width: 70, height: 70, child: Icon( patientInfo.genderDescription == "Male" ? DoctorApp .male : DoctorApp .female_icon, size: 70, color: Colors .white, ), ), ), ], ), SizedBox( width: 10, ), Expanded( child: Column( crossAxisAlignment:CrossAxisAlignment.start, children: [ AppText( patientInfo.firstName + " " + patientInfo.lastName, fontSize: 2.0 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, backGroundcolor: Colors.white, ), SizedBox(height: 12,), Table( border: TableBorder.symmetric( // inside: BorderSide(width: 2.0, color: Colors.white), ), // defaultVerticalAlignment:TableCellVerticalAlignment.middle , children: [ TableRow(children: [ Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black), children: [ new TextSpan( text: TranslationBase.of(context).fileNo, style: TextStyle(fontWeight: FontWeight.w700, fontSize: 2.2 * SizeConfig.textMultiplier)), new TextSpan(text: patientInfo.patientId.toString()), ],),), ), Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black), children: [ new TextSpan( text: TranslationBase.of(context).age+ " : ", style: TextStyle(fontWeight: FontWeight.w700, )), new TextSpan(text: "${DateUtils.getAgeByBirthday(patientInfo.dateofBirth, context)}"), ],),), ), ] ), TableRow(children: [ SizedBox(height: 5,), SizedBox(height: 5,) ]), TableRow(children: [ Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black), children: [ new TextSpan( text: TranslationBase.of(context).nationality + " : ", style: TextStyle(fontWeight: FontWeight.w700, fontSize: 2.2 * SizeConfig.textMultiplier)), new TextSpan(text: (patientInfo.nationalityName ?? patientInfo.nationality)), ],),), ), Container( child: RichText( text: new TextSpan( style: new TextStyle( fontSize: 2.0 * SizeConfig.textMultiplier, color: Colors.black), children: [ new TextSpan( text: TranslationBase.of(context).gender + " : ", style: TextStyle(fontWeight: FontWeight.w700, )), new TextSpan(text: patientInfo.gender.toString() == '1' ? 'Male' : 'Female'), ],),), ), ] ), ], ), if(SERVICES_PATIANT2[int.parse(patientType)] == "List_MyOutPatient") Container( child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Container( height: 15, width: 60, decoration: BoxDecoration( borderRadius: BorderRadius.circular(25), color: HexColor("#20A169"), ), child: AppText( patientInfo.startTime, color: Colors.white, fontSize: 1.5 * SizeConfig.textMultiplier, textAlign: TextAlign.center, fontWeight: FontWeight.bold, ), ), SizedBox( width: 3.5, ), Container( child: AppText( convertDateFormat2(patientInfo.appointmentDate.toString()), fontSize: 1.5 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), ), SizedBox( height: 0.5, ) ], ), margin: EdgeInsets.only(top: 8,), ) ], ), ), // Divider(color: Colors.grey) ], ), onTap: onTap, ), ); } convertDateFormat2(String str) { String timeConvert; const start = "/Date("; const end = "+0300)"; final startIndex = str.indexOf(start); final endIndex = str.indexOf(end, startIndex + start.length); var date = new DateTime.fromMillisecondsSinceEpoch( int.parse(str.substring(startIndex + start.length, endIndex))); String newDate = date.year.toString() + "/" + date.month.toString().padLeft(2, '0') + "/" + date.day.toString().padLeft(2, '0'); return newDate.toString(); } myBoxDecoration() { return BoxDecoration( border: Border( bottom: BorderSide( color: Color(0xffCCCCCC), width: 0.5, ), ), ); } }