Merge branch 'development_new_design_2.0' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into development_new_design_2.0

# Conflicts:
#	lib/pages/ToDoList/payment_method_select.dart
#	lib/pages/medical/balance/confirm_payment_page.dart
merge-update-with-lab-changes
haroon amjad 5 years ago
commit 5396138962

@ -32,36 +32,40 @@ class _SearchState extends State<Search> with TickerProviderStateMixin {
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppGlobal.context = context; AppGlobal.context = context;
return AppScaffold( return AppScaffold(
isShowAppBar: false, isShowAppBar: false,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: TranslationBase.of(context).bookAppo, appBarTitle: TranslationBase.of(context).bookAppo,
backgroundColor: Color(0xFFF7F7F7), backgroundColor: Color(0xFFF7F7F7),
body: Container( body: Column(
child: Column( children: [
children: [ TabBar(
TabBar( controller: _tabController,
tabs: [ indicatorWeight: 3.0,
Tab(child: Text(TranslationBase.of(context).clinicName, style: TextStyle(color: Colors.black))), indicatorSize: TabBarIndicatorSize.tab,
Tab( labelColor: Color(0xff2B353E),
child: Text(TranslationBase.of(context).doctorName, style: TextStyle(color: Colors.black)), unselectedLabelColor: Color(0xff575757),
) labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20),
], labelStyle: TextStyle(
controller: _tabController, fontSize: 16,
), fontWeight: FontWeight.w600,
Expanded( letterSpacing: -0.48,
child: new TabBarView( ),
physics: NeverScrollableScrollPhysics(), unselectedLabelStyle: TextStyle(
children: [ fontSize: 16,
SearchByClinic( fontWeight: FontWeight.w600,
clnicIds: widget.clnicIds, letterSpacing: -0.48,
), ),
SearchByDoctor() tabs: [Text(TranslationBase.of(context).clinicName), Text(TranslationBase.of(context).doctorName)],
],
controller: _tabController,
),
)
],
), ),
)); Expanded(
child: TabBarView(
physics: NeverScrollableScrollPhysics(),
children: [SearchByClinic(clnicIds: widget.clnicIds), SearchByDoctor()],
controller: _tabController,
),
)
],
),
);
} }
} }

@ -31,45 +31,36 @@ class _SearchResultsState extends State<SearchResults> {
isShowAppBar: true, isShowAppBar: true,
showNewAppBarTitle: true, showNewAppBarTitle: true,
showNewAppBar: true, showNewAppBar: true,
backgroundColor: CustomColors.appBackgroudGreyColor, backgroundColor: CustomColors.appBackgroudGrey2Color,
body: SingleChildScrollView( body: ListView.separated(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
child: Column( separatorBuilder: (context, index) {
children: <Widget>[ return Container(
ListView.separated( height: 1,
physics: NeverScrollableScrollPhysics(), margin: EdgeInsets.only(left: 21, right: 21),
shrinkWrap: true, color: Color(0xffD9D9D9),
// padding: EdgeInsets.only(left: 21, right: 21), );
separatorBuilder: (context, index) { },
return Container( itemBuilder: (context, index) {
height: 1, return AppExpandableNotifier(
margin: EdgeInsets.only(left: 21, right: 21), title: widget.patientDoctorAppointmentListHospital[index].filterName + " - " + widget.patientDoctorAppointmentListHospital[index].distanceInKMs + " " + TranslationBase.of(context).km,
color: Color(0xffD9D9D9), isTitleSingleLine: false,
); bodyWidget: ListView.separated(
}, shrinkWrap: true,
itemBuilder: (context, index) { physics: NeverScrollableScrollPhysics(),
return AppExpandableNotifier( padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21),
title: itemBuilder: (context, _index) {
widget.patientDoctorAppointmentListHospital[index].filterName + " - " + widget.patientDoctorAppointmentListHospital[index].distanceInKMs + " " + TranslationBase.of(context).km, //widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index].speciality = null;
bodyWidget: ListView.separated( return DoctorView(
shrinkWrap: true, doctor: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index],
physics: NeverScrollableScrollPhysics(), isLiveCareAppointment: widget.isLiveCareAppointment,
padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21), );
itemBuilder: (context, _index) { },
//widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index].speciality = null; separatorBuilder: (context, index) => SizedBox(height: 14),
return DoctorView( itemCount: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList.length),
doctor: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index], );
isLiveCareAppointment: widget.isLiveCareAppointment, },
); itemCount: widget.patientDoctorAppointmentListHospital.length,
},
separatorBuilder: (context, index) => SizedBox(height: 14),
itemCount: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList.length),
);
},
itemCount: widget.patientDoctorAppointmentListHospital.length,
),
],
),
), ),
); );
} }

@ -52,6 +52,7 @@ class _SearchByClinicState extends State<SearchByClinic> {
final GlobalKey clinicDropdownKey = GlobalKey(); final GlobalKey clinicDropdownKey = GlobalKey();
final GlobalKey projectDropdownKey = GlobalKey(); final GlobalKey projectDropdownKey = GlobalKey();
TextEditingController ageController = new TextEditingController();
ProjectViewModel projectViewModel; ProjectViewModel projectViewModel;
String radioValue = null; String radioValue = null;
@ -65,124 +66,158 @@ class _SearchByClinicState extends State<SearchByClinic> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
if (radioValue == null) radioValue = TranslationBase.of(context).female; if (projectViewModel.isLogin) {
if (radioValue == null) {
if (projectViewModel.user.gender == 1) {
radioValue = TranslationBase.of(context).male;
} else {
radioValue = TranslationBase.of(context).female;
}
}
} else if (radioValue == null) {
radioValue = TranslationBase.of(context).female;
}
if (ageController.text.isEmpty) {
ageController.text = projectViewModel.isLogin ? projectViewModel.user.age.toString() : "";
ageController.selection = TextSelection.fromPosition(TextPosition(offset: ageController.text.length));
}
return Container( return Container(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( if (projectViewModel.isLogin)
padding: const EdgeInsets.only( Column(
left: 20, children: [
right: 20, Padding(
top: 20, padding: const EdgeInsets.only(
), left: 20,
child: Text( right: 20,
TranslationBase.of(context).doctorFilter, top: 20,
style: TextStyle( ),
fontSize: 16, child: Text(
fontWeight: FontWeight.w600, TranslationBase.of(context).doctorFilter,
letterSpacing: -0.64, style: TextStyle(
), fontSize: 16,
), fontWeight: FontWeight.w600,
), letterSpacing: -0.64,
mHeight(30), ),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(left: 20, right: 20),
child: Text(
TranslationBase.of(context).gender,
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
color: Colors.black,
fontWeight: FontWeight.w600,
), ),
), ),
), mHeight(30),
Container( Column(
padding: EdgeInsets.only(left: 6, right: 6), crossAxisAlignment: CrossAxisAlignment.start,
child: Row(
children: [ children: [
Flexible( Padding(
child: Row( padding: const EdgeInsets.only(left: 20, right: 20),
children: [ child: Text(
Radio( TranslationBase.of(context).gender,
value: TranslationBase.of(context).female, style: TextStyle(
groupValue: radioValue, fontSize: 12,
onChanged: (v) { letterSpacing: -0.48,
setState(() { color: Colors.black,
radioValue = v; fontWeight: FontWeight.w600,
});
},
), ),
Text( ),
TranslationBase.of(context).female, ),
style: TextStyle( Container(
fontSize: 12, padding: EdgeInsets.only(left: 6, right: 6),
letterSpacing: -0.48, child: Row(
fontWeight: FontWeight.w600, children: [
), Flexible(
child: Row(
children: [
Radio(
value: TranslationBase.of(context).female,
groupValue: radioValue,
onChanged: (v) {
setState(() {
radioValue = v;
});
},
),
Text(
TranslationBase.of(context).female,
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
),
],
)),
Flexible(
child: Row(
children: [
Radio(
value: TranslationBase.of(context).male,
groupValue: radioValue,
onChanged: (v) {
setState(() {
radioValue = v;
});
},
),
Text(
TranslationBase.of(context).male,
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
),
],
)),
],
),
),
],
),
Container(
width: double.infinity,
decoration: containerRadius(Colors.white, 12),
margin: EdgeInsets.only(left: 20, right: 20),
padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 2),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Age",
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
color: Colors.black,
fontWeight: FontWeight.w600,
), ),
], ),
)), TextField(
Flexible( controller: ageController,
child: Row( style: TextStyle(
children: [ fontSize: 15,
Radio( letterSpacing: -0.59,
value: TranslationBase.of(context).male, color: Colors.black,
groupValue: radioValue,
onChanged: (v) {
setState(() {
radioValue = v;
});
},
), ),
Text( decoration: InputDecoration(
TranslationBase.of(context).male, contentPadding: EdgeInsets.zero,
style: TextStyle( border: OutlineInputBorder(
fontSize: 12, borderSide: BorderSide.none,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
), ),
), ),
], ),
)), // Text(
], // projectViewModel.isLogin ? projectViewModel.user.age.toString() : "",
), // style: TextStyle(
), // fontSize: 15,
], // letterSpacing: -0.59,
), // color: Colors.black,
Container( // ),
width: double.infinity, // ),
decoration: containerRadius(Colors.white, 12), ],
margin: EdgeInsets.only(left: 20, right: 20),
padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Age",
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
color: Colors.black,
fontWeight: FontWeight.w600,
),
),
Text(
projectViewModel.isLogin ? projectViewModel.user.age.toString() : "",
style: TextStyle(
fontSize: 15,
letterSpacing: -0.59,
color: Colors.black,
), ),
), ),
], ],
), ),
),
Padding( Padding(
padding: const EdgeInsets.only(left: 6, right: 6, top: 16), padding: const EdgeInsets.only(left: 6, right: 6, top: 16),
child: Row( child: Row(

@ -541,7 +541,7 @@ class _AppointmentActionsState extends State<AppointmentActions> {
page: VitalSignDetailsScreen( page: VitalSignDetailsScreen(
appointmentNo: appoNo, appointmentNo: appoNo,
projectID: projectID, projectID: projectID,
isNotOneAppointment: false, isNotOneAppointment: true,
))); )));
} }

