ask doctor ui redesigned

merge-update-with-lab-changes
Sikander Saleem 4 years ago
parent ca363adee2
commit 9fdebc2db7

@ -12,30 +12,30 @@ class ContactUsPage extends StatefulWidget {
}
class _ContactUsPageState extends State<ContactUsPage> {
LocationUtils locationUtils;
@override
void initState() {
locationUtils =
new LocationUtils(isShowConfirmDialog: true, context: context);
WidgetsBinding.instance
.addPostFrameCallback((_) => locationUtils.getCurrentLocation());
locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context);
WidgetsBinding.instance.addPostFrameCallback((_) => locationUtils.getCurrentLocation());
super.initState();
}
@override
Widget build(BuildContext context) {
return AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).hMGServiceLabel,
isShowDecPage: false,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF8F8F8),
body: Container(
margin: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
@ -46,16 +46,10 @@ class _ContactUsPageState extends State<ContactUsPage> {
text: TranslationBase.of(context).findUs,
subText: "",
type: 0,
),
),
Expanded(
child: CardCommonContact(
image: 'assets/images/new-design/feedback_icon.png',
text: TranslationBase.of(context).feedback,
subText: "",
type: 1),
child: CardCommonContact(image: 'assets/images/new-design/feedback_icon.png', text: TranslationBase.of(context).feedback, subText: "", type: 1),
),
],
),
@ -69,12 +63,10 @@ class _ContactUsPageState extends State<ContactUsPage> {
text: TranslationBase.of(context).liveChat,
subText: TranslationBase.of(context).service,
type: 2,
),
),
Expanded(
child: Container(),
),
],
),
@ -84,4 +76,3 @@ class _ContactUsPageState extends State<ContactUsPage> {
);
}
}

@ -323,7 +323,7 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
Container(
margin: EdgeInsets.only(top: 10.0),
child: Text(
TranslationBase.of(context).noBookedAppo,
_currentPage == 0 ? TranslationBase.of(context).noBookedAppo : (_currentPage == 1 ? TranslationBase.of(context).noConfirmedAppo : TranslationBase.of(context).noArrivedAppo),
style: TextStyle(
fontSize: 16.0,
),
@ -410,35 +410,42 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
}
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);
},
return InkWell(
onTap: () {
setState(() {
_currentPage = _value;
});
},
child: 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,
SizedBox(width: 10),
Text(
_label,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xff575757),
letterSpacing: -0.56,
),
),
),
],
],
),
);
}
}

@ -1,5 +1,6 @@
import 'dart:ui';
import 'package:diplomaticquarterapp/core/enum/filter_type.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/ask_doctor_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
@ -7,6 +8,7 @@ import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_h
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_page.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/new_design/my_tab_view.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -19,10 +21,11 @@ class AskDoctorHomPage extends StatefulWidget {
_AskDoctorHomPageState createState() => _AskDoctorHomPageState();
}
class _AskDoctorHomPageState extends State<AskDoctorHomPage>
with SingleTickerProviderStateMixin {
class _AskDoctorHomPageState extends State<AskDoctorHomPage> with SingleTickerProviderStateMixin {
TabController _tabController;
int filterType = 0;
@override
void initState() {
super.initState();
@ -40,83 +43,34 @@ class _AskDoctorHomPageState extends State<AskDoctorHomPage>
return AppScaffold(
isShowAppBar: true,
appBarTitle: TranslationBase.of(context).askDoctor,
body: Scaffold(
extendBodyBehindAppBar: true,
appBar: PreferredSize(
preferredSize: Size.fromHeight(65.0),
child: Stack(
children: <Widget>[
Positioned(
bottom: 1,
left: 0,
right: 0,
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Theme.of(context)
.scaffoldBackgroundColor
.withOpacity(0.8),
height: 70.0,
),
),
),
Center(
child: Container(
height: 60.0,
margin: EdgeInsets.only(top: 10.0),
width: MediaQuery.of(context).size.width * 0.9,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: Theme.of(context).dividerColor,
width: 0.9),
),
color: Colors.white),
child: Center(
child: TabBar(
isScrollable: true,
controller: _tabController,
indicatorWeight: 5.0,
labelColor: Theme.of(context).primaryColor,
labelPadding: EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
unselectedLabelColor: Colors.grey[800],
tabs: [
Tab(
child: Container(
width: MediaQuery.of(context).size.width * 0.36,
child: Center(
child: Texts(TranslationBase.of(context).askDoctor),
),
),
),
Tab(child: Container(
width: MediaQuery.of(context).size.width * 0.36,
child: Center(
child: Texts(TranslationBase.of(context).doctorResponses,textAlign: TextAlign.start,),
),
),)
],
),
),
),
),
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: Color(0xffF8F8F8),
body: Column(
children: [
Row(
children: [
MyTabView(TranslationBase.of(context).askDoctor, FilterType.Clinic, filterType == 0 ? FilterType.Clinic : FilterType.Hospital, () {
if (filterType != 0)
setState(() {
filterType = 0;
});
}),
MyTabView(TranslationBase.of(context).doctorResponses, FilterType.Hospital, filterType != 0 ? FilterType.Hospital : FilterType.Clinic, () {
if (filterType == 0)
setState(() {
filterType = 1;
});
}),
],
),
),
body: Column(
children: <Widget>[
Expanded(
child: TabBarView(
physics: BouncingScrollPhysics(),
controller: _tabController,
children: <Widget>[
AskDoctorPage(),
DoctorResponse()
],
),
)
],
),
Expanded(
child: IndexedStack(
index: filterType,
children: [AskDoctorPage(), DoctorResponse()],
),
)
],
),
);
}

