Merge branch 'new_design_sikander' into development_new_design_2.0

# Conflicts:
#	lib/widgets/new_design/doctor_header.dart
merge-update-with-lab-changes
Sikander Saleem 5 years ago
commit 8367fc09f3

@ -0,0 +1,6 @@
<svg id="bell_2_" data-name="bell (2)" xmlns="http://www.w3.org/2000/svg" width="19.11" height="20.848" viewBox="0 0 19.11 20.848">
<path id="Path_4605" data-name="Path 4605" d="M358.606,24.8a.869.869,0,0,1-.869-.869,9.063,9.063,0,0,0-2.671-6.45.868.868,0,0,1,1.228-1.228,10.787,10.787,0,0,1,3.18,7.678A.869.869,0,0,1,358.606,24.8Zm0,0" transform="translate(-340.364 -15.344)"/>
<path id="Path_4606" data-name="Path 4606" d="M.869,24.8A.869.869,0,0,1,0,23.928,10.787,10.787,0,0,1,3.18,16.25a.868.868,0,0,1,1.228,1.228,9.062,9.062,0,0,0-2.671,6.45A.869.869,0,0,1,.869,24.8Zm0,0" transform="translate(0 -15.344)"/>
<path id="Path_4607" data-name="Path 4607" d="M38.166,14.692A5.818,5.818,0,0,1,36.1,10.24V7.818a6.085,6.085,0,0,0-5.212-6.011V.869a.869.869,0,0,0-1.737,0v.938a6.085,6.085,0,0,0-5.212,6.011V10.24A5.825,5.825,0,0,1,21.864,14.7a1.52,1.52,0,0,0,.989,2.675H37.185a1.52,1.52,0,0,0,.981-2.682Zm0,0" transform="translate(-20.463)"/>
<path id="Path_4608" data-name="Path 4608" d="M159.481,450.606A3.263,3.263,0,0,0,162.672,448h-6.383A3.263,3.263,0,0,0,159.481,450.606Zm0,0" transform="translate(-149.925 -429.758)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -85,7 +85,7 @@ class DoctorView extends StatelessWidget {
children: <Widget>[ children: <Widget>[
RatingBar.readOnly( RatingBar.readOnly(
initialRating: this.doctor.actualDoctorRate.toDouble(), initialRating: this.doctor.actualDoctorRate.toDouble(),
size: 15.0, size: 16.0,
filledColor: Color(0XFFD02127), filledColor: Color(0XFFD02127),
emptyColor: Color(0XFFD02127), emptyColor: Color(0XFFD02127),
isHalfAllowed: true, isHalfAllowed: true,

@ -2,14 +2,18 @@ import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorRateDetails.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorRateDetails.dart';
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/BookConfirm.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookConfirm.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/components/DocAvailableAppointments.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/DocAvailableAppointments.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart'; import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -25,8 +29,9 @@ class AppointmentDetails extends StatefulWidget {
static bool isLoading = false; static bool isLoading = false;
static bool showFooterButton = false; static bool showFooterButton = false;
final int parentIndex;
AppointmentDetails({@required this.appo}); AppointmentDetails({@required this.appo, this.parentIndex});
@override @override
_AppointmentDetailsState createState() => _AppointmentDetailsState(); _AppointmentDetailsState createState() => _AppointmentDetailsState();
@ -37,6 +42,8 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
List<DoctorRateDetails> doctorDetailsList = List(); List<DoctorRateDetails> doctorDetailsList = List();
ToDoCountProviderModel toDoProvider;
@override @override
void initState() { void initState() {
_tabController = new TabController(length: 2, vsync: this); _tabController = new TabController(length: 2, vsync: this);
@ -55,179 +62,235 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
toDoProvider = Provider.of<ToDoCountProviderModel>(context);
return AppScaffold( return AppScaffold(
appBarTitle: widget.appo.doctorNameObj, appBarTitle: widget.appo.doctorNameObj,
isShowAppBar: true, isShowAppBar: true,
showNewAppBar: true, showNewAppBar: true,
backgroundColor: Color(0xffF8F8F8), backgroundColor: Colors.white,
showNewAppBarTitle: true, showNewAppBarTitle: true,
bottomSheet: AppointmentDetails.showFooterButton bottomSheet: _bottomButtons(),
? Container( body: SingleChildScrollView(
width: MediaQuery.of(context).size.width, physics: BouncingScrollPhysics(),
height: 50.0, child: Column(
margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), crossAxisAlignment: CrossAxisAlignment.start,
child: ButtonTheme( children: <Widget>[
shape: RoundedRectangleBorder( Container(
borderRadius: BorderRadius.circular(10.0), color: Colors.white,
), child: Column(
minWidth: MediaQuery.of(context).size.width * 0.7, crossAxisAlignment: CrossAxisAlignment.start,
height: 45.0, children: <Widget>[
child: RaisedButton( // Container(
color: new Color(0xFF60686b), // margin: EdgeInsets.only(top: 20.0),
textColor: Colors.white, // alignment: Alignment.center,
disabledTextColor: Colors.white, // child: ClipRRect(
disabledColor: new Color(0xFFbcc2c4), // borderRadius: BorderRadius.circular(100.0),
onPressed: goToBookConfirm, // child: Image.network(widget.appo.doctorImageURL, fit: BoxFit.fill, height: 120.0, width: 120.0),
child: Text(TranslationBase.of(context).bookNow, style: TextStyle(fontSize: 18.0)), // ),
), // ),
), // Container(
) // margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0),
: null, // alignment: Alignment.center,
body: Container( // child:
color: new Color(0xFFf8f8f8), // Text(widget.appo.doctorTitle + " " + widget.appo.doctorNameObj, textAlign: TextAlign.center, style: TextStyle(fontSize: 20.0, color: Colors.grey[900], letterSpacing: 1.0)),
child: SingleChildScrollView( // ),
physics: BouncingScrollPhysics(), // Container(
child: Column( // margin: EdgeInsets.only(top: 10.0),
crossAxisAlignment: CrossAxisAlignment.start, // alignment: Alignment.center,
children: <Widget>[ // child: Text(getDoctorSpeciality(widget.appo.doctorSpeciality), style: TextStyle(fontSize: 12.0, color: Colors.grey[900], letterSpacing: 1.0)),
Container( // ),
color: Colors.white, // Container(
child: Column( // margin: EdgeInsets.only(top: 5.0),
crossAxisAlignment: CrossAxisAlignment.start, // alignment: Alignment.center,
children: <Widget>[ // child: RatingBar.readOnly(
// Container( // initialRating: widget.appo.actualDoctorRate.toDouble(),
// margin: EdgeInsets.only(top: 20.0), // size: 35.0,
// alignment: Alignment.center, // filledColor: Colors.yellow[700],
// child: ClipRRect( // emptyColor: Colors.grey[500],
// borderRadius: BorderRadius.circular(100.0), // isHalfAllowed: true,
// child: Image.network(widget.appo.doctorImageURL, fit: BoxFit.fill, height: 120.0, width: 120.0), // halfFilledIcon: Icons.star_half,
// ), // filledIcon: Icons.star,
// ), // emptyIcon: Icons.star,
// Container( // ),
// margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), // ),
// alignment: Alignment.center, // InkWell(
// child: // onTap: () {
// Text(widget.appo.doctorTitle + " " + widget.appo.doctorNameObj, textAlign: TextAlign.center, style: TextStyle(fontSize: 20.0, color: Colors.grey[900], letterSpacing: 1.0)), // getDoctorRatingsDetails();
// ), // },
// Container( // child: Container(
// margin: EdgeInsets.only(top: 10.0), // margin: EdgeInsets.only(top: 5.0),
// alignment: Alignment.center, // alignment: Alignment.center,
// child: Text(getDoctorSpeciality(widget.appo.doctorSpeciality), style: TextStyle(fontSize: 12.0, color: Colors.grey[900], letterSpacing: 1.0)), // child: Text("(" + widget.appo.noOfPatientsRate.toString() + " " + TranslationBase.of(context).reviews + ")",
// ), // style: TextStyle(
// Container( // fontSize: 14.0,
// margin: EdgeInsets.only(top: 5.0), // color: Colors.blue[800],
// alignment: Alignment.center, // letterSpacing: 1.0,
// child: RatingBar.readOnly( // decoration: TextDecoration.underline,
// initialRating: widget.appo.actualDoctorRate.toDouble(), // )),
// size: 35.0, // ),
// filledColor: Colors.yellow[700], // ),
// emptyColor: Colors.grey[500], // Container(
// isHalfAllowed: true, // alignment: Alignment.center,
// halfFilledIcon: Icons.star_half, // child: Text(DateUtil.getWeekDayMonthDayYearDateFormatted(DateUtil.convertStringToDate(widget.appo.appointmentDate), projectViewModel.isArabic ? "ar" : "en")),
// filledIcon: Icons.star, // ),
// emptyIcon: Icons.star, // Container(
// ), // alignment: Alignment.center,
// ), // child: Text(widget.appo.startTime.substring(0, 5)),
// InkWell( // ),
// onTap: () { // Container(
// getDoctorRatingsDetails(); // margin: EdgeInsets.only(top: 10.0),
// }, // child: Divider(
// child: Container( // color: Colors.grey[500],
// margin: EdgeInsets.only(top: 5.0), // ),
// alignment: Alignment.center, // ),
// child: Text("(" + widget.appo.noOfPatientsRate.toString() + " " + TranslationBase.of(context).reviews + ")", DoctorHeader(
// style: TextStyle( headerModel: HeaderModel(
// fontSize: 14.0, widget.appo.doctorTitle + " " + widget.appo.doctorNameObj,
// color: Colors.blue[800], widget.appo.doctorImageURL,
// letterSpacing: 1.0, widget.appo.doctorSpeciality,
// decoration: TextDecoration.underline, "",
// )), widget.appo.projectName,
// ), DateUtil.convertStringToDate(widget.appo.appointmentDate),
// ), widget.appo.startTime.substring(0, 5),
// Container( null,
// alignment: Alignment.center, widget.appo.doctorRate,
// child: Text(DateUtil.getWeekDayMonthDayYearDateFormatted(DateUtil.convertStringToDate(widget.appo.appointmentDate), projectViewModel.isArabic ? "ar" : "en")), widget.appo.actualDoctorRate,
// ), widget.appo.noOfPatientsRate,
// Container( "",
// alignment: Alignment.center, //model.user.emailAddress,
// child: Text(widget.appo.startTime.substring(0, 5)),
// ),
// Container(
// margin: EdgeInsets.only(top: 10.0),
// child: Divider(
// color: Colors.grey[500],
// ),
// ),
DoctorHeader(
headerModel: HeaderModel(
widget.appo.doctorTitle + " " + widget.appo.doctorNameObj,
widget.appo.doctorImageURL,
widget.appo.doctorSpeciality,
"",
widget.appo.projectName,
DateUtil.convertStringToDate(widget.appo.appointmentDate),
widget.appo.startTime.substring(0, 5),
null,
widget.appo.doctorRate,
widget.appo.actualDoctorRate,
widget.appo.noOfPatientsRate,
"",
//model.user.emailAddress,
),
isNeedToShowButton: _tabController.index == 1,
buttonTitle: TranslationBase.of(context).schedule,
buttonIcon: 'assets/images/new/Boo_ Appointment.svg',
showConfirmMessageDialog: false,
onRatingAndReviewTap: getDoctorRatingsDetails,
onTap: () {},
), ),
SizedBox(height: 10), isNeedToShowButton: _tabController.index == 1,
TabBar( buttonTitle: TranslationBase.of(context).schedule,
onTap: (index) { buttonIcon: 'assets/images/new/Boo_ Appointment.svg',
setState(() { showConfirmMessageDialog: false,
if (index == 1) { onRatingAndReviewTap: getDoctorRatingsDetails,
if (widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.isExecludeDoctor) { onTap: () {},
_tabController.index = _tabController.previousIndex; ),
AppointmentDetails.showFooterButton = false; SizedBox(height: 10),
} else { TabBar(
AppointmentDetails.showFooterButton = true; onTap: (index) {
} setState(() {
if (index == 1) {
if (widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.isExecludeDoctor) {
_tabController.index = _tabController.previousIndex;
AppointmentDetails.showFooterButton = false;
} else {
AppointmentDetails.showFooterButton = true;
} }
}); }
}, });
tabs: [ },
Tab(child: Text(TranslationBase.of(context).appoActions, style: TextStyle(color: Colors.black))), tabs: [
widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.isExecludeDoctor Tab(child: Text(TranslationBase.of(context).appoActions, style: TextStyle(color: Colors.black))),
? Tab( widget.appo.clinicID == 17 || widget.appo.clinicID == 23 || widget.appo.isExecludeDoctor
child: Text(TranslationBase.of(context).availableAppo, style: TextStyle(color: Colors.grey)), ? Tab(
) child: Text(TranslationBase.of(context).availableAppo, style: TextStyle(color: Colors.grey)),
: Tab( )
child: Text(TranslationBase.of(context).availableAppo, style: TextStyle(color: Colors.black)), : Tab(
) child: Text(TranslationBase.of(context).availableAppo, style: TextStyle(color: Colors.black)),
], )
controller: _tabController, ],
), controller: _tabController,
], ),
), ],
), ),
Container( ),
height: MediaQuery.of(context).size.height * 0.87, Container(
child: TabBarView( height: MediaQuery.of(context).size.height * 0.87,
physics: NeverScrollableScrollPhysics(), color: Color(0xffF8F8F8),
children: [ child: TabBarView(
AppointmentActions(appo: widget.appo, tabController: _tabController, enableFooterButton: enableFooterButton), physics: NeverScrollableScrollPhysics(),
DocAvailableAppointments(doctor: getDoctorObject(), isLiveCareAppointment: widget.appo.isLiveCareAppointment) children: [
], AppointmentActions(appo: widget.appo, tabController: _tabController, enableFooterButton: enableFooterButton),
controller: _tabController, DocAvailableAppointments(doctor: getDoctorObject(), isLiveCareAppointment: widget.appo.isLiveCareAppointment)
), ],
controller: _tabController,
), ),
], ),
), ],
), ),
), ),
); );
} }
Widget _bottomButtons() {
if (widget.parentIndex == null) {
return null;
} else {
List<Widget> list = [];
if (widget.parentIndex == 0 && _tabController.index == 0) {
list.add(
Expanded(
child: DefaultButton(
TranslationBase.of(context).cancel,
() {
ConfirmDialog dialog = new ConfirmDialog(
context: context,
confirmMessage: TranslationBase.of(context).cancelAppoMsg,
okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: cancelAppointment,
cancelFunction: () => {});
dialog.showAlertDialog(context);
},
color: Color(0xffEAEAEA),
textColor: Color(0xff000000),
),
),
);
list.add(
SizedBox(width: 8),
);
list.add(
Expanded(
child: DefaultButton(
TranslationBase.of(context).confirm,
confirmAppointment,
color: Color(0xff359846),
),
),
);
} else if (widget.parentIndex == 1 && _tabController.index == 0) {
list.add(
Expanded(
child: DefaultButton(
TranslationBase.of(context).cancel,
() => {
// Navigator.of(context).push(FadePage(page: Register())),
},
color: Color(0xffEAEAEA),
textColor: Color(0xff000000),
),
),
);
} else if (_tabController.index == 1) {
list.add(
Expanded(
child: DefaultButton(
TranslationBase.of(context).bookNow,
DocAvailableAppointments.areSlotsAvailable ? goToBookConfirm : null,
color: Color(0xFFD02127),
disabledColor: Color(0xff28323A).withOpacity(0.3),
),
),
);
}
if (list.isEmpty) {
return null;
} else
return Container(
color: Colors.white,
padding: EdgeInsets.only(top: 16, bottom: 16, right: 21, left: 21),
child: Row(
mainAxisSize: MainAxisSize.min,
children: list,
),
);
}
}
void enableFooterButton() { void enableFooterButton() {
setState(() { setState(() {
AppointmentDetails.showFooterButton = true; AppointmentDetails.showFooterButton = true;
@ -498,4 +561,54 @@ class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTick
void openSchedule() { void openSchedule() {
Navigator.push(context, FadePage(page: SchedulePage(getDoctorObject()))); Navigator.push(context, FadePage(page: SchedulePage(getDoctorObject())));
} }
confirmAppointment() {
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService();
service.confirmAppointment(widget.appo.appointmentNo, widget.appo.clinicID, widget.appo.projectID, widget.appo.isLiveCareAppointment, context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
Navigator.of(context).pop();
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err);
});
}
cancelAppointment() {
ConfirmDialog.closeAlertDialog(context);
GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService();
service.cancelAppointment(widget.appo, context).then((res) {
GifLoaderDialogUtils.hideDialog(context);
print(res);
if (res['MessageStatus'] == 1) {
getToDoCount();
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
Navigator.of(context).pop();
} else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
}
}).catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err);
});
}
getToDoCount() {
toDoProvider.setState(0, true);
ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber'], true);
} else {}
}).catchError((err) {
print(err);
});
}
} }

