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/material.dart'; import './profile_medical_info_widget.dart'; /* *@author: Elham Rababah *@Date:22/4/2020 *@param: *@return:PatientProfileWidget *@desc: Patient Profile Widget */ class PatientProfileWidget extends StatelessWidget { PatiantInformtion patient; @override Widget build(BuildContext context) { final routeArgs = ModalRoute.of(context).settings.arguments as Map; patient = routeArgs['patient']; return Container( color: Color(0XFFF2F2F2), child: CustomScrollView(primary: false, slivers: [ SliverList( delegate: SliverChildListDelegate( [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( decoration: BoxDecoration(boxShadow: [ BoxShadow( color: Colors.grey.shade300, blurRadius: 10.0, spreadRadius: 0, offset: Offset(0, 10)), ], color: Colors.white), child: Column(children: [ Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ AvatarWidget( Icon( patient.genderDescription == "Male" ? DoctorApp.male : DoctorApp.female_icon, size: 70, color: Colors.white, ), ), SizedBox( width: 20, ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( patient.firstName + ' ' + patient.lastName, color: Colors.black, fontWeight: FontWeight.bold, ), Row( children: [ AppText( TranslationBase.of(context).fileNo, color: Colors.black, fontWeight: FontWeight.bold, ), SizedBox( width: 20, ), AppText( patient.patientId.toString(), color: Colors.black, fontWeight: FontWeight.normal, ), ], ) ], ) ], ), ), Container( width: double.infinity, height: 1, color: Color(0xffCCCCCC), ), Container( height: 10 * SizeConfig.textMultiplier, child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).age, fontWeight: FontWeight.bold, fontSize: 2 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), AppText( "${DateUtils.convertDateFromServerFormat(patient.dateofBirth, 'dd-MM-yyyy')} / ${patient.age}", fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig.textMultiplier, ), ], ), ), ), Container( width: 1, color: Color(0xffCCCCCC), ), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).nationality, fontWeight: FontWeight.bold, fontSize: 2 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), AppText( patient.nationalityName, fontWeight: FontWeight.normal, fontSize: 1.7 * SizeConfig.textMultiplier, ), ], ), ), ), Container( width: 1, color: Color(0xffCCCCCC), ), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).gender, fontWeight: FontWeight.bold, fontSize: 2 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), AppText( patient.gender.toString() == '1' ? 'Male' : 'Female', fontWeight: FontWeight.normal, fontSize: 1.8 * SizeConfig.textMultiplier, ), ], ), ), ), ], ), ), Container( width: double.infinity, height: 1, color: Color(0xffCCCCCC), ), ]), ), if (patient.admissionNo != null) Container( margin: EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).admissionDetail, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.8 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), Container( decoration: BoxDecoration( color: Colors.white, shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(8), border: Border.fromBorderSide(BorderSide( color: Color(0xffBBBBBB), width: 1, )), ), child: Column( children: [ Padding( padding: EdgeInsets.all(16), child: Column( children: [ Row( children: [ Container( width: 14 * SizeConfig.textMultiplier, child: AppText( TranslationBase.of(context) .dateTime, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig.textMultiplier, ), ), AppText( patient.admissionDate != null ? "${DateUtils.convertDateFromServerFormat(patient.admissionDate, 'EEEE dd, MMMM yyyy hh:mm a')}" : "", color: Colors.black, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig.textMultiplier, ), ], ), SizedBox( height: 4, ), Row( children: [ Container( width: 14 * SizeConfig.textMultiplier, child: AppText( TranslationBase.of(context) .admissionNo, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig.textMultiplier, ), ), AppText( patient.admissionNo != null ? patient.admissionNo : '', color: Colors.black, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig.textMultiplier, ), ], ), SizedBox( height: 4, ), Row( children: [ Container( width: 14 * SizeConfig.textMultiplier, child: AppText( TranslationBase.of(context).losNo, color: Colors.black, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig.textMultiplier, ), ), AppText( patient.admissionDate != null ? DateUtils .differenceBetweenServerDateAndCurrent( patient.admissionDate) : "", color: Colors.black, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig.textMultiplier, ), ], ), ], ), ), const Divider( color: Color(0xffCCCCCC), height: 5, thickness: 1, indent: 0, endIndent: 0, ), Container( height: 10 * SizeConfig.textMultiplier, child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .area, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig.textMultiplier, ), SizedBox( height: 4, ), AppText( patient.clinicDescription, fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig.textMultiplier, ), ], ), ), ), Container( width: 1, color: Color(0xffCCCCCC), ), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( 16.0, 8.0, 8.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Expanded( child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of( context) .room, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), SizedBox( width: 4, ), AppText( "${patient.nursingStationName}\n${patient.roomId}", fontWeight: FontWeight.normal, fontSize: 1.4 * SizeConfig .textMultiplier, ), ], ), ), SizedBox( height: 4, ), Expanded( child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of( context) .bed, fontWeight: FontWeight.bold, fontSize: 1.6 * SizeConfig .textMultiplier, ), SizedBox( width: 4, ), AppText( "${patient.bedId}", fontWeight: FontWeight.normal, fontSize: 1.6 * SizeConfig .textMultiplier, ), ], ), ), ], ), ), ), ], ), ) ], ), ) ], ), ), ], ), ], ), ), SliverPadding( padding: const EdgeInsets.all(16.0), sliver: ProfileMedicalInfoWidget( patient: patient, )) ]), ); } } class AvatarWidget extends StatelessWidget { final Widget avatarIcon; AvatarWidget(this.avatarIcon); @override Widget build(BuildContext context) { return 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), ), child: avatarIcon, ); } }