@ -20,191 +20,61 @@ class AskDoctorPage extends StatelessWidget {
onModelReady: (model) => model.getMyDoctor(),
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
body: SingleChildScrollView(
child: Container(
margin: EdgeInsets.all(10),
child: Column(
children: [
SizedBox(
height: 70,
),
...List.generate(
model.patientDoctorAppointmentListHospital.length,
(index) => AppExpandableNotifier(
title:
model.patientDoctorAppointmentListHospital[index].filterName,
bodyWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children:
model.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList.map((doctor) {
return InkWell(
onTap: () {
model
.getCallInfoHoursResult(
doctorId: doctor.doctorID,
projectId: doctor.projectID)
.then((value) {
if (model.state != ViewState.ErrorLocal &&
model.state != ViewState.Error) {
// Navigator.pop(context);
Navigator.push(
context,
FadePage(
page: RequestTypePage(doctorList: doctor,),
),
);
} else {
AppToast.showErrorToast(message: model.error);
}
});
///.showProgressBar(
// text: "Loading",
// backgroundColor:
// Colors.blue.withOpacity(0.6))
},
child: Card(
margin:
EdgeInsets.fromLTRB(10.0, 16.0, 10.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: <Widget>[
Expanded(
flex: 1,
child: ClipRRect(
borderRadius:
BorderRadius.circular(100.0),
child: Image.network(
doctor.doctorImageURL,
fit: BoxFit.fill,
height: 60.0,
width: 60.0),
),
),
Expanded(
flex: 4,
child: Container(
width:
MediaQuery.of(context).size.width *
0.55,
margin: EdgeInsets.fromLTRB(
20.0, 10.0, 10.0, 0.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
if (doctor.doctorTitle != null)
Text(
doctor.doctorTitle +
" " +
doctor.name,
style: TextStyle(
fontSize: 14.0,
color: Colors.grey[700],
letterSpacing: 1.0)),
Container(
margin: EdgeInsets.only(top: 3.0),
child: Text(doctor.clinicName,
style: TextStyle(
fontSize: 12.0,
color: Colors.grey[600],
letterSpacing: 1.0)),
),
Container(
margin: EdgeInsets.only(top: 3.0),
child: Text(doctor.projectName,
style: TextStyle(
fontSize: 12.0,
color: Colors.grey[600],
letterSpacing: 1.0)),
),
if (doctor.speciality != null)
Container(
margin: EdgeInsets.only(
top: 3.0, bottom: 3.0),
child: Text(
getDoctorSpeciality(
doctor.speciality)
.trim(),
style: TextStyle(
fontSize: 12.0,
color: Colors.grey[600],
letterSpacing: 1.0)),
),
doctor.nearestFreeSlot != null
? Container(
margin: EdgeInsets.only(
top: 3.0, bottom: 3.0),
child: Text(
getDate(doctor
.nearestFreeSlot),
style: TextStyle(
fontSize: 14.0,
fontWeight:
FontWeight.bold,
color: Colors
.green[600],
letterSpacing:
1.0)),
)
: Container(),
Row(
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
RatingBar.readOnly(
initialRating: doctor
.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(
child: Image.network(
doctor.nationalityFlagURL,
width: 25.0,
height: 25.0),
),
],
),
],
),
),
),
],
),
),
),
);
}).toList(),
)),
)
],
),
),
),
body: _appointmentExpandableList(model.patientDoctorAppointmentListHospital),
),
);
}
Widget _appointmentExpandableList(List<PatientDoctorAppointmentList> _patientDoctorAppointmentList) {
return ListView.separated(
physics: BouncingScrollPhysics(),
padding: EdgeInsets.only(top: 12),
separatorBuilder: (context, index) {
return Container(
height: 1,
margin: EdgeInsets.only(left: 21, right: 21),
color: Color(0xffD9D9D9),
);
},
itemBuilder: (context, index) {
List<DoctorList> _doctorList = _patientDoctorAppointmentList[index].patientDoctorAppointmentList;
return AppExpandableNotifier(
title: _patientDoctorAppointmentList[index].filterName,
bodyWidget: ListView.separated(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21),
itemBuilder: (context, _index) {
DoctorList _doctor = _doctorList[_index];
DoctorList doctorList = DoctorList(
projectID: _doctor.projectID,
setupID: _doctor.setupID,
clinicID: _doctor.clinicID,
projectName: _doctor.projectName,
clinicName: _doctor.clinicName,
actualDoctorRate: _doctor.actualDoctorRate,
doctorID: _doctor.doctorID,
doctorRate: _doctor.doctorRate,
gender: _doctor.gender,
doctorTitle: _doctor.doctorTitle,
name: _doctor.name,
speciality: _doctor.speciality,
doctorImageURL: _doctor.doctorImageURL,
nationalityFlagURL: _doctor.nationalityFlagURL);
return DoctorView(
doctor: doctorList,
isLiveCareAppointment: false,
);
},
separatorBuilder: (context, index) => SizedBox(height: 14),
itemCount: _doctorList.length),
);
},
itemCount: _patientDoctorAppointmentList.length,
);
}
// todo 'sikander' remove this later
String getDoctorSpeciality(List<String> docSpecial) {
String docSpeciality = "";
docSpecial.forEach((v) {
@ -236,4 +106,3 @@ class AskDoctorPage extends StatelessWidget {
}
}
}

@ -64,7 +64,7 @@ class _NotAutPageState extends State<NotAutPage> {
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
),
Text(
widget.description,
widget.description??"",
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14),
),
SizedBox(

Loading…
Cancel
Save