@ -44,8 +44,6 @@ class MyAppointments extends StatefulWidget {
} }
class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProviderStateMixin { class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProviderStateMixin {
TabController _tabController;
bool isDataLoaded = false; bool isDataLoaded = false;
var sharedPref = new AppSharedPreferences(); var sharedPref = new AppSharedPreferences();
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>(); AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
@ -54,9 +52,10 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
FilterType filterType; FilterType filterType;
int _currentPage = 0;
@override @override
void initState() { void initState() {
_tabController = new TabController(length: 3, vsync: this);
filterType = FilterType.Clinic; filterType = FilterType.Clinic;
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
if (Provider.of<ProjectViewModel>(context, listen: false).isLogin) getPatientAppointmentHistory(); if (Provider.of<ProjectViewModel>(context, listen: false).isLogin) getPatientAppointmentHistory();
@ -68,6 +67,11 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
super.initState(); super.initState();
} }
@override
void dispose() {
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
@ -77,25 +81,21 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
showNewAppBar: true, showNewAppBar: true,
backgroundColor: Color(0xffF8F8F8), backgroundColor: Color(0xffF8F8F8),
showNewAppBarTitle: true, showNewAppBarTitle: true,
showDropDown: true,
dropdownIndexValue: _currentPage,
dropDownIndexChange: (index) {
setState(() {
_currentPage = index;
});
},
dropDownList: [
TranslationBase.of(context).booked,
TranslationBase.of(context).confirmed,
TranslationBase.of(context).arrived,
],
description: TranslationBase.of(context).infoMyAppointments, description: TranslationBase.of(context).infoMyAppointments,
body: Container( body: Container(
child: Column(children: [ child: Column(children: [
TabBar(
tabs: [
Tab(child: Text(TranslationBase.of(context).booked, style: TextStyle(color: Colors.black))),
Tab(
child: Text(TranslationBase.of(context).confirmed, style: TextStyle(color: Colors.black)),
),
Tab(
child: Text(TranslationBase.of(context).arrived, style: TextStyle(color: Colors.black)),
)
],
controller: _tabController,
),
Divider(
color: Colors.grey[600],
thickness: 0.5,
),
Row( Row(
children: [ children: [
MyTabView(TranslationBase.of(context).byClinic, FilterType.Clinic, filterType, () { MyTabView(TranslationBase.of(context).byClinic, FilterType.Clinic, filterType, () {
@ -106,12 +106,23 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
}), }),
], ],
), ),
SizedBox(height: 20),
Padding(
padding: EdgeInsets.only(left: 21, right: 21),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
myRadioButton(TranslationBase.of(context).booked, 0),
myRadioButton(TranslationBase.of(context).confirmed, 1),
myRadioButton(TranslationBase.of(context).arrived, 2),
],
),
),
isDataLoaded isDataLoaded
? Expanded( ? Expanded(
child: new TabBarView( child: IndexedStack(
physics: NeverScrollableScrollPhysics(), index: _currentPage,
children: [getBookedAppointments(), getConfirmedAppointments(), getArrivedAppointments()], children: [getBookedAppointments(), getConfirmedAppointments(), getArrivedAppointments()],
controller: _tabController,
), ),
) )
: Container(), : Container(),
@ -273,23 +284,25 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
openAppointmentsTab() async { openAppointmentsTab() async {
var flag = await this.sharedPref.getInt(IS_SEARCH_APPO); var flag = await this.sharedPref.getInt(IS_SEARCH_APPO);
int index;
if (flag == 1) { if (flag == 1) {
_tabController.index = 0; index = 0;
} else if (flag == 2) { } else if (flag == 2) {
_tabController.index = 1; index = 1;
} else if (flag == 3) { } else if (flag == 3) {
_tabController.index = 2; index = 2;
} else { } else {
if (widget._patientBookedAppointmentListClinic.length != 0) { if (widget._patientBookedAppointmentListClinic.length != 0) {
_tabController.index = 0; index = 0;
} else if (widget._patientConfirmedAppointmentListClinic.length != 0) { } else if (widget._patientConfirmedAppointmentListClinic.length != 0) {
_tabController.index = 1; index = 1;
} else if (widget._patientArrivedAppointmentListClinic.length != 0) { } else if (widget._patientArrivedAppointmentListClinic.length != 0) {
_tabController.index = 2; index = 2;
return; // return;
} }
} }
_currentPage = index;
} }
Widget getBookedAppointments() { Widget getBookedAppointments() {
@ -328,7 +341,7 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
Widget _appointmentExpandableList(List<PatientAppointmentList> _patientAppointmentList) { Widget _appointmentExpandableList(List<PatientAppointmentList> _patientAppointmentList) {
return ListView.separated( return ListView.separated(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
// padding: EdgeInsets.only(left: 21, right: 21), padding: EdgeInsets.only(top: 12),
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return Container( return Container(
height: 1, height: 1,
@ -347,21 +360,33 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
itemBuilder: (context, _index) { itemBuilder: (context, _index) {
AppoitmentAllHistoryResultList _appointmentResult = _appointmentAllHistoryResultList[_index]; AppoitmentAllHistoryResultList _appointmentResult = _appointmentAllHistoryResultList[_index];
bool _isSortByClinic = filterType == FilterType.Clinic; bool _isSortByClinic = filterType == FilterType.Clinic;
return DoctorCard( return DoctorCard(
onTap: () => Navigator.push(context, FadePage(page: AppointmentDetails(appo: _appointmentResult))).then((value) { onTap: () => Navigator.push(
getPatientAppointmentHistory(); context,
}), FadePage(
isInOutPatient: _appointmentResult.isInOutPatient, page: AppointmentDetails(
name: _appointmentResult.doctorTitle + " " + _appointmentResult.doctorNameObj, appo: _appointmentResult,
// billNo: _appointmentResult.invoiceNo, parentIndex: _currentPage,
profileUrl: _appointmentResult.doctorImageURL, ))).then((value) {
subName: _isSortByClinic ? _appointmentResult.projectName : _appointmentResult.clinicName, getPatientAppointmentHistory();
isLiveCareAppointment: _appointmentResult.isLiveCareAppointment, }),
date: DateUtil.convertStringToDate(_appointmentResult.appointmentDate), isInOutPatient: _appointmentResult.isInOutPatient,
isSortByClinic: _isSortByClinic, name: _appointmentResult.doctorTitle + " " + _appointmentResult.doctorNameObj,
appoTime: _appointmentResult.startTime.substring(0, 5), // billNo: _appointmentResult.invoiceNo,
//projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(labOrder.orderDate) : DateUtil.getMonthDayYearDateFormatted(labOrder.orderDate), profileUrl: _appointmentResult.doctorImageURL,
); subName: _isSortByClinic ? _appointmentResult.projectName : _appointmentResult.clinicName,
isLiveCareAppointment: _appointmentResult.isLiveCareAppointment,
date: DateUtil.convertStringToDate(_appointmentResult.appointmentDate),
isSortByClinic: _isSortByClinic,
rating: _appointmentResult.actualDoctorRate + 0.0,
appointmentTime: _appointmentResult.startTime.substring(0, 5),
remainingTimeInMinutes: (_appointmentResult.patientStatusType == AppointmentType.BOOKED || _appointmentResult.patientStatusType == AppointmentType.CONFIRMED)
? _appointmentResult.remaniningHoursTocanPay
: null
//projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(labOrder.orderDate) : DateUtil.getMonthDayYearDateFormatted(labOrder.orderDate),
);
}, },
separatorBuilder: (context, index) => SizedBox(height: 14), separatorBuilder: (context, index) => SizedBox(height: 14),
itemCount: _appointmentAllHistoryResultList.length), itemCount: _appointmentAllHistoryResultList.length),
@ -384,4 +409,37 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
this.filterType = filterType; this.filterType = filterType;
}); });
} }
Widget myRadioButton(String _label, int _value) {
return Row(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(
width: 22,
height: 22,
child: Radio(
value: _value,
activeColor: _value == _currentPage ? Color(0xffD02127) : Color(0xffE8E8E8),
groupValue: _currentPage,
onChanged: (index) {
setState(() {
_currentPage = index;
});
//_pageController.animateToPage(index, duration: Duration(milliseconds: 250), curve: Curves.easeInOut);
},
),
),
SizedBox(width: 10),
Text(
_label,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff575757),
letterSpacing: -0.56,
),
),
],
);
}
} }

@ -3,41 +3,41 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
class BookedButtons { class BookedButtons {
var buttons = [ var buttons = [
{ // {
"title": TranslationBase.of(AppGlobal.context).confirm, // "title": TranslationBase.of(AppGlobal.context).confirm,
"subtitle": TranslationBase.of(AppGlobal.context).appointment, // "subtitle": TranslationBase.of(AppGlobal.context).appointment,
"icon": "assets/images/new-design/confirm_icon.png", // "icon": "assets/images/new-design/confirm_icon.png",
"caller": "confirmAppointment" // "caller": "confirmAppointment",
}, // },
{ {
"title": TranslationBase.of(AppGlobal.context).reschedule, "title": TranslationBase.of(AppGlobal.context).reschedule,
"subtitle": TranslationBase.of(AppGlobal.context).appointment, "subtitle": TranslationBase.of(AppGlobal.context).appointment,
"icon": "assets/images/new-design/reschedule_icon.png", "icon": "reschedule.svg",
"caller": "openReschedule" "caller": "openReschedule",
},
{
"title": TranslationBase.of(AppGlobal.context).cancel_nocaps,
"subtitle": TranslationBase.of(AppGlobal.context).appointment,
"icon": "assets/images/new-design/cancel_icon.png",
"caller": "onCancelAppointment"
}, },
// {
// "title": TranslationBase.of(AppGlobal.context).cancel_nocaps,
// "subtitle": TranslationBase.of(AppGlobal.context).appointment,
// "icon": "assets/images/new-design/cancel_icon.png",
// "caller": "onCancelAppointment",
// },
{ {
"title": TranslationBase.of(AppGlobal.context).raise, "title": TranslationBase.of(AppGlobal.context).raise,
"subtitle": TranslationBase.of(AppGlobal.context).complaint, "subtitle": TranslationBase.of(AppGlobal.context).complaint,
"icon": "assets/images/new-design/Complaint_icon.png", "icon": "raise_comp.svg",
"caller": "insertComplaint" "caller": "insertComplaint",
}, },
{ {
"title": TranslationBase.of(AppGlobal.context).add, "title": TranslationBase.of(AppGlobal.context).add,
"subtitle": TranslationBase.of(AppGlobal.context).reminder, "subtitle": TranslationBase.of(AppGlobal.context).reminder,
"icon": "assets/images/new-design/reminder_icon.png", "icon": "add_reminder.svg",
"caller": "addReminder" "caller": "addReminder",
}, },
{ {
"title": TranslationBase.of(AppGlobal.context).hospital, "title": TranslationBase.of(AppGlobal.context).hospital,
"subtitle": TranslationBase.of(AppGlobal.context).location, "subtitle": TranslationBase.of(AppGlobal.context).location,
"icon": "assets/images/new-design/location_icon.png", "icon": "hosp_location.svg",
"caller": "navigateToProject" "caller": "navigateToProject",
} }
]; ];
} }

@ -24,7 +24,7 @@ class BookedButtonsAllowCheckIn {
{ {
"title": TranslationBase.of(AppGlobal.context).raise, "title": TranslationBase.of(AppGlobal.context).raise,
"subtitle": TranslationBase.of(AppGlobal.context).complaint, "subtitle": TranslationBase.of(AppGlobal.context).complaint,
"icon": "assets/images/new-design/Complaint_icon.png", "icon": "raise_comp.svg",
"caller": "insertComplaint", "caller": "insertComplaint",
}, },
{ {

@ -3,47 +3,22 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
class ConfirmedButtons { class ConfirmedButtons {
var buttons = [ var buttons = [
{ {"title": TranslationBase.of(AppGlobal.context).reschedule, "subtitle": TranslationBase.of(AppGlobal.context).appointment, "icon": "reschedule.svg", "caller": "openReschedule"},
"title": TranslationBase.of(AppGlobal.context).reschedule,
"subtitle": TranslationBase.of(AppGlobal.context).appointment,
"icon": "assets/images/new-design/reschedule_icon.png",
"caller": "openReschedule"
},
{ {
"title": TranslationBase.of(AppGlobal.context).cancel_nocaps, "title": TranslationBase.of(AppGlobal.context).cancel_nocaps,
"subtitle": TranslationBase.of(AppGlobal.context).appointment, "subtitle": TranslationBase.of(AppGlobal.context).appointment,
"icon": "assets/images/new-design/cancel_icon.png", "icon": "assets/images/new-design/cancel_icon.png",
"caller": "onCancelAppointment" "caller": "onCancelAppointment"
}, },
{ {"title": TranslationBase.of(AppGlobal.context).raise, "subtitle": TranslationBase.of(AppGlobal.context).complaint, "icon": "raise_comp.svg", "caller": "insertComplaint"},
"title": TranslationBase.of(AppGlobal.context).raise, {"title": TranslationBase.of(AppGlobal.context).add, "subtitle": TranslationBase.of(AppGlobal.context).reminder, "icon": "add_reminder.svg", "caller": "addReminder"},
"subtitle": TranslationBase.of(AppGlobal.context).complaint, {"title": TranslationBase.of(AppGlobal.context).hospital, "subtitle": TranslationBase.of(AppGlobal.context).location, "icon": "hosp_location.svg", "caller": "navigateToProject"},
"icon": "assets/images/new-design/Complaint_icon.png",
"caller": "insertComplaint"
},
{
"title": TranslationBase.of(AppGlobal.context).add,
"subtitle": TranslationBase.of(AppGlobal.context).reminder,
"icon": "assets/images/new-design/reminder_icon.png",
"caller": "addReminder"
},
{
"title": TranslationBase.of(AppGlobal.context).hospital,
"subtitle": TranslationBase.of(AppGlobal.context).location,
"icon": "assets/images/new-design/location_icon.png",
"caller": "navigateToProject"
},
// { // {
// "title": "Generate", // "title": "Generate",
// "subtitle": "Visit Ticket", // "subtitle": "Visit Ticket",
// "icon": "assets/images/new-design/generate_visit_ticket.png", // "icon": "assets/images/new-design/generate_visit_ticket.png",
// "caller": "visitTicket" // "caller": "visitTicket"
// }, // },
{ {"title": TranslationBase.of(AppGlobal.context).online, "subtitle": TranslationBase.of(AppGlobal.context).payment, "icon": "online_payment.svg", "caller": "goToTodoList"}
"title": TranslationBase.of(AppGlobal.context).online,
"subtitle": TranslationBase.of(AppGlobal.context).payment,
"icon": "assets/images/new-design/check-in.png",
"caller": "goToTodoList"
}
]; ];
} }

@ -51,8 +51,6 @@ class AppointmentActions extends StatefulWidget {
class _AppointmentActionsState extends State<AppointmentActions> { class _AppointmentActionsState extends State<AppointmentActions> {
List<AppoDetailsButton> appoButtonsList = []; List<AppoDetailsButton> appoButtonsList = [];
ToDoCountProviderModel toDoProvider;
@override @override
void initState() { void initState() {
_getAppointmentActionButtons(); _getAppointmentActionButtons();
@ -62,7 +60,6 @@ class _AppointmentActionsState extends State<AppointmentActions> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
toDoProvider = Provider.of<ToDoCountProviderModel>(context);
var size = MediaQuery.of(context).size; var size = MediaQuery.of(context).size;
final double itemHeight = projectViewModel.isArabic ? ((size.height - kToolbarHeight - 24) * 0.5) / 2 : ((size.height - kToolbarHeight - 24) * 0.45) / 2; final double itemHeight = projectViewModel.isArabic ? ((size.height - kToolbarHeight - 24) * 0.5) / 2 : ((size.height - kToolbarHeight - 24) * 0.45) / 2;
final double itemWidth = size.width / 2; final double itemWidth = size.width / 2;
@ -83,6 +80,7 @@ class _AppointmentActionsState extends State<AppointmentActions> {
subTitle: appoButtonsList[index].subtitle, subTitle: appoButtonsList[index].subtitle,
hasBadge: true, hasBadge: true,
isEnable: projectViewModel.havePrivilege(5), isEnable: projectViewModel.havePrivilege(5),
imgColor: Color(0xff28323A),
), ),
); );
}, },
@ -166,20 +164,20 @@ class _AppointmentActionsState extends State<AppointmentActions> {
}); });
break; break;
case "onCancelAppointment": // case "onCancelAppointment":
ConfirmDialog dialog = new ConfirmDialog( // ConfirmDialog dialog = new ConfirmDialog(
context: context, // context: context,
confirmMessage: TranslationBase.of(context).cancelAppoMsg, // confirmMessage: TranslationBase.of(context).cancelAppoMsg,
okText: TranslationBase.of(context).confirm, // okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps, // cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () => {cancelAppointment()}, // okFunction: () => {cancelAppointment()},
cancelFunction: () => {}); // cancelFunction: () => {});
dialog.showAlertDialog(context); // dialog.showAlertDialog(context);
break; // break;
case "confirmAppointment": // case "confirmAppointment":
confirmAppointment(); // confirmAppointment();
break; // break;
case "navigateToProject": case "navigateToProject":
openMap(double.parse(widget.appo.latitude), double.parse(widget.appo.longitude)); openMap(double.parse(widget.appo.latitude), double.parse(widget.appo.longitude));
@ -384,38 +382,38 @@ class _AppointmentActionsState extends State<AppointmentActions> {
}); });
} }
cancelAppointment() { // cancelAppointment() {
ConfirmDialog.closeAlertDialog(context); // ConfirmDialog.closeAlertDialog(context);
GifLoaderDialogUtils.showMyDialog(context); // GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService(); // DoctorsListService service = new DoctorsListService();
service.cancelAppointment(widget.appo, context).then((res) { // service.cancelAppointment(widget.appo, context).then((res) {
GifLoaderDialogUtils.hideDialog(context); // GifLoaderDialogUtils.hideDialog(context);
print(res); // print(res);
if (res['MessageStatus'] == 1) { // if (res['MessageStatus'] == 1) {
getToDoCount(); // getToDoCount();
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); // AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
Navigator.of(context).pop(); // Navigator.of(context).pop();
} else { // } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); // AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} // }
}).catchError((err) { // }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context); // GifLoaderDialogUtils.hideDialog(context);
print(err); // print(err);
}); // });
} // }
getToDoCount() { // getToDoCount() {
toDoProvider.setState(0, true); // toDoProvider.setState(0, true);
ClinicListService service = new ClinicListService(); // ClinicListService service = new ClinicListService();
service.getActiveAppointmentNo(context).then((res) { // service.getActiveAppointmentNo(context).then((res) {
print(res['AppointmentActiveNumber']); // print(res['AppointmentActiveNumber']);
if (res['MessageStatus'] == 1) { // if (res['MessageStatus'] == 1) {
toDoProvider.setState(res['AppointmentActiveNumber'], true); // toDoProvider.setState(res['AppointmentActiveNumber'], true);
} else {} // } else {}
}).catchError((err) { // }).catchError((err) {
print(err); // print(err);
}); // });
} // }
openAppointmentLabResults() { openAppointmentLabResults() {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
@ -613,22 +611,22 @@ class _AppointmentActionsState extends State<AppointmentActions> {
}); });
} }
confirmAppointment() { // confirmAppointment() {
GifLoaderDialogUtils.showMyDialog(context); // GifLoaderDialogUtils.showMyDialog(context);
DoctorsListService service = new DoctorsListService(); // DoctorsListService service = new DoctorsListService();
service.confirmAppointment(widget.appo.appointmentNo, widget.appo.clinicID, widget.appo.projectID, widget.appo.isLiveCareAppointment, context).then((res) { // service.confirmAppointment(widget.appo.appointmentNo, widget.appo.clinicID, widget.appo.projectID, widget.appo.isLiveCareAppointment, context).then((res) {
GifLoaderDialogUtils.hideDialog(context); // GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { // if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); // AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
Navigator.of(context).pop(); // Navigator.of(context).pop();
} else { // } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); // AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} // }
}).catchError((err) { // }).catchError((err) {
GifLoaderDialogUtils.hideDialog(context); // GifLoaderDialogUtils.hideDialog(context);
print(err); // print(err);
}); // });
} // }
navigateToInsuranceApprovals(int appoNo) { navigateToInsuranceApprovals(int appoNo) {
Navigator.push(context, FadePage(page: InsuranceApproval(appointmentNo: appoNo))); Navigator.push(context, FadePage(page: InsuranceApproval(appointmentNo: appoNo)));

@ -45,22 +45,23 @@ class _WelcomeLogin extends State<WelcomeLogin> {
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: SvgPicture.asset( child: SvgPicture.asset(
"assets/images/new/hmg_icon.svg", "assets/images/new/hmg_icon.svg",
height: 35, height: 62,
width: 35, width: 62,
), ),
), ),
SizedBox(height: 16), SizedBox(height: 24),
Text( Text(
TranslationBase.of(context).welcome, TranslationBase.of(context).welcome,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
), ),
SizedBox(height: 16),
Text( Text(
TranslationBase.of(context).welcomeText, TranslationBase.of(context).welcomeText,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
Text( Text(
TranslationBase.of(context).welcomeText2, TranslationBase.of(context).welcomeText2,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
SizedBox( SizedBox(
height: 14, height: 14,

@ -52,6 +52,7 @@ class LabsHomePage extends StatelessWidget {
widthFactor: 1.0, widthFactor: 1.0,
child: ListView.separated( child: ListView.separated(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
padding: EdgeInsets.only(top: 12),
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return Container( return Container(
height: 1, height: 1,

@ -24,7 +24,7 @@ class _MyAdmissionsPageState extends State<MyAdmissionsPage> {
date:DateTime.now(),// 'Feb 14, 2020', date:DateTime.now(),// 'Feb 14, 2020',
profileUrl: profileUrl:
'https://scontent.famm4-1.fna.fbcdn.net/v/t31.0-8/30425660_1862582094040824_7851633779570222226_o.jpg?_nc_cat=101&_nc_sid=09cbfe&_nc_eui2=AeF3TI6D2_tFS5QoQsqyaCKd2zBfzh74hOzbMF_OHviE7PQdLHRwmBoIOiKyWmK9MskOshPjkU73a5EdQMA3dqnV&_nc_ohc=1feou2fDCuIAX_Ra9qB&_nc_ht=scontent.famm4-1.fna&oh=709d34d1c284de1d0aa08ed37b0ac09a&oe=5F3C5ACB', 'https://scontent.famm4-1.fna.fbcdn.net/v/t31.0-8/30425660_1862582094040824_7851633779570222226_o.jpg?_nc_cat=101&_nc_sid=09cbfe&_nc_eui2=AeF3TI6D2_tFS5QoQsqyaCKd2zBfzh74hOzbMF_OHviE7PQdLHRwmBoIOiKyWmK9MskOshPjkU73a5EdQMA3dqnV&_nc_ohc=1feou2fDCuIAX_Ra9qB&_nc_ht=scontent.famm4-1.fna&oh=709d34d1c284de1d0aa08ed37b0ac09a&oe=5F3C5ACB',
rat: 3.8, rating: 3.8,
subName: 'Jammal', subName: 'Jammal',
), ),
DoctorCard( DoctorCard(
@ -32,7 +32,7 @@ class _MyAdmissionsPageState extends State<MyAdmissionsPage> {
date: DateTime.now(),//'Feb 14, 2020', date: DateTime.now(),//'Feb 14, 2020',
profileUrl: profileUrl:
'https://scontent.famm4-1.fna.fbcdn.net/v/t31.0-8/30425660_1862582094040824_7851633779570222226_o.jpg?_nc_cat=101&_nc_sid=09cbfe&_nc_eui2=AeF3TI6D2_tFS5QoQsqyaCKd2zBfzh74hOzbMF_OHviE7PQdLHRwmBoIOiKyWmK9MskOshPjkU73a5EdQMA3dqnV&_nc_ohc=1feou2fDCuIAX_Ra9qB&_nc_ht=scontent.famm4-1.fna&oh=709d34d1c284de1d0aa08ed37b0ac09a&oe=5F3C5ACB', 'https://scontent.famm4-1.fna.fbcdn.net/v/t31.0-8/30425660_1862582094040824_7851633779570222226_o.jpg?_nc_cat=101&_nc_sid=09cbfe&_nc_eui2=AeF3TI6D2_tFS5QoQsqyaCKd2zBfzh74hOzbMF_OHviE7PQdLHRwmBoIOiKyWmK9MskOshPjkU73a5EdQMA3dqnV&_nc_ohc=1feou2fDCuIAX_Ra9qB&_nc_ht=scontent.famm4-1.fna&oh=709d34d1c284de1d0aa08ed37b0ac09a&oe=5F3C5ACB',
rat: 3.8, rating: 3.8,
subName: 'Jammal', subName: 'Jammal',
), ),
], ],
@ -49,7 +49,7 @@ class _MyAdmissionsPageState extends State<MyAdmissionsPage> {
date: DateTime.now(),//'Feb 14, 2020', date: DateTime.now(),//'Feb 14, 2020',
profileUrl: profileUrl:
'https://scontent.famm4-1.fna.fbcdn.net/v/t31.0-8/30425660_1862582094040824_7851633779570222226_o.jpg?_nc_cat=101&_nc_sid=09cbfe&_nc_eui2=AeF3TI6D2_tFS5QoQsqyaCKd2zBfzh74hOzbMF_OHviE7PQdLHRwmBoIOiKyWmK9MskOshPjkU73a5EdQMA3dqnV&_nc_ohc=1feou2fDCuIAX_Ra9qB&_nc_ht=scontent.famm4-1.fna&oh=709d34d1c284de1d0aa08ed37b0ac09a&oe=5F3C5ACB', 'https://scontent.famm4-1.fna.fbcdn.net/v/t31.0-8/30425660_1862582094040824_7851633779570222226_o.jpg?_nc_cat=101&_nc_sid=09cbfe&_nc_eui2=AeF3TI6D2_tFS5QoQsqyaCKd2zBfzh74hOzbMF_OHviE7PQdLHRwmBoIOiKyWmK9MskOshPjkU73a5EdQMA3dqnV&_nc_ohc=1feou2fDCuIAX_Ra9qB&_nc_ht=scontent.famm4-1.fna&oh=709d34d1c284de1d0aa08ed37b0ac09a&oe=5F3C5ACB',
rat: 4.8, rating: 4.8,
subName: 'Jammal', subName: 'Jammal',
), ),
), ),

@ -48,7 +48,7 @@ class _PatientSickLeavePageState extends State<PatientSickLeavePage> {
name: model.sickLeaveList[index].doctorName, name: model.sickLeaveList[index].doctorName,
date: model.sickLeaveList[index].appointmentDate, date: model.sickLeaveList[index].appointmentDate,
profileUrl: model.sickLeaveList[index].doctorImageURL, profileUrl: model.sickLeaveList[index].doctorImageURL,
rat: model.sickLeaveList[index].actualDoctorRate.toDouble(), rating: model.sickLeaveList[index].actualDoctorRate.toDouble(),
subName: model.sickLeaveList[index].projectName, subName: model.sickLeaveList[index].projectName,
isInOutPatient: model.sickLeaveList[index].isInOutPatient, isInOutPatient: model.sickLeaveList[index].isInOutPatient,
onEmailTap: () { onEmailTap: () {

@ -70,7 +70,7 @@ class PrescriptionsPage extends StatelessWidget {
), ),
name: prescriptions.doctorName, name: prescriptions.doctorName,
profileUrl: prescriptions.doctorImageURL, profileUrl: prescriptions.doctorImageURL,
rat: prescriptions.actualDoctorRate.toDouble(), rating: prescriptions.actualDoctorRate.toDouble(),
subName: prescriptions.name, subName: prescriptions.name,
isInOutPatient: prescriptions.isInOutPatient, isInOutPatient: prescriptions.isInOutPatient,
isLiveCareAppointment: prescriptions.isLiveCareAppointment, isLiveCareAppointment: prescriptions.isLiveCareAppointment,

@ -55,6 +55,7 @@ class RadiologyHomePage extends StatelessWidget {
widthFactor: 1.0, widthFactor: 1.0,
child: ListView.separated( child: ListView.separated(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
padding: EdgeInsets.only(top: 12),
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return Container( return Container(
height: 1, height: 1,

@ -8,12 +8,16 @@ import 'package:diplomaticquarterapp/widgets/others/rounded_container_widget.dar
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/extensions/string_extensions.dart';
import 'package:flutter_countdown_timer/countdown_timer_controller.dart';
import 'package:flutter_countdown_timer/current_remaining_time.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:rating_bar/rating_bar.dart';
class DoctorCard extends StatelessWidget { class DoctorCard extends StatelessWidget {
final String name; final String name;
final String subName; final String subName;
final double rat; final double rating;
final DateTime date; final DateTime date;
final String profileUrl; final String profileUrl;
final String billNo; final String billNo;
@ -22,10 +26,25 @@ class DoctorCard extends StatelessWidget {
final bool isInOutPatient; final bool isInOutPatient;
final bool isLiveCareAppointment; final bool isLiveCareAppointment;
final bool isSortByClinic; final bool isSortByClinic;
final String appoTime; final String appointmentTime;
final bool isParentAppointment;
final int remainingTimeInMinutes;
DoctorCard( DoctorCard(
{this.name, this.subName, this.rat, this.date, this.profileUrl, this.isSortByClinic = true, this.billNo, this.onTap, this.onEmailTap, this.isInOutPatient, this.isLiveCareAppointment = false, this.appoTime}); {this.name,
this.subName,
this.rating,
this.date,
this.profileUrl,
this.isSortByClinic = true,
this.billNo,
this.onTap,
this.onEmailTap,
this.isInOutPatient,
this.isLiveCareAppointment = false,
this.appointmentTime,
this.remainingTimeInMinutes,
this.isParentAppointment = false});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -108,7 +127,7 @@ class DoctorCard extends StatelessWidget {
), ),
Text( Text(
// DateUtil.formatDateToTime(date), // DateUtil.formatDateToTime(date),
appoTime, appointmentTime,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48, height: 18 / 12), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48, height: 18 / 12),
), ),
], ],
@ -132,8 +151,41 @@ class DoctorCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
myRichText(isSortByClinic ? TranslationBase.of(context).hospital : TranslationBase.of(context).clinic + ":", subName), myRichText(isSortByClinic ? TranslationBase.of(context).hospital : TranslationBase.of(context).clinic + ":", subName),
myRichText(TranslationBase.of(context).invoiceNo, billNo ?? ""), Row(
//if (rat != null) StarRating(totalAverage: rat, forceStars: true), mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if (rating == null) myRichText(TranslationBase.of(context).invoiceNo, billNo ?? ""),
if (rating != null)
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
RatingBar.readOnly(
initialRating: rating,
size: 16.0,
filledColor: Color(0XFFD02127),
emptyColor: Color(0XFFD02127),
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
),
],
),
if (remainingTimeInMinutes != null)
CountdownTimer(
controller: CountdownTimerController(endTime: DateTime.now().millisecondsSinceEpoch + (remainingTimeInMinutes * 1000) * 60),
widgetBuilder: (_, CurrentRemainingTime time) {
return time != null
? Text(
"${time.days ?? 0}:${time.hours ?? 0}:${time.min}:${time.sec}",
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xffD02127), letterSpacing: -0.48, height: 18 / 12),
)
: Container();
},
),
],
),
], ],
), ),
), ),

@ -17,14 +17,9 @@ class MedicalProfileItem extends StatelessWidget {
final String subTitle; final String subTitle;
final bool hasBadge = false; final bool hasBadge = false;
bool isEnable; bool isEnable;
Color imgColor;
MedicalProfileItem({ MedicalProfileItem({@required this.imagePath, @required this.title, @required this.subTitle, hasBadge, this.isEnable = true, this.imgColor});
@required this.imagePath,
@required this.title,
@required this.subTitle,
hasBadge,
this.isEnable = true,
});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -55,6 +50,7 @@ class MedicalProfileItem extends StatelessWidget {
"assets/images/new/services/$imagePath", "assets/images/new/services/$imagePath",
height: SizeConfig.widthMultiplier * 7, height: SizeConfig.widthMultiplier * 7,
width: SizeConfig.widthMultiplier * 7, width: SizeConfig.widthMultiplier * 7,
color: imgColor,
), ),
mFlex(2), mFlex(2),
Text( Text(

@ -52,11 +52,13 @@ class TimeLineWidget extends StatelessWidget {
onTap: () { onTap: () {
//AppointmentDetails //AppointmentDetails
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: AppointmentDetails( page: AppointmentDetails(
appo: appoitmentAllHistoryResul, appo: appoitmentAllHistoryResul,
))); ),
),
);
}, },
name: appoitmentAllHistoryResul.doctorNameObj, name: appoitmentAllHistoryResul.doctorNameObj,
url: appoitmentAllHistoryResul.doctorImageURL, url: appoitmentAllHistoryResul.doctorImageURL,
@ -84,10 +86,7 @@ class TimeLineWidget extends StatelessWidget {
height: 4, height: 4,
), ),
Texts( Texts(
DateUtil.getMonthDayYearLangDateFormatted( DateUtil.getMonthDayYearLangDateFormatted(DateUtil.convertStringToDate(appoitmentAllHistoryResul.appointmentDate), projectViewModel.isArabic ? "ar" : "en"),
DateUtil.convertStringToDate(
appoitmentAllHistoryResul.appointmentDate),
projectViewModel.isArabic ? "ar" : "en"),
color: Colors.white, color: Colors.white,
fontSize: 12.5, fontSize: 12.5,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
@ -116,10 +115,7 @@ class TimeLineWidget extends StatelessWidget {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
), ),
Texts( Texts(
DateUtil.getMonthDayYearLangDateFormatted( DateUtil.getMonthDayYearLangDateFormatted(DateUtil.convertStringToDate(appoitmentAllHistoryResul.appointmentDate), projectViewModel.isArabic ? "ar" : "en"),
DateUtil.convertStringToDate(
appoitmentAllHistoryResul.appointmentDate),
projectViewModel.isArabic ? "ar" : "en"),
color: Colors.white, color: Colors.white,
fontSize: 12.5, fontSize: 12.5,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,

@ -87,67 +87,71 @@ class DoctorHeader extends StatelessWidget {
], ],
), ),
), ),
if(headerModel.actualDoctorRate!=null) Row( if(headerModel.actualDoctorRate!=null)
mainAxisAlignment: MainAxisAlignment.spaceBetween, SizedBox(
children: [ height: 43,
InkWell( child: Row(
onTap: onRatingAndReviewTap, mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Row( children: [
mainAxisSize: MainAxisSize.min, InkWell(
mainAxisAlignment: MainAxisAlignment.center, onTap: onRatingAndReviewTap,
children: [ child: Row(
SizedBox(width: 21), mainAxisSize: MainAxisSize.min,
RatingBar.readOnly( mainAxisAlignment: MainAxisAlignment.center,
initialRating: headerModel.actualDoctorRate + 0.0, children: [
size: 15.0, SizedBox(width: 21),
filledColor: Color(0XFFD02127), RatingBar.readOnly(
emptyColor: Color(0XFFD02127), initialRating: headerModel.actualDoctorRate + 0.0,
isHalfAllowed: true, size: 15.0,
halfFilledIcon: Icons.star_half, filledColor: Color(0XFFD02127),
filledIcon: Icons.star, emptyColor: Color(0XFFD02127),
emptyIcon: Icons.star_border, isHalfAllowed: true,
), halfFilledIcon: Icons.star_half,
SizedBox(width: 6), filledIcon: Icons.star,
Text( emptyIcon: Icons.star_border,
"${headerModel.totalReviews} ${TranslationBase.of(context).reviews}",
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.48,
height: 18 / 12,
decoration: onRatingAndReviewTap != null ? TextDecoration.underline : null,
), ),
), SizedBox(width: 6),
], Text(
), "${headerModel.totalReviews} ${TranslationBase.of(context).reviews}",
), style: TextStyle(
isNeedToShowButton fontSize: 12,
? InkWell( fontWeight: FontWeight.w600,
onTap: () { color: Color(0xff2B353E),
if (showConfirmMessageDialog) letterSpacing: -0.48,
showConfirmMessage(context, onTap, headerModel.email); height: 18 / 12,
else decoration: onRatingAndReviewTap != null ? TextDecoration.underline : null,
onTap();
},
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(buttonIcon ?? '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(), ),
], ),
isNeedToShowButton
? InkWell(
onTap: () {
if (showConfirmMessageDialog)
showConfirmMessage(context, onTap, headerModel.email);
else
onTap();
},
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(buttonIcon ?? '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(),
],
),
) )
], ],
), ),

@ -1,17 +1,18 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/core/enum/filter_type.dart'; import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
class MyTabView extends StatelessWidget { class MyTabView extends StatelessWidget {
final String title; final String title;
final FilterType value; final FilterType value;
final FilterType groupValue; final FilterType groupValue;
final VoidCallback onPressed; final VoidCallback onPressed;
MyTabView( MyTabView(
this.title, this.title,
this.value, this.value,
this.groupValue, this.groupValue,
this.onPressed, { this.onPressed, {
Key key, Key key,
}) : super(key: key); }) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -27,7 +28,6 @@ class MyTabView extends StatelessWidget {
title, title,
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: value == groupValue ? Color(0xff2B353E) : Color(0xff575757), color: value == groupValue ? Color(0xff2B353E) : Color(0xff575757),
letterSpacing: -0.48, letterSpacing: -0.48,

@ -83,7 +83,7 @@ class _AppExpandableNotifier extends State<AppExpandableNotifier> {
if (_mainTitle.isNotEmpty) if (_mainTitle.isNotEmpty)
Text( Text(
_mainTitle, _mainTitle,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 23 / 12), style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 1),
), ),
// Text( // Text(
// _subTitle, // _subTitle,

@ -1,3 +1,4 @@
import 'package:auto_size_text/auto_size_text.dart';
import 'package:badges/badges.dart'; import 'package:badges/badges.dart';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
@ -11,7 +12,9 @@ import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-page.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-page.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/bottom_bar.dart'; import 'package:diplomaticquarterapp/widgets/others/bottom_bar.dart';
import 'package:diplomaticquarterapp/widgets/progress_indicator/app_loader_widget.dart'; import 'package:diplomaticquarterapp/widgets/progress_indicator/app_loader_widget.dart';
@ -61,36 +64,46 @@ class AppScaffold extends StatelessWidget {
final List<ImagesInfo> imagesInfo; final List<ImagesInfo> imagesInfo;
final bool isHelp; final bool isHelp;
final String icon; final String icon;
final bool showDropDown;
final int dropdownIndexValue;
List<String> dropDownList;
final Function(int) dropDownIndexChange;
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>(); AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
AppBarWidget appBar; AppBarWidget appBar;
AppScaffold( AppScaffold({
{@required this.body, @required this.body,
this.appBarTitle = '', this.appBarTitle = '',
this.isLoading = false, this.isLoading = false,
this.isShowAppBar = false, this.isShowAppBar = false,
this.showNewAppBar = false, this.showNewAppBar = false,
this.showNewAppBarTitle = false, this.showNewAppBarTitle = false,
this.hasAppBarParam, this.hasAppBarParam,
this.bottomSheet, this.bottomSheet,
this.baseViewModel, this.baseViewModel,
this.floatingActionButton, this.floatingActionButton,
this.isPharmacy = false, this.isPharmacy = false,
this.showPharmacyCart = true, this.showPharmacyCart = true,
this.isOfferPackages = false, this.isOfferPackages = false,
this.showOfferPackagesCart = false, this.showOfferPackagesCart = false,
this.title, this.title,
this.description, this.description,
this.isShowDecPage = true, this.isShowDecPage = true,
this.isBottomBar, this.isBottomBar,
this.backgroundColor, this.backgroundColor,
this.preferredSize = 0.0, this.preferredSize = 0.0,
this.appBarIcons, this.appBarIcons,
this.infoList, this.infoList,
this.isHelp = false, this.isHelp = false,
this.icon, this.icon,
this.showHomeAppBarIcon = true, this.showHomeAppBarIcon = true,
this.imagesInfo}); this.imagesInfo,
this.showDropDown = false,
this.dropDownList,
this.dropdownIndexValue,
this.dropDownIndexChange,
});
AppScaffold setOnAppBarCartClick(VoidCallback onClick) { AppScaffold setOnAppBarCartClick(VoidCallback onClick) {
_onCartClick = onClick; _onCartClick = onClick;
@ -106,6 +119,10 @@ class AppScaffold extends StatelessWidget {
? NewAppBarWidget( ? NewAppBarWidget(
title: appBarTitle, title: appBarTitle,
showTitle: showNewAppBarTitle, showTitle: showNewAppBarTitle,
showDropDown: showDropDown,
dropdownIndexValue: dropdownIndexValue,
dropDownList: dropDownList ?? [],
dropDownIndexChange: dropDownIndexChange,
) )
: (isShowAppBar : (isShowAppBar
? appBar = AppBarWidget( ? appBar = AppBarWidget(
@ -154,11 +171,16 @@ class AppScaffold extends StatelessWidget {
class NewAppBarWidget extends StatelessWidget with PreferredSizeWidget { class NewAppBarWidget extends StatelessWidget with PreferredSizeWidget {
final bool showTitle; final bool showTitle;
final String title; final String title;
NewAppBarWidget({Key key, this.showTitle = false, this.title = ""}) : super(key: key); final bool showDropDown;
final int dropdownIndexValue;
List<String> dropDownList;
final Function(int) dropDownIndexChange;
NewAppBarWidget({Key key, this.showTitle = false, this.showDropDown = false, this.title = "", this.dropDownList, this.dropdownIndexValue, this.dropDownIndexChange}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return AppBar( return AppBar(
elevation: 0, elevation: 0,
backgroundColor: showTitle ? Colors.white : Colors.transparent, backgroundColor: showTitle ? Colors.white : Colors.transparent,
@ -174,6 +196,43 @@ class NewAppBarWidget extends StatelessWidget with PreferredSizeWidget {
style: TextStyle( style: TextStyle(
fontSize: 24, fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'), fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 35 / 24), fontSize: 24, fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'), fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 35 / 24),
), ),
),
if (showDropDown)
Container(
decoration: containerRadius(Color(0xFFF7F7F7), 30),
height: 30,
child: DropdownButtonHideUnderline(
child: ButtonTheme(
alignedDropdown: true,
child: DropdownButton<int>(
iconEnabledColor: CustomColors.grey2,
style: TextStyle(color: CustomColors.lightGreyColor, fontSize: 12),
dropdownColor: CustomColors.lightGreyColor,
value: dropdownIndexValue,
items: [
for (int i = 0; i < dropDownList.length; i++)
DropdownMenuItem<int>(
value: i,
child: AutoSizeText(
dropDownList[i],
style: TextStyle(
fontSize: 12,
fontFamily: (projectViewModel.isArabic ? 'Cairo' : 'Poppins'),
fontWeight: FontWeight.w600,
color: Color(0xff2B2E31),
letterSpacing: -.48,
// height: 12 / 18
),
),
)
],
onChanged: dropDownIndexChange,
underline: Container(
height: 0,
),
),
),
),
) )
], ],
), ),

Loading…
Cancel
Save