@ -1,5 +1,6 @@
import 'dart:io'; import 'dart:io';
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/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -18,6 +19,9 @@ class _PaymentMethodState extends State<PaymentMethod> {
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).paymentMethod, appBarTitle: TranslationBase.of(context).paymentMethod,
isShowAppBar: true, isShowAppBar: true,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: CustomColors.appBackgroudGreyColor,
body: Container( body: Container(
margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
child: SingleChildScrollView( child: SingleChildScrollView(
@ -29,9 +33,7 @@ class _PaymentMethodState extends State<PaymentMethod> {
Container( Container(
margin: EdgeInsets.fromLTRB(0.0, 15.0, 0.0, 0.0), margin: EdgeInsets.fromLTRB(0.0, 15.0, 0.0, 0.0),
alignment: Alignment.center, alignment: Alignment.center,
child: Text(TranslationBase.of(context).selectPaymentOption, child: Text(TranslationBase.of(context).selectPaymentOption, style: TextStyle(fontSize: 26.0, fontWeight: FontWeight.bold)),
style: TextStyle(
fontSize: 26.0, fontWeight: FontWeight.bold)),
), ),
Container( Container(
margin: EdgeInsets.only(top: 25.0), margin: EdgeInsets.only(top: 25.0),
@ -50,18 +52,13 @@ class _PaymentMethodState extends State<PaymentMethod> {
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
side: selectedPaymentMethod == "MADA" side: selectedPaymentMethod == "MADA" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0),
? BorderSide(
color: Colors.green, width: 5.0)
: BorderSide(
color: Colors.transparent, width: 0.0),
), ),
child: Container( child: Container(
height: 120.0, height: 120.0,
padding: EdgeInsets.all(7.0), padding: EdgeInsets.all(7.0),
width: MediaQuery.of(context).size.width * 0.45, width: MediaQuery.of(context).size.width * 0.45,
child: Image.asset( child: Image.asset("assets/images/new-design/mada.png"),
"assets/images/new-design/mada.png"),
), ),
), ),
), ),
@ -79,18 +76,13 @@ class _PaymentMethodState extends State<PaymentMethod> {
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
side: selectedPaymentMethod == "VISA" side: selectedPaymentMethod == "VISA" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0),
? BorderSide(
color: Colors.green, width: 5.0)
: BorderSide(
color: Colors.transparent, width: 0.0),
), ),
child: Container( child: Container(
height: 120.0, height: 120.0,
padding: EdgeInsets.all(7.0), padding: EdgeInsets.all(7.0),
width: MediaQuery.of(context).size.width * 0.45, width: MediaQuery.of(context).size.width * 0.45,
child: Image.asset( child: Image.asset("assets/images/new-design/visa.png"),
"assets/images/new-design/visa.png"),
), ),
), ),
), ),
@ -116,18 +108,13 @@ class _PaymentMethodState extends State<PaymentMethod> {
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
side: selectedPaymentMethod == "MASTERCARD" side: selectedPaymentMethod == "MASTERCARD" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0),
? BorderSide(
color: Colors.green, width: 5.0)
: BorderSide(
color: Colors.transparent, width: 0.0),
), ),
child: Container( child: Container(
height: 120.0, height: 120.0,
padding: EdgeInsets.all(7.0), padding: EdgeInsets.all(7.0),
width: MediaQuery.of(context).size.width * 0.45, width: MediaQuery.of(context).size.width * 0.45,
child: Image.asset( child: Image.asset("assets/images/new-design/mastercard.png"),
"assets/images/new-design/mastercard.png"),
), ),
), ),
), ),
@ -145,18 +132,13 @@ class _PaymentMethodState extends State<PaymentMethod> {
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
side: selectedPaymentMethod == "Installment" side: selectedPaymentMethod == "Installment" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0),
? BorderSide(
color: Colors.green, width: 5.0)
: BorderSide(
color: Colors.transparent, width: 0.0),
), ),
child: Container( child: Container(
height: 120.0, height: 120.0,
padding: EdgeInsets.all(7.0), padding: EdgeInsets.all(7.0),
width: MediaQuery.of(context).size.width * 0.45, width: MediaQuery.of(context).size.width * 0.45,
child: Image.asset( child: Image.asset("assets/images/new-design/installment.png"),
"assets/images/new-design/installment.png"),
), ),
), ),
), ),
@ -182,17 +164,12 @@ class _PaymentMethodState extends State<PaymentMethod> {
color: Colors.white, color: Colors.white,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
side: selectedPaymentMethod == "ApplePay" side: selectedPaymentMethod == "ApplePay" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0),
? BorderSide(
color: Colors.green, width: 5.0)
: BorderSide(
color: Colors.transparent, width: 0.0),
), ),
child: Container( child: Container(
height: 120.0, height: 120.0,
padding: EdgeInsets.all(20.0), padding: EdgeInsets.all(20.0),
child: SvgPicture.asset( child: SvgPicture.asset("assets/images/new-design/applepay.svg"),
"assets/images/new-design/applepay.svg"),
), ),
), ),
), ),
@ -213,25 +190,33 @@ class _PaymentMethodState extends State<PaymentMethod> {
), ),
), ),
bottomSheet: Container( bottomSheet: Container(
width: MediaQuery.of(context).size.width, padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 20.0),
height: 50.0, color: Colors.white,
margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 20.0), child: Container(
child: ButtonTheme( width: MediaQuery.of(context).size.width,
shape: RoundedRectangleBorder( height: 50.0,
borderRadius: BorderRadius.circular(10.0), color: Colors.white,
), // margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 20.0),
minWidth: MediaQuery.of(context).size.height * 0.1, child: ButtonTheme(
height: 45.0, shape: RoundedRectangleBorder(
child: RaisedButton( borderRadius: BorderRadius.circular(10.0),
color: new Color(0xFF60686b), ),
textColor: Colors.white, minWidth: MediaQuery.of(context).size.height * 0.1,
disabledTextColor: Colors.white, height: 45.0,
disabledColor: new Color(0xFFbcc2c4), child: RaisedButton(
onPressed: () { color: CustomColors.accentColor,
Navigator.pop(context, selectedPaymentMethod); textColor: Colors.white,
}, disabledTextColor: Colors.white,
child: Text(TranslationBase.of(context).confirm, disabledColor: new Color(0xFFbcc2c4),
style: TextStyle(fontSize: 18.0)), onPressed: () {
Navigator.pop(context, selectedPaymentMethod);
},
child: Text(TranslationBase.of(context).confirm.toUpperCase(),
style: TextStyle(
fontSize: 14.0,
fontWeight: FontWeight.w600,
)),
),
), ),
), ),
), ),

@ -10,17 +10,13 @@ class AttachInsuranceCardImageDialog extends StatefulWidget {
final String fileNo; final String fileNo;
final Function(File file, String image) image; final Function(File file, String image) image;
const AttachInsuranceCardImageDialog( const AttachInsuranceCardImageDialog({Key key, this.name, this.fileNo, this.image}) : super(key: key);
{Key key, this.name, this.fileNo, this.image})
: super(key: key);
@override @override
_AttachInsuranceCardImageDialogState createState() => _AttachInsuranceCardImageDialogState createState() => _AttachInsuranceCardImageDialogState();
_AttachInsuranceCardImageDialogState();
} }
class _AttachInsuranceCardImageDialogState class _AttachInsuranceCardImageDialogState extends State<AttachInsuranceCardImageDialog> {
extends State<AttachInsuranceCardImageDialog> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -36,19 +32,41 @@ class _AttachInsuranceCardImageDialogState
Column( Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Texts(TranslationBase.of(context).attachInsuraceImage), Text(
TranslationBase.of(context).attachInsuraceImage,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
),
),
Divider(), Divider(),
Texts(widget.name), Padding(
padding: const EdgeInsets.only(left: 8, right: 8),
child: Text(
widget.name,
style: TextStyle(
fontSize: 14,
letterSpacing: -0.48,
),
),
),
SizedBox( SizedBox(
height: 3, height: 3,
), ),
Texts(TranslationBase.of(context).fileNo + " " + widget.fileNo), Text(
TranslationBase.of(context).fileNo + " " + widget.fileNo,
style: TextStyle(
fontSize: 14,
letterSpacing: -0.48,
),
),
SizedBox( SizedBox(
height: 5.0, height: 5.0,
), ),
InkWell( InkWell(
onTap: () { onTap: () {
ImageOptions.showImageOptions(context, (String image,File file) { ImageOptions.showImageOptions(context, (String image, File file) {
setState(() { setState(() {
this.image = image; this.image = image;
this.file = file; this.file = file;
@ -57,18 +75,18 @@ class _AttachInsuranceCardImageDialogState
}, },
child: image == null child: image == null
? Padding( ? Padding(
padding: const EdgeInsets.all(18.0), padding: const EdgeInsets.all(18.0),
child: Container( child: Container(
width: double.maxFinite, width: double.maxFinite,
height: 250, height: 250,
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(2), border: Border.all(color: Colors.grey, width: 1.5)),
borderRadius: BorderRadius.circular(2),
border: Border.all(color: Colors.grey, width: 1.5)),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
// mainAxisAlignment: MainAxisAlignment., // mainAxisAlignment: MainAxisAlignment.,
children: [ children: [
SizedBox(height: 25,), SizedBox(
height: 25,
),
Icon( Icon(
Icons.camera_enhance_rounded, Icons.camera_enhance_rounded,
size: 85, size: 85,
@ -77,17 +95,24 @@ class _AttachInsuranceCardImageDialogState
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Icon(Icons.attach_file), Icon(Icons.attach_file),
Texts(TranslationBase.of(context).selectAttachment.toUpperCase()) Text(
TranslationBase.of(context).selectAttachment.toUpperCase(),
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
)
], ],
), ),
], ],
), ),
), ),
) )
: Image.file( : Image.file(
file, file,
fit: BoxFit.fill, fit: BoxFit.fill,
height: 250, height: 250,
), ),
), ),
SizedBox( SizedBox(
@ -106,9 +131,14 @@ class _AttachInsuranceCardImageDialogState
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).cancel.toUpperCase(), TranslationBase.of(context).cancel.toUpperCase(),
color: Colors.red, style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
color: Colors.red,
),
), ),
), ),
), ),
@ -130,9 +160,13 @@ class _AttachInsuranceCardImageDialogState
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).ok, TranslationBase.of(context).ok.toUpperCase(),
fontWeight: FontWeight.w400, style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
)), )),
), ),
), ),

