import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:flutter/material.dart'; import 'package:rating_bar/rating_bar.dart'; import '../AppointmentDetails.dart'; class AppointmentCard extends StatefulWidget { AppoitmentAllHistoryResultList appo; final Function onReloadAppointmentHistory; AppointmentCard( {@required this.appo, @required this.onReloadAppointmentHistory}); @override _ApointmentCardState createState() => _ApointmentCardState(); } class _ApointmentCardState extends State { @override Widget build(BuildContext context) { return InkWell( onTap: () { navigateToAppointmentDetails(context, widget.appo); }, child: Card( margin: EdgeInsets.fromLTRB(20.0, 16.0, 20.0, 8.0), color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), child: Container( decoration: BoxDecoration(), padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ ClipRRect( borderRadius: BorderRadius.circular(100.0), child: Image.network(widget.appo.doctorImageURL, fit: BoxFit.fill, height: 60.0, width: 60.0), ), Container( width: MediaQuery.of(context).size.width * 0.6, margin: EdgeInsets.fromLTRB(20.0, 10.0, 10.0, 0.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( widget.appo.doctorTitle + " " + widget.appo.doctorNameObj, style: TextStyle( fontSize: 14.0, color: Colors.grey[700], letterSpacing: 1.0)), Container( margin: EdgeInsets.only(top: 3.0), child: Text(widget.appo.clinicName, style: TextStyle( fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)), ), Container( margin: EdgeInsets.only(top: 3.0), child: Text(widget.appo.projectName, style: TextStyle( fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)), ), Container( margin: EdgeInsets.only(top: 3.0, bottom: 3.0), child: Text(getDate(widget.appo.appointmentDate).trim(), style: TextStyle( fontSize: 12.0, color: Colors.grey[600], letterSpacing: 1.0)), ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisSize: MainAxisSize.max, children: [ RatingBar.readOnly( initialRating: widget.appo.actualDoctorRate.toDouble(), size: 20.0, filledColor: Colors.yellow[700], emptyColor: Colors.grey[500], isHalfAllowed: true, halfFilledIcon: Icons.star_half, filledIcon: Icons.star, emptyIcon: Icons.star, ), Container( transform: Matrix4.translationValues(0.0, -40.0, 0.0), child: Image.asset( "assets/images/new-design/arrow.png", width: 25.0, height: 25.0), ), ], ), ], ), ), ], ), ), ), ); } String getDate(String date) { DateTime dateObj = DateUtil.convertStringToDate(date); return DateUtil.getWeekDay(dateObj.weekday) + ", " + dateObj.day.toString() + " " + DateUtil.getMonth(dateObj.month) + " " + dateObj.year.toString(); } String getDoctorSpeciality(List docSpecial) { String docSpeciality = ""; docSpecial.forEach((v) { docSpeciality = docSpeciality + v + "\n"; }); return docSpeciality; } Future navigateToAppointmentDetails(context, appo) async { Navigator.push( context, MaterialPageRoute( builder: (context) => AppointmentDetails(appo: appo))) .then((value) { widget.onReloadAppointmentHistory(); }); } }