@ -4,9 +4,11 @@ import 'package:diplomaticquarterapp/core/service/insurance_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_details.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_details.dart';
import 'package:diplomaticquarterapp/theme/colors.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/pages/insurance/insurance_update_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -45,142 +47,162 @@ class _InsuranceCardState extends State<InsuranceCard> {
description: TranslationBase.of(context).infoInsuranceCards, description: TranslationBase.of(context).infoInsuranceCards,
infoList: TranslationBase.of(context).infoInsuranceCardsPoints, infoList: TranslationBase.of(context).infoInsuranceCardsPoints,
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
appBarIcons: [ showNewAppBar: true,
model.isLogin ? IconButton( showNewAppBarTitle: true,
padding: EdgeInsets.zero, backgroundColor: CustomColors.appBackgroudGreyColor,
icon: Container( floatingActionButton: FloatingActionButton(
decoration: BoxDecoration( onPressed: () {
color: Colors.white, Navigator.push(context, FadePage(page: InsuranceUpdate()));
borderRadius: BorderRadius.circular(8), },
), backgroundColor: CustomColors.accentColor,
margin: EdgeInsets.only(right: 8), child: Padding(
padding: EdgeInsets.only(right: 4, left: 4), padding: const EdgeInsets.all(12.0),
child: Image.asset( child: Image.asset(
'assets/images/medical/insurance_update_icon_.png', 'assets/images/medical/insurance_update_icon_.png',
height: SizeConfig.heightMultiplier * 5, color: Colors.white,
width: SizeConfig.heightMultiplier * 5,
),
), ),
onPressed: () { ),
Navigator.push(context, FadePage(page: InsuranceUpdate())); ),
},
) : Container(),
],
body: Container( body: Container(
margin: EdgeInsets.only(left: SizeConfig.screenWidth * 0.004, right: SizeConfig.screenWidth * 0.004, top: SizeConfig.screenWidth * 0.04), child: ListView.separated(
child: ListView.builder( itemCount: model.insurance == null ? 0 : model.insurance.length,
itemCount: model.insurance == null ? 0 : model.insurance.length, itemBuilder: (BuildContext context, int index) {
itemBuilder: (BuildContext context, int index) { return Container(
return RoundedContainer( width: double.infinity,
backgroundColor: Colors.white, padding: EdgeInsets.only(
left: 10,
right: 10,
top: index == 0 ? 10 : 0,
bottom: index == model.insurance.length - 1 ? 100 : 0,
),
child: Card(
shape: cardRadius(12),
elevation: 2,
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(12.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: [
ExpansionTile( Text(
title: Container( model.insurance[index].groupName,
height: 65.0, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: -0.64),
child: Column( ),
crossAxisAlignment: CrossAxisAlignment.start, mHeight(8),
children: <Widget>[ Text(
Padding( TranslationBase.of(context).companyName + model.insurance[index].companyName,
padding: EdgeInsets.symmetric(vertical: 15.0), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.48),
child: Texts( ),
model.insurance[index].groupName, Divider(
), thickness: 2,
color: Colors.black,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
TranslationBase.of(context).category,
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
),
Text(
model.insurance[index].subCategoryDesc,
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
), ),
], ],
), ),
), Row(
children: <Widget>[ mainAxisAlignment: MainAxisAlignment.spaceBetween,
Container( children: [
padding: EdgeInsets.all(14), Text(
width: double.infinity, TranslationBase.of(context).expirationDate,
decoration: BoxDecoration(shape: BoxShape.rectangle, border: Border.all(color: Colors.grey, width: 0.2), borderRadius: BorderRadius.all(Radius.circular(2)), boxShadow: [ style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
BoxShadow(
color: Colors.white70,
), ),
]), Text(
child: Column( convertDateFormat(
crossAxisAlignment: CrossAxisAlignment.start, model.insurance[index].cardValidTo,
children: [
Texts(
TranslationBase.of(context).companyName + model.insurance[index].companyName,
fontSize: 20.0,
fontWeight: FontWeight.w700,
), ),
Divider( style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
color: Colors.black, ),
height: 25.0, ],
thickness: 0.5, ),
), Row(
Column( mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: <Widget>[ Text(
Row( TranslationBase.of(context).status + ": ",
mainAxisAlignment: MainAxisAlignment.spaceBetween, style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
children: [Texts(TranslationBase.of(context).category, fontSize: 18.5), Texts(model.insurance[index].subCategoryDesc, fontSize: 18.5)], ),
), model.insurance[index].isActive == true
Row( ? Text(
mainAxisAlignment: MainAxisAlignment.spaceBetween, TranslationBase.of(context).activeInsurence,
children: [ style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Colors.green),
Texts(TranslationBase.of(context).expirationDate, fontSize: 18.5), )
Texts( : Text(
convertDateFormat( TranslationBase.of(context).notActive,
model.insurance[index].cardValidTo, style: TextStyle(
), fontSize: 10,
fontSize: 18.5), fontWeight: FontWeight.w600,
], color: Colors.red,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Texts(TranslationBase.of(context).status + ": ", fontSize: 18.5),
model.insurance[index].isActive == true
? Texts(TranslationBase.of(context).activeInsurence, color: Colors.green, fontWeight: FontWeight.w900, fontSize: 17.9)
: Texts(TranslationBase.of(context).notActive, color: Colors.red, fontWeight: FontWeight.w900, fontSize: 17.9)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Texts(TranslationBase.of(context).patientCard, fontSize: 18.5), Texts(model.insurance[index].patientCardID, fontSize: 18.5)],
),
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
Texts(
TranslationBase.of(context).policyNumber,
fontSize: 18.5,
), ),
Texts( )
model.insurance[index].insurancePolicyNumber, ],
fontSize: 18.5, ),
) Row(
]), mainAxisAlignment: MainAxisAlignment.spaceBetween,
], children: [
), Text(
SizedBox( TranslationBase.of(context).patientCard,
height: 14.5, style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
), ),
if (model.insurance[index].isActive == true) Text(
Container( model.insurance[index].patientCardID,
color: Colors.transparent, style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
child: SecondaryButton( ),
onTap: () => {getDetails(model.insurance[index])}, ],
label: TranslationBase.of(context).seeDetails, ),
textColor: Colors.white, Row(
), mainAxisAlignment: MainAxisAlignment.spaceBetween,
width: double.infinity, children: [
), Text(
], TranslationBase.of(context).policyNumber,
), style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
),
Text(
model.insurance[index].insurancePolicyNumber,
style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)),
)
],
), ),
], ],
), ),
if (model.insurance[index].isActive == true)
SizedBox(
height: 8.5,
),
if (model.insurance[index].isActive == true)
Container(
color: Colors.transparent,
child: SecondaryButton(
onTap: () => {
getDetails(model.insurance[index]),
},
label: TranslationBase.of(context).seeDetails,
textColor: Colors.white,
),
width: double.infinity,
),
], ],
), ),
), ),
); ),
}), );
},
separatorBuilder: (BuildContext context, int index) {
return mHeight(8);
},
),
), ),
), ),
); );

@ -3,9 +3,11 @@ import 'package:diplomaticquarterapp/core/model/insurance/Insurance_card_details
import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.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/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
@ -20,13 +22,7 @@ class InsuranceCardUpdateDetails extends StatelessWidget {
final int patientID; final int patientID;
final String name; final String name;
const InsuranceCardUpdateDetails( const InsuranceCardUpdateDetails({Key key, this.insuranceCardDetailsModel, this.patientIdentificationID, this.patientID, this.name}) : super(key: key);
{Key key,
this.insuranceCardDetailsModel,
this.patientIdentificationID,
this.patientID,
this.name})
: super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -36,290 +32,375 @@ class InsuranceCardUpdateDetails extends StatelessWidget {
isShowAppBar: true, isShowAppBar: true,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: TranslationBase.of(context).cardDetail, appBarTitle: TranslationBase.of(context).cardDetail,
body: SingleChildScrollView( showNewAppBar: true,
child: Column( showNewAppBarTitle: true,
children: [ backgroundColor: CustomColors.appBackgroudGreyColor,
...List.generate( body: Column(
insuranceCardDetailsModel.length, children: [
(index) => Padding( Expanded(
padding: const EdgeInsets.all(8.0), child: SingleChildScrollView(
child: Container( child: Padding(
width: double.maxFinite, padding: const EdgeInsets.all(12.0),
margin: EdgeInsets.only(left: 8, right: 8, top: 8), child: Column(
height: projectViewModel.isArabic ? 320 : 240, children: [
decoration: BoxDecoration( ListView.separated(
borderRadius: BorderRadius.circular(25), physics: NeverScrollableScrollPhysics(),
color: Color(0xff515B5D), shrinkWrap: true,
), itemBuilder: (context, index) {
child: Padding( return Container(
padding: const EdgeInsets.all(12.0), width: double.maxFinite,
child: Column( // height: projectViewModel.isArabic ? 320 : 240,
crossAxisAlignment: CrossAxisAlignment.start, // decoration: containerRadius(CustomColors.accentColor, 12),
children: [ child: Card(
Text( shape: cardRadius(12),
insuranceCardDetailsModel[index].memberID, color: CustomColors.accentColor,
textScaleFactor: 2.1, elevation: 4,
style: TextStyle( child: Padding(
color: Colors.white, padding: const EdgeInsets.all(12.0),
letterSpacing: 8.0,
fontWeight: FontWeight.w400,
fontSize: 15),
),
SizedBox(
height: 5,
),
Texts(
insuranceCardDetailsModel[index].companyName,
fontSize: 14,
color: Colors.white,
),
SizedBox(
height: 25,
),
Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Texts(
TranslationBase.of(context).policyHolder,
color: Colors.white,
fontSize: 14,
),
Texts(
insuranceCardDetailsModel[index]
.memberName,
color: Colors.white,
fontSize: 14,
),
],
),
),
Expanded(
child: Column(
children: [
Texts(TranslationBase.of(context).policyNo,
color: Colors.white),
Texts(
insuranceCardDetailsModel[index]
.policyNumber,
color: Colors.white),
],
),
),
],
),
SizedBox(
height: 25,
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Text(
TranslationBase.of(context) insuranceCardDetailsModel[index].memberID,
.expiryDateTitle, style: TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 12, letterSpacing: -0.48,
fontWeight: FontWeight.w600,
fontSize: 16,
),
), ),
Texts( SizedBox(
insuranceCardDetailsModel[index].dOB, height: 2,
color: Colors.white,
fontSize: 12,
), ),
], Text(
), insuranceCardDetailsModel[index].companyName,
), style: TextStyle(
Expanded( color: Colors.white,
child: Column( letterSpacing: -0.48,
children: [ fontWeight: FontWeight.w600,
Texts( fontSize: 14,
TranslationBase.of(context).classTitle, ),
color: Colors.white,
fontSize: 12,
), ),
Texts( SizedBox(
insuranceCardDetailsModel[index] height: 14,
.subCategory,
color: Colors.white,
fontSize: 12,
), ),
], Row(
), children: [
), Expanded(
Expanded( child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Text(
TranslationBase.of(context).approval, TranslationBase.of(context).policyHolder,
color: Colors.white, style: TextStyle(
fontSize: 12, color: Colors.white,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
fontSize: 12,
),
),
Text(
insuranceCardDetailsModel[index].memberName,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontSize: 12,
),
),
],
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).policyNo,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
fontSize: 12,
),
),
Text(
insuranceCardDetailsModel[index].policyNumber,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontSize: 12,
),
),
],
),
],
), ),
Texts( SizedBox(
insuranceCardDetailsModel[index] height: 14,
.approvalLimit
.toString(),
color: Colors.white,
fontSize: 12,
), ),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
TranslationBase.of(context).expiryDateTitle,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
fontSize: 12,
),
),
Text(
insuranceCardDetailsModel[index].effectiveTo,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontSize: 12,
),
),
],
),
),
Expanded(
child: Column(
children: [
Text(
TranslationBase.of(context).classTitle,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
fontSize: 12,
),
),
Text(
insuranceCardDetailsModel[index].subCategory,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontSize: 12,
),
),
],
),
),
Expanded(
child: Column(
children: [
Text(
TranslationBase.of(context).approval,
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
fontSize: 12,
),
),
Text(
insuranceCardDetailsModel[index].approvalLimit.toString(),
style: TextStyle(
color: Colors.white,
letterSpacing: -0.48,
fontSize: 12,
),
),
],
),
),
],
)
], ],
), ),
), ),
], ),
) );
], },
separatorBuilder: (context, index) {
return mHeight(12);
},
itemCount: insuranceCardDetailsModel.length,
), ),
), if (insuranceCardDetailsModel.isEmpty)
), Column(
), crossAxisAlignment: CrossAxisAlignment.center,
), children: [
if(insuranceCardDetailsModel.isEmpty) Container(
Column( child: Card(
crossAxisAlignment: CrossAxisAlignment.center, color: Colors.white,
children: [ shape: cardRadius(12),
Container(
margin: EdgeInsets.all(10.0),
child: Card(
margin: EdgeInsets.fromLTRB(
8.0, 16.0, 8.0, 8.0),
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(10),
),
child: Container(
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.all(10.0),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
flex: 3,
child: Container( child: Container(
margin: EdgeInsets.only( width: MediaQuery.of(context).size.width,
top: 2.0, padding: EdgeInsets.all(10.0),
left: 10.0, child: Row(
right: 20.0), crossAxisAlignment: CrossAxisAlignment.start,
child: Column( mainAxisSize: MainAxisSize.max,
crossAxisAlignment:
CrossAxisAlignment
.start,
children: <Widget>[ children: <Widget>[
Texts( Expanded(
name, child: Container(
fontSize: 14, margin: EdgeInsets.only(top: 2.0, left: 10.0, right: 20.0),
color: Colors.black, child: Column(
fontWeight: crossAxisAlignment: CrossAxisAlignment.start,
FontWeight.w500, children: <Widget>[
), Text(
SizedBox( name,
height: 8, style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
Text(
TranslationBase.of(context).fileno + ": " + patientID.toString(),
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
)
],
),
),
), ),
Texts(
TranslationBase.of(
context)
.fileno +
": " +patientID.toString(),
fontSize: 14,
color: Colors.black,
fontWeight:
FontWeight.w500,
)
], ],
), ),
), ),
), ),
], ),
), SizedBox(
), height: 150,
), ),
), Image.asset(
SizedBox(height: 150,), 'assets/images/no-data-found.png',
Image.asset('assets/images/no-data-found.png',width: 80,height: 80,), width: 80,
SizedBox(height: 8,), height: 80,
Texts(TranslationBase.of(context).noDataAvailable) ),
], SizedBox(
) height: 8,
], ),
), Text(
), TranslationBase.of(context).noDataAvailable,
bottomSheet: Container( style: TextStyle(
width: double.infinity, fontSize: 14,
height:insuranceCardDetailsModel.isEmpty? MediaQuery.of(context).size.height * 0.14:MediaQuery.of(context).size.height * 0.21, fontWeight: FontWeight.w600,
child: Container( letterSpacing: -0.48,
margin: EdgeInsets.only(left: 8, right: 8), ),
child: Column( )
children: [ ],
SizedBox( )
height: 8, ],
),
if(insuranceCardDetailsModel.isEmpty)
SecondaryButton(
textColor: Colors.white,
label: TranslationBase.of(context).scanNow.toUpperCase(),
color: Theme.of(context).primaryColor,
small: true,
onTap: () async {
confirmAttachInsuranceCardImageDialogDialog(
context: context,
name: name,
fileNo: patientID.toString(),
model: model);
},
), ),
if(insuranceCardDetailsModel.isNotEmpty) ),
SecondaryButton( ),
textColor: Colors.white, ),
label: TranslationBase.of(context).agree.toUpperCase(), Padding(
color: Theme.of(context).primaryColor, padding: const EdgeInsets.all(12.0),
onTap: () async { child: Column(
GifLoaderDialogUtils.showMyDialog(context); children: [
await model.uploadInsuranceCard( if (insuranceCardDetailsModel.isEmpty)
patientIdentificationID: patientIdentificationID, SecondaryButton(
patientID: patientID); textColor: Colors.white,
GifLoaderDialogUtils.hideDialog(context); label: TranslationBase.of(context).scanNow.toUpperCase(),
if (model.state == ViewState.ErrorLocal) { color: CustomColors.accentColor,
AppToast.showErrorToast(message: model.error); small: true,
} else { onTap: () async {
AppToast.showSuccessToast( confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model);
message: TranslationBase.of(context).requestSent); },
} ),
}, if (insuranceCardDetailsModel.isNotEmpty)
),if(insuranceCardDetailsModel.isNotEmpty) SecondaryButton(
SizedBox( textColor: Colors.white,
height: 12, label: TranslationBase.of(context).agree.toUpperCase(),
),if(insuranceCardDetailsModel.isNotEmpty) color: CustomColors.accentColor,
SecondaryButton( onTap: () async {
textColor: Colors.white, GifLoaderDialogUtils.showMyDialog(context);
label: TranslationBase.of(context).disagree.toUpperCase(), await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID, patientID: patientID);
color: Colors.grey[800], GifLoaderDialogUtils.hideDialog(context);
onTap: () async { if (model.state == ViewState.ErrorLocal) {
confirmAttachInsuranceCardImageDialogDialog( AppToast.showErrorToast(message: model.error);
context: context, } else {
name: name, AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent);
fileNo: patientID.toString(), }
model: model); },
}, ),
) if (insuranceCardDetailsModel.isNotEmpty)
], SizedBox(
height: 12,
),
if (insuranceCardDetailsModel.isNotEmpty)
SecondaryButton(
textColor: Colors.white,
label: TranslationBase.of(context).disagree.toUpperCase(),
color: Colors.grey[800],
onTap: () async {
confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model);
},
)
],
),
), ),
), ],
), ),
// bottomSheet: Container(
// width: double.infinity,
// height: insuranceCardDetailsModel.isEmpty ? MediaQuery.of(context).size.height * 0.14 : MediaQuery.of(context).size.height * 0.21,
// child: Container(
// margin: EdgeInsets.only(left: 8, right: 8),
// child: Column(
// children: [
// SizedBox(
// height: 8,
// ),
// if (insuranceCardDetailsModel.isEmpty)
// SecondaryButton(
// textColor: Colors.white,
// label: TranslationBase.of(context).scanNow.toUpperCase(),
// color: Theme.of(context).primaryColor,
// small: true,
// onTap: () async {
// confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model);
// },
// ),
// if (insuranceCardDetailsModel.isNotEmpty)
// SecondaryButton(
// textColor: Colors.white,
// label: TranslationBase.of(context).agree.toUpperCase(),
// color: Theme.of(context).primaryColor,
// onTap: () async {
// GifLoaderDialogUtils.showMyDialog(context);
// await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID, patientID: patientID);
// GifLoaderDialogUtils.hideDialog(context);
// if (model.state == ViewState.ErrorLocal) {
// AppToast.showErrorToast(message: model.error);
// } else {
// AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent);
// }
// },
// ),
// if (insuranceCardDetailsModel.isNotEmpty)
// SizedBox(
// height: 12,
// ),
// if (insuranceCardDetailsModel.isNotEmpty)
// SecondaryButton(
// textColor: Colors.white,
// label: TranslationBase.of(context).disagree.toUpperCase(),
// color: Colors.grey[800],
// onTap: () async {
// confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model);
// },
// )
// ],
// ),
// ),
// ),
), ),
); );
} }
void confirmAttachInsuranceCardImageDialogDialog( void confirmAttachInsuranceCardImageDialogDialog({BuildContext context, String name, String fileNo, InsuranceViewModel model}) {
{BuildContext context,
String name,
String fileNo,
InsuranceViewModel model}) {
showDialog( showDialog(
context: context, context: context,
child: AttachInsuranceCardImageDialog( child: AttachInsuranceCardImageDialog(
@ -327,17 +408,12 @@ class InsuranceCardUpdateDetails extends StatelessWidget {
name: name, name: name,
image: (file, image) async { image: (file, image) async {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await model.uploadInsuranceCard( await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID, patientID: patientID, image: image);
patientIdentificationID: patientIdentificationID,
patientID: patientID,
image: image);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (model.state == ViewState.ErrorLocal || if (model.state == ViewState.ErrorLocal || model.state == ViewState.Error) {
model.state == ViewState.Error) {
AppToast.showErrorToast(message: model.error); AppToast.showErrorToast(message: model.error);
} else { } else {
AppToast.showSuccessToast( AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent);
message: TranslationBase.of(context).requestSent);
} }
Navigator.pop(context); Navigator.pop(context);
}, },

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.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/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter_html/flutter_html.dart'; import 'package:flutter_html/flutter_html.dart';
@ -17,6 +18,9 @@ class InsuranceCardDetails extends StatelessWidget {
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).cardDetail, appBarTitle: TranslationBase.of(context).cardDetail,
showNewAppBarTitle: true,
showNewAppBar: true,
backgroundColor: CustomColors.appBackgroudGreyColor,
body: Center( body: Center(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Html( child: Html(

@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.d
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.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/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -17,223 +18,137 @@ class InsurancePage extends StatelessWidget {
InsuranceCardService _insuranceCardService = locator<InsuranceCardService>(); InsuranceCardService _insuranceCardService = locator<InsuranceCardService>();
InsurancePage({Key key, this.model}) : super(key: key); InsurancePage({Key key, this.model}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Padding(
children: [ padding: const EdgeInsets.all(12.0),
SizedBox( child: Column(
height: 65, children: [
), Container(
Container( width: double.infinity,
margin: EdgeInsets.all(10.0), child: Card(
color: Colors.white, shape: cardRadius(12),
width: MediaQuery.of(context).size.width, child: Padding(
padding: EdgeInsets.all(10.0), padding: const EdgeInsets.all(12.0),
child: Row( child: InkWell(
crossAxisAlignment: CrossAxisAlignment.start, onTap: () {
mainAxisSize: MainAxisSize.max, getDetails(
children: <Widget>[ setupID: '010266',
if (model.user != null) projectID: 15,
Expanded( patientIdentificationID: model.user.patientIdentificationNo,
flex: 3, patientID: model.user.patientID,
child: Container( name: model.user.firstName + " " + model.user.lastName,
margin: context: context,
EdgeInsets.only(top: 2.0, left: 10.0, right: 20.0), );
child: Column( },
crossAxisAlignment: CrossAxisAlignment.start, child: Row(
children: <Widget>[ crossAxisAlignment: CrossAxisAlignment.end,
Texts( mainAxisSize: MainAxisSize.max,
model.user.firstName + " " + model.user.lastName,
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.w500,
),
SizedBox(
height: 8,
),
Texts(
TranslationBase.of(context).fileno +
": " +
model.user.patientID.toString(),
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.w500,
)
],
),
),
),
Expanded(
flex: 2,
child: Container(
margin: EdgeInsets.only(top: 2.0),
child: Column(
children: <Widget>[ children: <Widget>[
Container( if (model.user != null)
child: SecondaryButton( Expanded(
label: TranslationBase.of(context).fetchData, child: Column(
small: true, crossAxisAlignment: CrossAxisAlignment.start,
textColor: Colors.white, children: <Widget>[
onTap: () { Text(
getDetails( model.user.firstName + " " + model.user.lastName,
setupID: '010266', style: TextStyle(
projectID: 15, fontSize: 14,
patientIdentificationID: fontWeight: FontWeight.w600,
model.user.patientIdentificationNo, letterSpacing: -0.46,
patientID: model.user.patientID, ),
name: model.user.firstName + ),
" " + Text(
model.user.lastName, TranslationBase.of(context).fileno + ": " + model.user.patientID.toString(),
context: context); style: TextStyle(
}, fontSize: 12,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
)
],
),
), ),
), Icon(Icons.arrow_forward),
], ],
), ),
), ),
) ),
], ),
), ),
), if (model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList != null ?? false)
if (model.getAllSharedRecordsByStatusResponse ListView.separated(
.getAllSharedRecordsByStatusList != physics: NeverScrollableScrollPhysics(),
null ?? shrinkWrap: true,
false) itemBuilder: (context, index) {
...List.generate( return model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].status == 3
model.getAllSharedRecordsByStatusResponse ? InkWell(
.getAllSharedRecordsByStatusList.length, onTap: () {
(index) => model.getAllSharedRecordsByStatusResponse getDetails(
.getAllSharedRecordsByStatusList[index].status == projectID: 15,
3 patientIdentificationID: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientIdenficationNumber,
? Container( setupID: '010266',
margin: EdgeInsets.all(10.0), patientID: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].responseID,
child: Card( name: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientName,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), context: context);
color: Colors.white, },
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
child: Container( child: Container(
width: MediaQuery.of(context).size.width, width: double.infinity,
padding: EdgeInsets.all(10.0), child: Card(
child: Row( shape: cardRadius(12),
crossAxisAlignment: CrossAxisAlignment.start, child: Padding(
mainAxisSize: MainAxisSize.max, padding: const EdgeInsets.all(12.0),
children: <Widget>[ child: Row(
Expanded( crossAxisAlignment: CrossAxisAlignment.end,
flex: 3, mainAxisSize: MainAxisSize.max,
child: Container( children: [
margin: EdgeInsets.only( Expanded(
top: 2.0, left: 10.0, right: 20.0), child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: children: [
CrossAxisAlignment.start, Text(
children: <Widget>[ model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientName,
Texts( style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, letterSpacing: -0.46),
model ),
.getAllSharedRecordsByStatusResponse Text(
.getAllSharedRecordsByStatusList[ TranslationBase.of(context).fileno + ": " + model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientID.toString(),
index] style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.46),
.patientName,
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.w500,
),
SizedBox(
height: 8,
),
Texts(
TranslationBase.of(context).fileno +
": " +
model
.getAllSharedRecordsByStatusResponse
.getAllSharedRecordsByStatusList[
index]
.patientID
.toString(),
fontSize: 14,
color: Colors.black,
fontWeight: FontWeight.w500,
)
],
),
),
),
Expanded(
flex: 2,
child: Container(
margin: EdgeInsets.only(top: 2.0),
child: Column(
children: <Widget>[
Container(
child: SecondaryButton(
label: TranslationBase.of(context)
.fetchData,
small: true,
textColor: Colors.white,
onTap: () {
getDetails(
projectID: 15,
patientIdentificationID: model
.getAllSharedRecordsByStatusResponse
.getAllSharedRecordsByStatusList[
index]
.patientIdenficationNumber,
setupID: '010266',
patientID: model
.getAllSharedRecordsByStatusResponse
.getAllSharedRecordsByStatusList[
index]
.responseID,
name: model
.getAllSharedRecordsByStatusResponse
.getAllSharedRecordsByStatusList[
index]
.patientName,
context: context);
},
), ),
), ],
], ),
), ),
), Icon(Icons.arrow_forward),
) ],
], ),
),
), ),
), ),
), )
) : Container();
: Container()), },
], separatorBuilder: (context, index) {
return mHeight(model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].status == 3 ? 8 : 0);
},
itemCount: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.length,
),
],
),
), ),
); );
} }
getDetails( getDetails({String setupID, int projectID, String patientIdentificationID, int patientID, String name, BuildContext context}) {
{String setupID,
int projectID,
String patientIdentificationID,
int patientID,
String name,
BuildContext context}) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
_insuranceCardService _insuranceCardService.getPatientInsuranceDetails(setupID: setupID, projectID: projectID, patientID: patientID, patientIdentificationID: patientIdentificationID).then((value) {
.getPatientInsuranceDetails(
setupID: setupID,
projectID: projectID,
patientID: patientID,
patientIdentificationID: patientIdentificationID)
.then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (!_insuranceCardService.hasError && if (!_insuranceCardService.hasError && _insuranceCardService.isHaveInsuranceCard) {
_insuranceCardService.isHaveInsuranceCard) {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: InsuranceCardUpdateDetails( page: InsuranceCardUpdateDetails(
insuranceCardDetailsModel: insuranceCardDetailsModel: _insuranceCardService.insuranceCardDetailsList,
_insuranceCardService.insuranceCardDetailsList,
patientID: patientID, patientID: patientID,
patientIdentificationID: patientIdentificationID, patientIdentificationID: patientIdentificationID,
name: name, name: name,

@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/service/insurance_service.dart'; import 'package:diplomaticquarterapp/core/service/insurance_service.dart';
import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/locator.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_details.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_details.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.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';
@ -23,20 +24,17 @@ class InsuranceUpdate extends StatefulWidget {
_InsuranceUpdateState createState() => _InsuranceUpdateState(); _InsuranceUpdateState createState() => _InsuranceUpdateState();
} }
class _InsuranceUpdateState extends State<InsuranceUpdate> class _InsuranceUpdateState extends State<InsuranceUpdate> with SingleTickerProviderStateMixin {
with SingleTickerProviderStateMixin {
TabController _tabController; TabController _tabController;
List<ImagesInfo> imagesInfo = List(); List<ImagesInfo> imagesInfo = List();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_tabController = TabController(length: 2, vsync: this); _tabController = TabController(length: 2, vsync: this);
imagesInfo.add(ImagesInfo( imagesInfo.add(ImagesInfo(
imageEn: imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/ar/0.png'));
'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/en/0.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/ar/0.png'));
} }
void dispose() { void dispose() {
@ -47,8 +45,7 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<InsuranceViewModel>( return BaseView<InsuranceViewModel>(
onModelReady: (model) => model.getInsuranceUpdated(), onModelReady: (model) => model.getInsuranceUpdated(),
builder: (BuildContext context, InsuranceViewModel model, Widget child) => builder: (BuildContext context, InsuranceViewModel model, Widget child) => AppScaffold(
AppScaffold(
appBarTitle: TranslationBase.of(context).insurCards, appBarTitle: TranslationBase.of(context).insurCards,
description: TranslationBase.of(context).infoInsurCards, description: TranslationBase.of(context).infoInsurCards,
infoList: TranslationBase.of(context).infoPrescriptionsPoints, infoList: TranslationBase.of(context).infoPrescriptionsPoints,
@ -56,79 +53,67 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
isShowAppBar: true, isShowAppBar: true,
isShowDecPage: true, isShowDecPage: true,
baseViewModel: model, baseViewModel: model,
body: Scaffold( showNewAppBarTitle: true,
extendBodyBehindAppBar: true, showNewAppBar: true,
appBar: PreferredSize( backgroundColor: CustomColors.appBackgroudGreyColor,
preferredSize: Size.fromHeight(70.0), body: Column(
child: Stack( children: <Widget>[
children: <Widget>[ Container(
Center( height: 45,
child: Container( child: TabBar(
height: 60.0, controller: _tabController,
margin: EdgeInsets.only(top: 10.0), isScrollable: false,
width: MediaQuery.of(context).size.width * 1.9, indicatorWeight: 3.0,
decoration: BoxDecoration( indicatorColor: CustomColors.accentColor,
border: Border( labelColor: Theme.of(context).primaryColor,
bottom: BorderSide( labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0),
color: Theme.of(context).dividerColor, unselectedLabelColor: Colors.grey,
width: 5.7, tabs: <Widget>[
Container(
child: Center(
child: Text(
TranslationBase.of(context).updateInsuranceSubtitle,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
), ),
), ),
color: Colors.white,
), ),
),
Container(
child: Center( child: Center(
child: TabBar( child: Text(
controller: _tabController, TranslationBase.of(context).history,
isScrollable: true, style: TextStyle(
indicatorWeight: 4.0, fontSize: 16,
indicatorColor: Theme.of(context).primaryColor, fontWeight: FontWeight.w600,
labelColor: Theme.of(context).primaryColor, letterSpacing: -0.48,
labelPadding: EdgeInsets.symmetric( ),
horizontal: 13.0, vertical: 2.0),
unselectedLabelColor: Colors.grey,
tabs: <Widget>[
Container(
width: MediaQuery.of(context).size.width * 0.35,
child: Center(
child: Texts(TranslationBase.of(context)
.updateInsuranceSubtitle),
),
),
Container(
width: MediaQuery.of(context).size.width * 0.35,
child: Center(
child: Texts(TranslationBase.of(context).history),
),
),
],
), ),
), ),
), ),
) ],
], ),
), ),
), Expanded(
body: Column( child: TabBarView(
children: <Widget>[ physics: BouncingScrollPhysics(),
Expanded( controller: _tabController,
child: TabBarView( children: <Widget>[
physics: BouncingScrollPhysics(), InsurancePage(model: model),
controller: _tabController, Container(
children: <Widget>[ child: Padding(
InsurancePage(model: model), padding: const EdgeInsets.all(12.0),
Container(
child: ListView.builder( child: ListView.builder(
itemCount: model.insuranceUpdate == null itemCount: model.insuranceUpdate == null ? 0 : model.insuranceUpdate.length,
? 0
: model.insuranceUpdate.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return Container( return Container(
margin: EdgeInsets.all(10.0),
child: Card( child: Card(
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
color: Colors.white, color: Colors.white,
elevation: 2,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(12),
), ),
child: Container( child: Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -143,47 +128,37 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
Expanded( Expanded(
flex: 3, flex: 3,
child: Container( child: Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(top: 2.0, left: 10.0, right: 20.0),
top: 2.0,
left: 10.0,
right: 20.0),
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts( Text(
model.user.firstName + model.user.firstName + " " + model.user.lastName,
" " + style: TextStyle(
model.user.lastName, fontSize: 14,
fontSize: 14, fontWeight: FontWeight.w600,
fontWeight: FontWeight.w500, letterSpacing: -0.46,
color: Colors.black, ),
), ),
SizedBox( SizedBox(
height: 8, height: 4,
),
Texts(
TranslationBase.of(context)
.fileno +
": " +
model
.insuranceUpdate[
index]
.patientID
.toString(),
fontSize: 14,
fontWeight: FontWeight.w500,
color: Colors.black,
), ),
SizedBox( Text(
height: 8, TranslationBase.of(context).fileno + ": " + model.insuranceUpdate[index].patientID.toString(),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
), ),
Texts(
model.insuranceUpdate[index] Text(
.createdOn, model.insuranceUpdate[index].createdOn,
fontSize: 14, style: TextStyle(
fontWeight: FontWeight.w500, fontSize: 14,
color: Colors.black, fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
), ),
], ],
), ),
@ -195,19 +170,16 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
margin: EdgeInsets.only(top: 20.0), margin: EdgeInsets.only(top: 20.0),
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset("assets/images/new-design/confirm_button.png", width: 30.0, height: 30.0),
"assets/images/new-design/confirm_button.png",
width: 30.0,
height: 30.0),
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(top: 6.5, left: 2.0),
top: 13.5, left: 2.0), child: Text(
child: Texts( model.insuranceUpdate[index].statusDescription,
model.insuranceUpdate[index] style: TextStyle(
.statusDescription, fontSize: 10,
textAlign: TextAlign.center, fontWeight: FontWeight.w600,
fontSize: 12, letterSpacing: -0.46,
color: Colors.black, ),
), ),
), ),
], ],
@ -223,10 +195,10 @@ class _InsuranceUpdateState extends State<InsuranceUpdate>
); );
}), }),
), ),
], ),
)) ],
], ))
), ],
), ),
), ),
); );

@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStat
import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectHospitalDialog.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectHospitalDialog.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -57,10 +58,8 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
super.initState(); super.initState();
getAuthUser(); getAuthUser();
imagesInfo.add(ImagesInfo( imagesInfo.add(ImagesInfo(
imageEn: imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/en/0.png',
'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/ar/0.png'));
imageAr:
'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/ar/0.png'));
} }
@override @override
@ -72,7 +71,9 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
appBarTitle: TranslationBase.of(context).advancePayment, appBarTitle: TranslationBase.of(context).advancePayment,
description: TranslationBase.of(context).infoAdvancePayment, description: TranslationBase.of(context).infoAdvancePayment,
isBottomBar: model.isLogin ? true : false, showNewAppBarTitle: true,
showNewAppBar: true,
backgroundColor: CustomColors.appBackgroudGreyColor,
body: SingleChildScrollView( body: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),
child: Container( child: Container(
@ -80,9 +81,14 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Text(
TranslationBase.of(context).advancePaymentLabel, TranslationBase.of(context).advancePaymentLabel,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
), ),
SizedBox( SizedBox(
height: 12, height: 12,
@ -90,16 +96,21 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
InkWell( InkWell(
onTap: () => confirmSelectBeneficiaryDialog(model), onTap: () => confirmSelectBeneficiaryDialog(model),
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(8),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Texts(getBeneficiaryType()), Text(
getBeneficiaryType(),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
Icon(Icons.arrow_drop_down) Icon(Icons.arrow_drop_down)
], ],
), ),
@ -115,23 +126,26 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
model.getFamilyFiles().then((value) { model.getFamilyFiles().then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
confirmSelectFamilyDialog(model confirmSelectFamilyDialog(model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList);
.getAllSharedRecordsByStatusResponse
.getAllSharedRecordsByStatusList);
}); });
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Texts(getFamilyMembersName()), Text(
Icon(Icons.arrow_drop_down) getFamilyMembersName(),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
Icon(Icons.arrow_drop_down),
], ],
), ),
), ),
@ -152,29 +166,30 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
onTap: () { onTap: () {
if (_fileTextController.text.isNotEmpty) { if (_fileTextController.text.isNotEmpty) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
model model.getPatientInfoByPatientID(id: _fileTextController.text).then((value) {
.getPatientInfoByPatientID(
id: _fileTextController.text)
.then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
confirmSelectPatientDialog(model.patientInfoList); confirmSelectPatientDialog(model.patientInfoList);
}); });
} else } else
AppToast.showErrorToast( AppToast.showErrorToast(message: 'Please Enter The File Number');
message: 'Please Enter The File Number');
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Texts(getPatientName()), Text(
Icon(Icons.arrow_drop_down) getPatientName(),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
Icon(Icons.arrow_drop_down),
], ],
), ),
), ),
@ -188,14 +203,19 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration( decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Texts(getHospitalName()), Text(
Icon(Icons.arrow_drop_down) getHospitalName(),
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
Icon(Icons.arrow_drop_down),
], ],
), ),
), ),
@ -238,15 +258,15 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
), ),
), ),
bottomSheet: Container( bottomSheet: Container(
height: 90, height: 70,
width: double.infinity, width: double.infinity,
padding: EdgeInsets.all(18), padding: EdgeInsets.all(12),
color: Colors.white,
child: SecondaryButton( child: SecondaryButton(
textColor: Colors.white, textColor: Colors.white,
label: TranslationBase.of(context).submit, label: TranslationBase.of(context).submit,
disabled: amount.isEmpty || color: CustomColors.accentColor,
_fileTextController.text.isEmpty || disabled: amount.isEmpty || _fileTextController.text.isEmpty || _selectedHospital == null,
_selectedHospital == null,
onTap: () { onTap: () {
var mobileNum; var mobileNum;
var patientName; var patientName;
@ -274,15 +294,11 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
advanceModel.mobileNumber = mobileNum; advanceModel.mobileNumber = mobileNum;
advanceModel.patientName = patientName; advanceModel.patientName = patientName;
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
model model.getPatientInfoByPatientIDAndMobileNumber(advanceModel).then((value) {
.getPatientInfoByPatientIDAndMobileNumber(advanceModel)
.then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (model.state != ViewState.Error && if (model.state != ViewState.Error && model.state != ViewState.ErrorLocal) {
model.state != ViewState.ErrorLocal) {
Utils.hideKeyboard(context); Utils.hideKeyboard(context);
Navigator.push(context, FadePage(page: PaymentMethod())) Navigator.push(context, FadePage(page: PaymentMethod())).then(
.then(
(value) { (value) {
Navigator.push( Navigator.push(
context, context,
@ -290,8 +306,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
page: ConfirmPaymentPage( page: ConfirmPaymentPage(
advanceModel: advanceModel, advanceModel: advanceModel,
selectedPaymentMethod: value, selectedPaymentMethod: value,
patientInfoAndMobileNumber: patientInfoAndMobileNumber: model.patientInfoAndMobileNumber,
model.patientInfoAndMobileNumber,
authenticatedUser: authUser, authenticatedUser: authUser,
), ),
), ),
@ -315,8 +330,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
setState(() { setState(() {
if (value == BeneficiaryType.MyAccount) { if (value == BeneficiaryType.MyAccount) {
_fileTextController.text = model.user.patientID.toString(); _fileTextController.text = model.user.patientID.toString();
advanceModel.depositorName = advanceModel.depositorName = model.user.firstName + " " + model.user.lastName;
model.user.firstName + " " + model.user.lastName;
} else } else
_fileTextController.text = ""; _fileTextController.text = "";
@ -358,8 +372,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
); );
} }
void confirmSelectFamilyDialog( void confirmSelectFamilyDialog(List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList) {
List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList) {
if (getAllSharedRecordsByStatusList.isNotEmpty) if (getAllSharedRecordsByStatusList.isNotEmpty)
showDialog( showDialog(
context: context, context: context,
@ -369,8 +382,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
onValueSelected: (value) { onValueSelected: (value) {
setState(() { setState(() {
selectedPatientFamily = value; selectedPatientFamily = value;
_fileTextController.text = _fileTextController.text = selectedPatientFamily.responseID.toString();
selectedPatientFamily.responseID.toString();
advanceModel.depositorName = value.patientName; advanceModel.depositorName = value.patientName;
}); });
}, },
@ -410,8 +422,7 @@ class _AdvancePaymentPageState extends State<AdvancePaymentPage> {
getAuthUser() async { getAuthUser() async {
if (await this.sharedPref.getObject(USER_PROFILE) != null) { if (await this.sharedPref.getObject(USER_PROFILE) != null) {
var data = AuthenticatedUser.fromJson( var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE));
await this.sharedPref.getObject(USER_PROFILE));
setState(() { setState(() {
authUser = data; authUser = data;
}); });

@ -8,6 +8,7 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
@ -59,6 +60,9 @@ class ConfirmPaymentPage extends StatelessWidget {
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).advancePayment, appBarTitle: TranslationBase.of(context).advancePayment,
showNewAppBarTitle: true,
showNewAppBar: true,
backgroundColor: CustomColors.appBackgroudGreyColor,
body: SingleChildScrollView( body: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),
child: Container( child: Container(
@ -66,11 +70,14 @@ class ConfirmPaymentPage extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Text(
TranslationBase.of(context).confirmThePayment, TranslationBase.of(context).confirmThePayment,
textAlign: TextAlign.center, textAlign: TextAlign.center,
fontWeight: FontWeight.w500, style: TextStyle(
fontSize: 24, fontSize: 18,
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
),
), ),
SizedBox( SizedBox(
height: 12, height: 12,
@ -84,10 +91,13 @@ class ConfirmPaymentPage extends StatelessWidget {
width: MediaQuery.of(context).size.width * 0.45, width: MediaQuery.of(context).size.width * 0.45,
child: selectedPaymentMethod == "ApplePay" ? SvgPicture.asset(getImagePath(selectedPaymentMethod)) : Image.asset(getImagePath(selectedPaymentMethod)), child: selectedPaymentMethod == "ApplePay" ? SvgPicture.asset(getImagePath(selectedPaymentMethod)) : Image.asset(getImagePath(selectedPaymentMethod)),
), ),
Texts( Text(
'${advanceModel.amount} SAR', '${advanceModel.amount} SAR',
fontSize: 26, style: TextStyle(
bold: true, fontSize: 20,
fontWeight: FontWeight.w900,
letterSpacing: -0.48,
),
) )
], ],
), ),
@ -147,21 +157,24 @@ class ConfirmPaymentPage extends StatelessWidget {
), ),
), ),
bottomSheet: Container( bottomSheet: Container(
height: MediaQuery.of(context).size.height * 0.13, color: Colors.white,
width: double.infinity, child: Container(
padding: EdgeInsets.all(12), height: MediaQuery.of(context).size.width * 0.18,
child: SecondaryButton( width: double.infinity,
textColor: Colors.white, padding: EdgeInsets.all(12),
color: Theme.of(context).primaryColor, child: SecondaryButton(
label: TranslationBase.of(context).confirm.toUpperCase(), textColor: Colors.white,
disabled: model.state == ViewState.Busy, color: CustomColors.accentColor,
onTap: () { label: TranslationBase.of(context).confirm.toUpperCase(),
GifLoaderDialogUtils.showMyDialog(context); disabled: model.state == ViewState.Busy,
model.sendActivationCodeForAdvancePayment(patientID: int.parse(advanceModel.fileNumber), projectID: advanceModel.hospitalsModel.iD).then((value) { onTap: () {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.showMyDialog(context);
if (model.state != ViewState.ErrorLocal && model.state != ViewState.Error) showSMSDialog(); model.sendActivationCodeForAdvancePayment(patientID: int.parse(advanceModel.fileNumber), projectID: advanceModel.hospitalsModel.iD).then((value) {
}); GifLoaderDialogUtils.hideDialog(context);
}, if (model.state != ViewState.ErrorLocal && model.state != ViewState.Error) showSMSDialog();
});
},
),
), ),
), ),
), ),

@ -10,12 +10,10 @@ class SelectBeneficiaryDialog extends StatefulWidget {
final BeneficiaryType beneficiaryType; final BeneficiaryType beneficiaryType;
final Function(BeneficiaryType) onValueSelected; final Function(BeneficiaryType) onValueSelected;
SelectBeneficiaryDialog( SelectBeneficiaryDialog({Key key, this.beneficiaryType, this.onValueSelected});
{Key key, this.beneficiaryType, this.onValueSelected});
@override @override
_SelectBeneficiaryDialogState createState() => _SelectBeneficiaryDialogState createState() => _SelectBeneficiaryDialogState(this.beneficiaryType);
_SelectBeneficiaryDialogState(this.beneficiaryType);
} }
class _SelectBeneficiaryDialogState extends State<SelectBeneficiaryDialog> { class _SelectBeneficiaryDialogState extends State<SelectBeneficiaryDialog> {
@ -42,7 +40,14 @@ class _SelectBeneficiaryDialogState extends State<SelectBeneficiaryDialog> {
}); });
}, },
child: ListTile( child: ListTile(
title: Text(TranslationBase.of(context).myAccount), title: Text(
TranslationBase.of(context).myAccount,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
leading: Radio( leading: Radio(
value: BeneficiaryType.MyAccount, value: BeneficiaryType.MyAccount,
groupValue: beneficiaryType, groupValue: beneficiaryType,
@ -72,7 +77,14 @@ class _SelectBeneficiaryDialogState extends State<SelectBeneficiaryDialog> {
}); });
}, },
child: ListTile( child: ListTile(
title: Text(TranslationBase.of(context).myFamilyFiles), title: Text(
TranslationBase.of(context).myFamilyFiles,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
leading: Radio( leading: Radio(
value: BeneficiaryType.MyFamilyFiles, value: BeneficiaryType.MyFamilyFiles,
groupValue: beneficiaryType, groupValue: beneficiaryType,
@ -102,7 +114,14 @@ class _SelectBeneficiaryDialogState extends State<SelectBeneficiaryDialog> {
}); });
}, },
child: ListTile( child: ListTile(
title: Text(TranslationBase.of(context).otherAccount), title: Text(
TranslationBase.of(context).otherAccount,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
leading: Radio( leading: Radio(
value: BeneficiaryType.OtherAccount, value: BeneficiaryType.OtherAccount,
groupValue: beneficiaryType, groupValue: beneficiaryType,
@ -134,9 +153,14 @@ class _SelectBeneficiaryDialogState extends State<SelectBeneficiaryDialog> {
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).cancel.toUpperCase(), TranslationBase.of(context).cancel.toUpperCase(),
color: Colors.red, style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
color: Colors.red,
),
), ),
), ),
), ),
@ -158,9 +182,13 @@ class _SelectBeneficiaryDialogState extends State<SelectBeneficiaryDialog> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).ok, TranslationBase.of(context).ok.toUpperCase(),
fontWeight: FontWeight.w400, style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
), ),
), ),
), ),

@ -11,8 +11,7 @@ class SelectHospitalDialog extends StatefulWidget {
final Function(HospitalsModel) onValueSelected; final Function(HospitalsModel) onValueSelected;
HospitalsModel selectedHospital; HospitalsModel selectedHospital;
SelectHospitalDialog( SelectHospitalDialog({Key key, this.hospitals, this.onValueSelected, this.selectedHospital});
{Key key, this.hospitals, this.onValueSelected, this.selectedHospital});
@override @override
_SelectHospitalDialogState createState() => _SelectHospitalDialogState(); _SelectHospitalDialogState createState() => _SelectHospitalDialogState();
@ -51,8 +50,14 @@ class _SelectHospitalDialogState extends State<SelectHospitalDialog> {
}); });
}, },
child: ListTile( child: ListTile(
title: Text(widget.hospitals[index].name + title: Text(
' ${widget.hospitals[index].distanceInKilometers} KM'), widget.hospitals[index].name + ' ${widget.hospitals[index].distanceInKilometers} KM',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
leading: Radio( leading: Radio(
value: widget.hospitals[index], value: widget.hospitals[index],
groupValue: widget.selectedHospital, groupValue: widget.selectedHospital,
@ -90,9 +95,14 @@ class _SelectHospitalDialogState extends State<SelectHospitalDialog> {
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).cancel.toUpperCase(), TranslationBase.of(context).cancel.toUpperCase(),
color: Colors.red, style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
color: Colors.red
),
), ),
), ),
), ),
@ -114,10 +124,15 @@ class _SelectHospitalDialogState extends State<SelectHospitalDialog> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).ok, TranslationBase.of(context).ok,
fontWeight: FontWeight.w400, style: TextStyle(
)), fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
),
), ),
), ),
), ),

@ -7,22 +7,21 @@ import 'package:flutter/material.dart';
import '../../../../Constants.dart'; import '../../../../Constants.dart';
class SelectPatientFamilyDialog extends StatefulWidget { class SelectPatientFamilyDialog extends StatefulWidget {
final List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList; final List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList;
final Function(GetAllSharedRecordsByStatusList) onValueSelected; final Function(GetAllSharedRecordsByStatusList) onValueSelected;
GetAllSharedRecordsByStatusList selectedPatientFamily; GetAllSharedRecordsByStatusList selectedPatientFamily;
SelectPatientFamilyDialog({Key key, this.getAllSharedRecordsByStatusList, this.onValueSelected,this.selectedPatientFamily}); SelectPatientFamilyDialog({Key key, this.getAllSharedRecordsByStatusList, this.onValueSelected, this.selectedPatientFamily});
@override @override
_SelectPatientFamilyDialogState createState() => _SelectPatientFamilyDialogState(); _SelectPatientFamilyDialogState createState() => _SelectPatientFamilyDialogState();
} }
class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> { class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
widget.selectedPatientFamily = widget.selectedPatientFamily?? widget.getAllSharedRecordsByStatusList[0]; widget.selectedPatientFamily = widget.selectedPatientFamily ?? widget.getAllSharedRecordsByStatusList[0];
} }
@override @override
@ -34,7 +33,7 @@ class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> {
Divider(), Divider(),
...List.generate( ...List.generate(
widget.getAllSharedRecordsByStatusList.length, widget.getAllSharedRecordsByStatusList.length,
(index) => Column( (index) => Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox( SizedBox(
@ -51,7 +50,14 @@ class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> {
}); });
}, },
child: ListTile( child: ListTile(
title: Text(widget.getAllSharedRecordsByStatusList[index].patientName), title: Text(
widget.getAllSharedRecordsByStatusList[index].patientName,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
leading: Radio( leading: Radio(
value: widget.getAllSharedRecordsByStatusList[index], value: widget.getAllSharedRecordsByStatusList[index],
groupValue: widget.selectedPatientFamily, groupValue: widget.selectedPatientFamily,
@ -89,9 +95,14 @@ class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> {
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).cancel.toUpperCase(), TranslationBase.of(context).cancel.toUpperCase(),
color: Colors.red, style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
color: Colors.red,
),
), ),
), ),
), ),
@ -113,10 +124,15 @@ class _SelectPatientFamilyDialogState extends State<SelectPatientFamilyDialog> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).ok, TranslationBase.of(context).ok,
fontWeight: FontWeight.w400, style: TextStyle(
)), fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
),
), ),
), ),
), ),

@ -9,22 +9,22 @@ import 'package:flutter/material.dart';
import '../../../../Constants.dart'; import '../../../../Constants.dart';
class SelectPatientInfoDialog extends StatefulWidget { class SelectPatientInfoDialog extends StatefulWidget {
final List<PatientInfo> patientInfoList ; final List<PatientInfo> patientInfoList;
final Function(PatientInfo) onValueSelected; final Function(PatientInfo) onValueSelected;
PatientInfo selectedPatientInfo; PatientInfo selectedPatientInfo;
SelectPatientInfoDialog({Key key, this.patientInfoList, this.onValueSelected,this.selectedPatientInfo}); SelectPatientInfoDialog({Key key, this.patientInfoList, this.onValueSelected, this.selectedPatientInfo});
@override @override
_SelectPatientInfoDialogState createState() => _SelectPatientInfoDialogState(); _SelectPatientInfoDialogState createState() => _SelectPatientInfoDialogState();
} }
class _SelectPatientInfoDialogState extends State<SelectPatientInfoDialog> { class _SelectPatientInfoDialogState extends State<SelectPatientInfoDialog> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
widget.selectedPatientInfo = widget.selectedPatientInfo?? widget.patientInfoList[0]; widget.selectedPatientInfo = widget.selectedPatientInfo ?? widget.patientInfoList[0];
} }
@override @override
@ -36,7 +36,7 @@ class _SelectPatientInfoDialogState extends State<SelectPatientInfoDialog> {
Divider(), Divider(),
...List.generate( ...List.generate(
widget.patientInfoList.length, widget.patientInfoList.length,
(index) => Column( (index) => Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox( SizedBox(
@ -53,7 +53,14 @@ class _SelectPatientInfoDialogState extends State<SelectPatientInfoDialog> {
}); });
}, },
child: ListTile( child: ListTile(
title: Text(widget.patientInfoList[index].fullName), title: Text(
widget.patientInfoList[index].fullName,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
leading: Radio( leading: Radio(
value: widget.patientInfoList[index], value: widget.patientInfoList[index],
groupValue: widget.selectedPatientInfo, groupValue: widget.selectedPatientInfo,
@ -91,9 +98,14 @@ class _SelectPatientInfoDialogState extends State<SelectPatientInfoDialog> {
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).cancel.toUpperCase(), TranslationBase.of(context).cancel.toUpperCase(),
color: Colors.red, style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
color: Colors.red,
),
), ),
), ),
), ),
@ -115,10 +127,15 @@ class _SelectPatientInfoDialogState extends State<SelectPatientInfoDialog> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Texts( child: Text(
TranslationBase.of(context).ok, TranslationBase.of(context).ok.toUpperCase(),
fontWeight: FontWeight.w400, style: TextStyle(
)), fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
),
), ),
), ),
), ),

@ -1,6 +1,7 @@
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.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/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
@ -17,10 +18,7 @@ class MyBalancePage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
imagesInfo.add(ImagesInfo( imagesInfo.add(ImagesInfo(
imageEn: imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/ar/0.png'));
'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/en/0.png',
imageAr:
'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/ar/0.png'));
return BaseView<MyBalanceViewModel>( return BaseView<MyBalanceViewModel>(
onModelReady: (model) => model.getPatientAdvanceBalanceAmount(), onModelReady: (model) => model.getPatientAdvanceBalanceAmount(),
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
@ -29,16 +27,22 @@ class MyBalancePage extends StatelessWidget {
appBarTitle: TranslationBase.of(context).myBalances, appBarTitle: TranslationBase.of(context).myBalances,
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
description: TranslationBase.of(context).infoMyBalance, description: TranslationBase.of(context).infoMyBalance,
showNewAppBar: true,
showNewAppBarTitle: true,
backgroundColor: CustomColors.appBackgroudGreyColor,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
margin: EdgeInsets.all(12), margin: EdgeInsets.all(12),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Text(
TranslationBase.of(context).balanceAmount, TranslationBase.of(context).balanceAmount,
color: Colors.black, style: TextStyle(
bold: true, fontSize: 16,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
), ),
SizedBox( SizedBox(
height: 15, height: 15,
@ -55,15 +59,22 @@ class MyBalancePage extends StatelessWidget {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Texts( Text(
'${model.totalAdvanceBalanceAmount ?? 0} ' + '${model.totalAdvanceBalanceAmount ?? 0} ' + TranslationBase.of(context).sar,
TranslationBase.of(context).sar, style: TextStyle(
color: Colors.white, fontSize: 14,
bold: true, fontWeight: FontWeight.w600,
letterSpacing: -0.46,
color: Colors.white,
),
), ),
Texts( Text(
TranslationBase.of(context).totalBalance, TranslationBase.of(context).totalBalance,
color: Colors.white, style: TextStyle(
fontSize: 14,
letterSpacing: -0.46,
color: Colors.white,
),
), ),
], ],
), ),
@ -80,18 +91,26 @@ class MyBalancePage extends StatelessWidget {
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(7), borderRadius: BorderRadius.circular(12),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Texts( Text(
'${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} ' + '${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} ' + TranslationBase.of(context).sar,
TranslationBase.of(context).sar, style: TextStyle(
bold: true, fontSize: 14,
fontWeight: FontWeight.w600,
letterSpacing: -0.46,
),
),
Text(
model.patientAdvanceBalanceAmountList[index].projectDescription,
style: TextStyle(
fontSize: 14,
letterSpacing: -0.46,
),
), ),
Texts(model.patientAdvanceBalanceAmountList[index]
.projectDescription),
], ],
), ),
), ),
@ -111,6 +130,7 @@ class MyBalancePage extends StatelessWidget {
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
child: SecondaryButton( child: SecondaryButton(
textColor: Colors.white, textColor: Colors.white,
color: CustomColors.accentColor,
label: TranslationBase.of(context).createAdvancedPayment, label: TranslationBase.of(context).createAdvancedPayment,
onTap: () { onTap: () {
Navigator.push(context, FadePage(page: AdvancePaymentPage())); Navigator.push(context, FadePage(page: AdvancePaymentPage()));

@ -70,8 +70,8 @@ class NewTextFields extends StatefulWidget {
this.prefixIcon, this.prefixIcon,
this.bare = false, this.bare = false,
this.onTap, this.onTap,
this.fontSize = 16.0, this.fontSize = 14.0,
this.fontWeight = FontWeight.w700, this.fontWeight = FontWeight.w600,
this.autoValidate = false, this.autoValidate = false,
this.hintColor, this.hintColor,
this.isEnabled = true,this.counterText=""}) this.isEnabled = true,this.counterText=""})

@ -242,10 +242,8 @@ class _SecondaryButtonState extends State<SecondaryButton>
style: TextStyle( style: TextStyle(
color: widget.textColor, color: widget.textColor,
fontSize: widget.small ? 12.0 : 14.0, fontSize: widget.small ? 12.0 : 14.0,
// fontWeight: FontWeight.w800, fontWeight: FontWeight.w600,
fontFamily: projectViewModel.isArabic ),
? 'Cairo'
: 'WorkSans'),
), ),
) )
], ],

@ -18,7 +18,8 @@ class AppExpandableNotifier extends StatefulWidget {
final bool isExpand; final bool isExpand;
bool expandFlag = false; bool expandFlag = false;
var controller = new ExpandableController(); var controller = new ExpandableController();
AppExpandableNotifier({this.headerWidget, this.bodyWidget, this.title, this.collapsed, this.isExpand = false}); bool isTitleSingleLine;
AppExpandableNotifier({this.headerWidget, this.bodyWidget, this.title, this.collapsed, this.isExpand = false, this.isTitleSingleLine = true});
_AppExpandableNotifier createState() => _AppExpandableNotifier(); _AppExpandableNotifier createState() => _AppExpandableNotifier();
} }
@ -48,6 +49,8 @@ class _AppExpandableNotifier extends State<AppExpandableNotifier> {
_subTitle = _subTitle.toLowerCase().capitalizeFirstofEach; _subTitle = _subTitle.toLowerCase().capitalizeFirstofEach;
_title = _title.toLowerCase().capitalizeFirstofEach; _title = _title.toLowerCase().capitalizeFirstofEach;
} }
print("_title:$_title");
print("_subTitle:$_subTitle");
return ExpandableNotifier( return ExpandableNotifier(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
@ -66,7 +69,7 @@ class _AppExpandableNotifier extends State<AppExpandableNotifier> {
header: Padding( header: Padding(
padding: const EdgeInsets.only(top: 12, bottom: 12, left: 21, right: 21), padding: const EdgeInsets.only(top: 12, bottom: 12, left: 21, right: 21),
child: InkWell( child: InkWell(
onTap: (){ onTap: () {
setState(() { setState(() {
widget.expandFlag = !widget.expandFlag; widget.expandFlag = !widget.expandFlag;
widget.controller.expanded = widget.expandFlag; widget.controller.expanded = widget.expandFlag;
@ -80,16 +83,23 @@ class _AppExpandableNotifier extends State<AppExpandableNotifier> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if (_mainTitle.isNotEmpty) if (_mainTitle.isNotEmpty && widget.isTitleSingleLine)
Text( Text(
_mainTitle, _mainTitle,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 1), style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 1),
), ),
// Text( if (_title.isNotEmpty && !widget.isTitleSingleLine)
// _subTitle, Text(
// maxLines: 1, _title,
// style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2E303A), letterSpacing: -1.44, height: 25 / 24), maxLines: 1,
// ), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2E303A), letterSpacing: -1.44, height: 25 / 24),
),
if (_subTitle.isNotEmpty && !widget.isTitleSingleLine)
Text(
_subTitle,
maxLines: 1,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 23 / 12),
),
], ],
), ),
), ),

@ -4,29 +4,27 @@ import 'package:flutter/material.dart';
/// [page] /// [page]
class FadePage extends PageRouteBuilder { class FadePage extends PageRouteBuilder {
final Widget page; final Widget page;
FadePage({this.page}) FadePage({this.page})
: super( : super(
opaque: false, opaque: false,
fullscreenDialog: true, fullscreenDialog: true,
barrierDismissible: true, barrierDismissible: true,
barrierColor: Colors.black.withOpacity(0.8), barrierColor: Colors.black.withOpacity(0.8),
pageBuilder: ( pageBuilder: (
BuildContext context, BuildContext context,
Animation<double> animation, Animation<double> animation,
Animation<double> secondaryAnimation, Animation<double> secondaryAnimation,
) => ) =>
page, page,
transitionDuration: Duration(milliseconds: 300), transitionDuration: Duration(milliseconds: 300),
transitionsBuilder: ( transitionsBuilder: (
BuildContext context, BuildContext context,
Animation<double> animation, Animation<double> animation,
Animation<double> secondaryAnimation, Animation<double> secondaryAnimation,
Widget child, Widget child,
) { ) {
return FadeTransition( return FadeTransition(opacity: animation, child: child);
opacity: animation, },
child: child );
); }
}
);
}

Loading…
Cancel
Save