Merge branch 'development_new_design_2.0' into mirza_home_page

merge-update-with-lab-changes
Mirza.Shafique 5 years ago
commit 374a14eac4

@ -17,12 +17,12 @@ const BASE_URL = 'https://uat.hmgwebservices.com/';
// const BASE_URL = 'https://hmgwebservices.com/'; // const BASE_URL = 'https://hmgwebservices.com/';
// Pharmacy UAT URLs // Pharmacy UAT URLs
//const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/'; const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';
//const PHARMACY_BASE_URL = 'https://uat.hmgwebservices.com/epharmacy/api/'; const PHARMACY_BASE_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';
// Pharmacy Production URLs // Pharmacy Production URLs
const BASE_PHARMACY_URL = 'https://mdlaboratories.com/exacartapi/api/'; // const BASE_PHARMACY_URL = 'https://mdlaboratories.com/exacartapi/api/';
const PHARMACY_BASE_URL = 'https://mdlaboratories.com/exacartapi/api/'; // const PHARMACY_BASE_URL = 'https://mdlaboratories.com/exacartapi/api/';
const PING_SERVICE = 'Services/Weather.svc/REST/CheckConnectivity'; const PING_SERVICE = 'Services/Weather.svc/REST/CheckConnectivity';

@ -833,6 +833,7 @@ const Map localizedValues = {
"failedToAccessHmgServices": {"en": "Connected with HMG Network,\n\nBut failed to access HMG services", "ar": "Connected with HMG Network,\n\nBut failed to access HMG services"}, "failedToAccessHmgServices": {"en": "Connected with HMG Network,\n\nBut failed to access HMG services", "ar": "Connected with HMG Network,\n\nBut failed to access HMG services"},
"offerAndPackages": {"en": "Offers And Packages", "ar": "العروض والباقات"}, "offerAndPackages": {"en": "Offers And Packages", "ar": "العروض والباقات"},
"InvoiceNo": {"en": "Invoice No", "ar": "رقم الفاتورة"}, "InvoiceNo": {"en": "Invoice No", "ar": "رقم الفاتورة"},
"InvoiceDate": {"en": "Invoice Date", "ar": "تاريخ الفاتورة"},
"SpecialResult": {"en": " Special Result", "ar": "نتيجة خاصة"}, "SpecialResult": {"en": " Special Result", "ar": "نتيجة خاصة"},
"GeneralResult": {"en": "General Result", "ar": "نتيجة عامة"}, "GeneralResult": {"en": "General Result", "ar": "نتيجة عامة"},
"show-more-btn": {"en": "Flow Chart", "ar": "النتائج التراكمية"}, "show-more-btn": {"en": "Flow Chart", "ar": "النتائج التراكمية"},

@ -20,6 +20,8 @@ class AncillaryOrdersService extends BaseService {
_ancillaryLists = []; _ancillaryLists = [];
response['AncillaryOrderList'].forEach((item) { response['AncillaryOrderList'].forEach((item) {
ancillaryLists.add(AncillaryOrdersListModel.fromJson(item)); ancillaryLists.add(AncillaryOrdersListModel.fromJson(item));
print("response of ancillary Lists__________");
print(response);
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
@ -27,175 +29,25 @@ class AncillaryOrdersService extends BaseService {
}, body: body); }, body: body);
} }
Future getOrdersDetails(appointmentNo, orderNo) async { Future getOrdersDetails(appointmentNo, orderNo, projectID) async {
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body['AppointmentNo_Vida'] = appointmentNo;
body['OrderNo'] = orderNo;
body['ProjectID'] = projectID;
// "OrderNo=$orderNo&AppointmentNo_Vida=$appointmentNo&ProjectID=$projectID"
hasError = false; hasError = false;
await baseAppClient.post(GET_ANCILLARY_ORDERS_DETAILS, await baseAppClient.post(GET_ANCILLARY_ORDERS_DETAILS,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_ancillaryProcLists = []; _ancillaryProcLists = [];
response['AncillaryOrderProcList'] = [
{
"AncillaryOrderProcList": [
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 501.3,
"CompanyShareWithTax": 576.5,
"CompanyTaxAmount": 75.19,
"DiscountAmount": 55.7,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": false,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 1,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 557,
"ProcedureCategoryID": 2,
"ProcedureCategoryName": "LABORATORY",
"ProcedureID": "02013001",
"ProcedureName": "11-DESOXYCORTISOL (COMPOUND S) - S.O",
"TaxAmount": 75.19,
"TaxPct": 15
},
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 90,
"CompanyShareWithTax": 103.5,
"CompanyTaxAmount": 13.5,
"DiscountAmount": 10,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": true,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 4,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 100,
"ProcedureCategoryID": 2,
"ProcedureCategoryName": "LABORATORY",
"ProcedureID": "02014011",
"ProcedureName": "CBC (COMPLETE BLOOD COUNT PROFILE)",
"TaxAmount": 13.5,
"TaxPct": 15
},
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 347.76,
"CompanyShareWithTax": 399.92,
"CompanyTaxAmount": 52.16,
"DiscountAmount": 38.64,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": false,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 3,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 386.4,
"ProcedureCategoryID": 2,
"ProcedureCategoryName": "LABORATORY",
"ProcedureID": "02019302",
"ProcedureName": "21-HYDROXYLASE ABS - S.O",
"TaxAmount": 52.16,
"TaxPct": 15
},
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 1323,
"CompanyShareWithTax": 1521.45,
"CompanyTaxAmount": 198.45,
"DiscountAmount": 147,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": true,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 5,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 1470,
"ProcedureCategoryID": 3,
"ProcedureCategoryName": "RADIOLOGY",
"ProcedureID": "03033065",
"ProcedureName": "CT SCAN - ABDOMEN (WITH CONTRAST)",
"TaxAmount": 198.45,
"TaxPct": 15
}
],
"AppointmentDate": "/Date(1601499600000+0300)/",
"AppointmentNo": 2016053756,
"ClinicID": 1,
"ClinicName": "INTERNAL MEDICINE CLINIC",
"CompanyID": 0,
"CompanyName": "Blood Donation Investigation",
"DoctorID": 1485,
"DoctorName": "ANAS ABDULLAH",
"ErrCode": null,
"GroupID": 2,
"InsurancePolicyNo": "45976500",
"Message": "Success",
"PatientCardID": "232332323",
"PatientID": 3072055,
"PatientName": "MAYA KHALED SADDIQ",
"PatientType": 1,
"PolicyID": 2,
"PolicyName": "Test",
"ProjectID": 15,
"SetupID": "010266",
"StatusCode": 1,
"SubCategoryID": 2,
"SubPolicyNo": "234234"
}
];
response['AncillaryOrderProcList'].forEach((item) { response['AncillaryOrderProcList'].forEach((item) {
ancillaryProcLists.add(AncillaryOrdersListProcListModel.fromJson(item)); ancillaryProcLists.add(AncillaryOrdersListProcListModel.fromJson(item));
// ancillaryProcLists.add(AncillaryOrdersListProcListModel.fromJson(response['AncillaryOrderProcList']));
print("----------------------------------");
print("Test data");
print(response);
}); });
//Future.value(_ancillaryProcLists);
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;

@ -12,8 +12,10 @@ class AnciallryOrdersViewModel extends BaseViewModel {
AncillaryOrdersService _ancillaryService = locator<AncillaryOrdersService>(); AncillaryOrdersService _ancillaryService = locator<AncillaryOrdersService>();
List<AncillaryOrdersListModel> get ancillaryLists => List<AncillaryOrdersListModel> get ancillaryLists =>
_ancillaryService.ancillaryLists; _ancillaryService.ancillaryLists;
List<AncillaryOrdersListProcListModel> get ancillaryListsDetails => List<AncillaryOrdersListProcListModel> get ancillaryListsDetails =>
_ancillaryService.ancillaryProcLists; _ancillaryService.ancillaryProcLists;
Future getOrders() async { Future getOrders() async {
hasError = false; hasError = false;
setState(ViewState.Busy); setState(ViewState.Busy);
@ -25,10 +27,10 @@ class AnciallryOrdersViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getOrdersDetails(appointmentNo, orderNo) async { Future getOrdersDetails(appointmentNo, orderNo, projectID) async {
hasError = false; hasError = false;
setState(ViewState.Busy); setState(ViewState.Busy);
await _ancillaryService.getOrdersDetails(appointmentNo, orderNo); await _ancillaryService.getOrdersDetails(appointmentNo, orderNo, projectID );
if (_ancillaryService.hasError) { if (_ancillaryService.hasError) {
error = _ancillaryService.error; error = _ancillaryService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);

@ -25,7 +25,7 @@ class GetAllSharedRecordsByStatusResponse {
dynamic successMsgN; dynamic successMsgN;
dynamic doctorInformationList; dynamic doctorInformationList;
List<GetAllSharedRecordsByStatusList> getAllPendingRecordsList; List<GetAllSharedRecordsByStatusList> getAllPendingRecordsList;
List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList = List(); List<GetAllSharedRecordsByStatusList> getAllSharedRecordsByStatusList = [];
List<GetAllSharedRecordsByStatusList> getResponseFileList; List<GetAllSharedRecordsByStatusList> getResponseFileList;
bool isHMGPatient; bool isHMGPatient;
bool isLoginSuccessfully; bool isLoginSuccessfully;
@ -92,7 +92,7 @@ class GetAllSharedRecordsByStatusResponse {
this.successMsgN, this.successMsgN,
this.doctorInformationList, this.doctorInformationList,
this.getAllPendingRecordsList, this.getAllPendingRecordsList,
this.getAllSharedRecordsByStatusList , this.getAllSharedRecordsByStatusList,
this.getResponseFileList, this.getResponseFileList,
this.isHMGPatient, this.isHMGPatient,
this.isLoginSuccessfully, this.isLoginSuccessfully,
@ -164,16 +164,14 @@ class GetAllSharedRecordsByStatusResponse {
if (json['GetAllPendingRecordsList'] != null) { if (json['GetAllPendingRecordsList'] != null) {
getAllSharedRecordsByStatusList = new List<GetAllSharedRecordsByStatusList>(); getAllSharedRecordsByStatusList = new List<GetAllSharedRecordsByStatusList>();
json['GetAllPendingRecordsList'].forEach((v) { json['GetAllPendingRecordsList'].forEach((v) {
getAllSharedRecordsByStatusList getAllSharedRecordsByStatusList.add(new GetAllSharedRecordsByStatusList.fromJson(v));
.add(new GetAllSharedRecordsByStatusList.fromJson(v));
}); });
} }
if (json['GetAllSharedRecordsByStatusList'] != null) { if (json['GetAllSharedRecordsByStatusList'] != null) {
getAllSharedRecordsByStatusList = new List<GetAllSharedRecordsByStatusList>(); getAllSharedRecordsByStatusList = new List<GetAllSharedRecordsByStatusList>();
json['GetAllSharedRecordsByStatusList'].forEach((v) { json['GetAllSharedRecordsByStatusList'].forEach((v) {
getAllSharedRecordsByStatusList getAllSharedRecordsByStatusList.add(new GetAllSharedRecordsByStatusList.fromJson(v));
.add(new GetAllSharedRecordsByStatusList.fromJson(v));
}); });
} }
getResponseFileList = json['GetResponseFileList']; getResponseFileList = json['GetResponseFileList'];
@ -214,10 +212,9 @@ class GetAllSharedRecordsByStatusResponse {
memberList = json['memberList']; memberList = json['memberList'];
message = json['message']; message = json['message'];
statusCode = json['statusCode']; statusCode = json['statusCode'];
}catch (e){ } catch (e) {
var asd =""; var asd = "";
print(e); print(e);
} }
} }
@ -250,8 +247,7 @@ class GetAllSharedRecordsByStatusResponse {
data['DoctorInformation_List'] = this.doctorInformationList; data['DoctorInformation_List'] = this.doctorInformationList;
data['GetAllPendingRecordsList'] = this.getAllPendingRecordsList; data['GetAllPendingRecordsList'] = this.getAllPendingRecordsList;
if (this.getAllSharedRecordsByStatusList != null) { if (this.getAllSharedRecordsByStatusList != null) {
data['GetAllSharedRecordsByStatusList'] = data['GetAllSharedRecordsByStatusList'] = this.getAllSharedRecordsByStatusList.map((v) => v.toJson()).toList();
this.getAllSharedRecordsByStatusList.map((v) => v.toJson()).toList();
} }
data['GetResponseFileList'] = this.getResponseFileList; data['GetResponseFileList'] = this.getResponseFileList;
data['IsHMGPatient'] = this.isHMGPatient; data['IsHMGPatient'] = this.isHMGPatient;

@ -1,60 +1,61 @@
class AncillaryOrdersListProcListModel { class AncillaryOrdersListProcListModel {
List<AncillaryOrderProcList> ancillaryOrderProcList; List<AncillaryOrderProcDetailsList> ancillaryOrderProcDetailsList;
String appointmentDate; String appointmentDate;
dynamic appointmentNo; int appointmentNo;
dynamic clinicID; int clinicID;
String clinicName; String clinicName;
dynamic companyID; int companyID;
String companyName; String companyName;
dynamic doctorID; int doctorID;
String doctorName; String doctorName;
Null errCode; Null errCode;
dynamic groupID; int groupID;
String insurancePolicyNo; String insurancePolicyNo;
String message; String message;
String patientCardID; String patientCardID;
dynamic patientID; int patientID;
String patientName; String patientName;
dynamic patientType; int patientType;
dynamic policyID; int policyID;
String policyName; String policyName;
dynamic projectID; int projectID;
String setupID; String setupID;
dynamic statusCode; int statusCode;
dynamic subCategoryID; int subCategoryID;
String subPolicyNo; String subPolicyNo;
AncillaryOrdersListProcListModel( AncillaryOrdersListProcListModel(
{this.ancillaryOrderProcList, {this.ancillaryOrderProcDetailsList,
this.appointmentDate, this.appointmentDate,
this.appointmentNo, this.appointmentNo,
this.clinicID, this.clinicID,
this.clinicName, this.clinicName,
this.companyID, this.companyID,
this.companyName, this.companyName,
this.doctorID, this.doctorID,
this.doctorName, this.doctorName,
this.errCode, this.errCode,
this.groupID, this.groupID,
this.insurancePolicyNo, this.insurancePolicyNo,
this.message, this.message,
this.patientCardID, this.patientCardID,
this.patientID, this.patientID,
this.patientName, this.patientName,
this.patientType, this.patientType,
this.policyID, this.policyID,
this.policyName, this.policyName,
this.projectID, this.projectID,
this.setupID, this.setupID,
this.statusCode, this.statusCode,
this.subCategoryID, this.subCategoryID,
this.subPolicyNo}); this.subPolicyNo});
AncillaryOrdersListProcListModel.fromJson(Map<String, dynamic> json) { AncillaryOrdersListProcListModel.fromJson(Map<String, dynamic> json) {
if (json['AncillaryOrderProcList'] != null) { if (json['AncillaryOrderProcDetailsList'] != null) {
ancillaryOrderProcList = new List<AncillaryOrderProcList>(); ancillaryOrderProcDetailsList = new List<AncillaryOrderProcDetailsList>();
json['AncillaryOrderProcList'].forEach((v) { json['AncillaryOrderProcDetailsList'].forEach((v) {
ancillaryOrderProcList.add(new AncillaryOrderProcList.fromJson(v)); ancillaryOrderProcDetailsList
.add(new AncillaryOrderProcDetailsList.fromJson(v));
}); });
} }
appointmentDate = json['AppointmentDate']; appointmentDate = json['AppointmentDate'];
@ -84,9 +85,9 @@ class AncillaryOrdersListProcListModel {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.ancillaryOrderProcList != null) { if (this.ancillaryOrderProcDetailsList != null) {
data['AncillaryOrderProcList'] = data['AncillaryOrderProcDetailsList'] =
this.ancillaryOrderProcList.map((v) => v.toJson()).toList(); this.ancillaryOrderProcDetailsList.map((v) => v.toJson()).toList();
} }
data['AppointmentDate'] = this.appointmentDate; data['AppointmentDate'] = this.appointmentDate;
data['AppointmentNo'] = this.appointmentNo; data['AppointmentNo'] = this.appointmentNo;
@ -115,7 +116,7 @@ class AncillaryOrdersListProcListModel {
} }
} }
class AncillaryOrderProcList { class AncillaryOrderProcDetailsList {
dynamic approvalLineItemNo; dynamic approvalLineItemNo;
dynamic approvalNo; dynamic approvalNo;
String approvalStatus; String approvalStatus;
@ -147,39 +148,39 @@ class AncillaryOrderProcList {
dynamic taxAmount; dynamic taxAmount;
dynamic taxPct; dynamic taxPct;
AncillaryOrderProcList( AncillaryOrderProcDetailsList(
{this.approvalLineItemNo, {this.approvalLineItemNo,
this.approvalNo, this.approvalNo,
this.approvalStatus, this.approvalStatus,
this.approvalStatusID, this.approvalStatusID,
this.companyShare, this.companyShare,
this.companyShareWithTax, this.companyShareWithTax,
this.companyTaxAmount, this.companyTaxAmount,
this.discountAmount, this.discountAmount,
this.discountCategory, this.discountCategory,
this.discountType, this.discountType,
this.discountTypeValue, this.discountTypeValue,
this.isApprovalCreated, this.isApprovalCreated,
this.isApprovalRequired, this.isApprovalRequired,
this.isCovered, this.isCovered,
this.orderDate, this.orderDate,
this.orderLineItemNo, this.orderLineItemNo,
this.orderNo, this.orderNo,
this.partnerID, this.partnerID,
this.partnerShare, this.partnerShare,
this.partnerShareType, this.partnerShareType,
this.patientShare, this.patientShare,
this.patientShareWithTax, this.patientShareWithTax,
this.patientTaxAmount, this.patientTaxAmount,
this.procPrice, this.procPrice,
this.procedureCategoryID, this.procedureCategoryID,
this.procedureCategoryName, this.procedureCategoryName,
this.procedureID, this.procedureID,
this.procedureName, this.procedureName,
this.taxAmount, this.taxAmount,
this.taxPct}); this.taxPct});
AncillaryOrderProcList.fromJson(Map<String, dynamic> json) { AncillaryOrderProcDetailsList.fromJson(Map<String, dynamic> json) {
approvalLineItemNo = json['ApprovalLineItemNo']; approvalLineItemNo = json['ApprovalLineItemNo'];
approvalNo = json['ApprovalNo']; approvalNo = json['ApprovalNo'];
approvalStatus = json['ApprovalStatus']; approvalStatus = json['ApprovalStatus'];

@ -95,7 +95,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrders>
.map( .map(
(item) => InkWell( (item) => InkWell(
onTap: () { onTap: () {
ancillaryOrdersDetails(item); ancillaryOrdersDetails(item, model.ancillaryLists[0].projectID);
}, },
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
@ -166,11 +166,11 @@ class _AnicllaryOrdersState extends State<AnicllaryOrders>
.toList()); .toList());
} }
ancillaryOrdersDetails(item) { ancillaryOrdersDetails(item, projectId) {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: AnicllaryOrdersDetails(item.appointmentNo, item.orderNo), page: AnicllaryOrdersDetails(item.appointmentNo, item.orderNo,projectId ),
), ),
); );
} }

@ -8,11 +8,15 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ancillary-orders/ordersPayment.dart';
class AnicllaryOrdersDetails extends StatefulWidget { class AnicllaryOrdersDetails extends StatefulWidget {
final dynamic appoNo; final dynamic appoNo;
final dynamic orderNo; final dynamic orderNo;
AnicllaryOrdersDetails(this.appoNo, this.orderNo); final dynamic projectID;
AnicllaryOrdersDetails(this.appoNo, this.orderNo, this.projectID);
@override @override
_AnicllaryOrdersState createState() => _AnicllaryOrdersState(); _AnicllaryOrdersState createState() => _AnicllaryOrdersState();
} }
@ -31,7 +35,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<AnciallryOrdersViewModel>( return BaseView<AnciallryOrdersViewModel>(
onModelReady: (model) => onModelReady: (model) =>
model.getOrdersDetails(widget.appoNo, widget.orderNo), model.getOrdersDetails(widget.appoNo, widget.orderNo, widget.projectID),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: true, isShowAppBar: true,
baseViewModel: model, baseViewModel: model,
@ -64,7 +68,12 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
children: [ children: [
Button( Button(
label: TranslationBase.of(context).payNow, label: TranslationBase.of(context).payNow,
onTap: () {}, backgroundColor: Colors.red[800],
onTap: () {
Navigator.push(context,
FadePage(page: OrdersPayment(),
),);
},
) )
], ],
) )
@ -89,7 +98,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
fontSize: 20, fontSize: 20,
), ),
Texts( Texts(
model.ancillaryListsDetails[0].patientID.toString(), model.ancillaryLists[0].patientID.toString(),
) )
], ],
), ),
@ -126,7 +135,8 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
children: [ children: [
Texts( Texts(
TranslationBase.of(context).invoiceNo, TranslationBase.of(context).invoiceNo,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
color: Colors.red[500],
), ),
Texts(" : "), Texts(" : "),
Texts( Texts(
@ -136,10 +146,11 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
), ),
Row( Row(
children: [ children: [
Texts( // Texts(
TranslationBase.of(context).date, // TranslationBase.of(context).invoiceDate,
fontWeight: FontWeight.bold, // // fontWeight: FontWeight.bold,
), // color: Colors.red[500],
// ),
Texts(" : "), Texts(" : "),
Texts( Texts(
DateUtil.getFormattedDate( DateUtil.getFormattedDate(
@ -152,8 +163,9 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
Row( Row(
children: [ children: [
Texts( Texts(
TranslationBase.of(context).date, TranslationBase.of(context).doctorName,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
color: Colors.red[500],
), ),
Texts(" : "), Texts(" : "),
Texts( Texts(
@ -206,13 +218,49 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
Divider( Divider(
color: Colors.red[800], color: Colors.red[800],
thickness: 3, thickness: 3,
) ),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Row(
children: [
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Texts(
TranslationBase.of(context).price,
color: Colors.grey[500],
fontSize: 14,
),
SizedBox(width: 15),
Texts(
TranslationBase.of(context).vat,
color: Colors.grey[500],
fontSize: 14,
),
SizedBox(width: 15),
Texts(
TranslationBase.of(context).total,
color: Colors.grey[500],
fontSize: 14,
),
] ),
],
),
Divider(
color: Colors.black26,
),
], ],
)); ));
} }
Widget getAncillaryDetails(model) { Widget getAncillaryDetails(model) {
Map newMap = groupBy(model.ancillaryListsDetails[0].ancillaryOrderProcList, Map newMap = groupBy(model.ancillaryListsDetails[0].ancillaryOrderProcDetailsList,
(obj) => obj.procedureCategoryName); (obj) => obj.procedureCategoryName);
print(newMap); print(newMap);
@ -247,7 +295,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
String getTotalValue(value) { String getTotalValue(value) {
double total = 0.0; double total = 0.0;
value.ancillaryListsDetails[0].ancillaryOrderProcList value.ancillaryListsDetails[0].ancillaryOrderProcDetailsList
.forEach((result) => {total += result.companyShareWithTax}); .forEach((result) => {total += result.companyShareWithTax});
return total.toStringAsFixed(2); return total.toStringAsFixed(2);
} }
@ -277,4 +325,6 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
}).toList(), }).toList(),
); );
} }
} }

@ -0,0 +1,20 @@
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
class OrdersPayment extends StatefulWidget {
@override
_OrdersPaymentState createState() => _OrdersPaymentState();
}
class _OrdersPaymentState extends State<OrdersPayment> {
@override
Widget build(BuildContext context) {
return Container();
}
}

@ -50,6 +50,15 @@ class _BodyFatState extends State<BodyFat> {
TextEditingController waistController = TextEditingController(); TextEditingController waistController = TextEditingController();
TextEditingController hipController = TextEditingController(); TextEditingController hipController = TextEditingController();
@override
void initState() {
neckController.text = neck.toString();
hipController.text = hip.toString();
waistController.text = waist.toString();
heightController.text = heightCm.toString();
super.initState();
}
void updateColorHeight(int type) { void updateColorHeight(int type) {
//MG/DLT card //MG/DLT card
if (type == 1) { if (type == 1) {
@ -319,11 +328,6 @@ class _BodyFatState extends State<BodyFat> {
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: heightController, controller: heightController,
decoration: InputDecoration(
labelText: heightCm.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -350,6 +354,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (heightCm < 250) heightCm++; if (heightCm < 250) heightCm++;
heightController.text = heightCm.toString();
}); });
}, },
), ),
@ -362,6 +367,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (heightCm > 0) heightCm--; if (heightCm > 0) heightCm--;
heightController.text = heightCm.toString();
}); });
}, },
), ),
@ -381,6 +387,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
heightCm = newValue.round(); heightCm = newValue.round();
heightController.text = heightCm.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),
@ -492,15 +499,10 @@ class _BodyFatState extends State<BodyFat> {
Expanded( Expanded(
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.only(left: 10.0), padding: const EdgeInsets.only(left: 15.0, bottom: 0),
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: neckController, controller: neckController,
decoration: InputDecoration(
labelText: neck.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -527,6 +529,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (neck < 60) neck++; if (neck < 60) neck++;
neckController.text = neck.toString();
}); });
}, },
), ),
@ -539,6 +542,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (neck > 5) neck--; if (neck > 5) neck--;
neckController.text = neck.toString();
}); });
}, },
), ),
@ -558,6 +562,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
neck = newValue.round(); neck = newValue.round();
neckController.text = neck.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),
@ -673,11 +678,6 @@ class _BodyFatState extends State<BodyFat> {
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: waistController, controller: waistController,
decoration: InputDecoration(
labelText: waist.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -704,6 +704,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (waist < 200) waist++; if (waist < 200) waist++;
waistController.text = waist.toString();
}); });
}, },
), ),
@ -716,6 +717,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (waist > 5) waist--; if (waist > 5) waist--;
waistController.text = waist.toString();
}); });
}, },
), ),
@ -735,6 +737,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
waist = newValue.round(); waist = newValue.round();
waistController.text = waist.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),
@ -850,11 +853,6 @@ class _BodyFatState extends State<BodyFat> {
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: hipController, controller: hipController,
decoration: InputDecoration(
labelText: hip.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -881,6 +879,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (hip < 140) hip++; if (hip < 140) hip++;
hipController.text = hip.toString();
}); });
}, },
), ),
@ -893,6 +892,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (hip > 5) hip--; if (hip > 5) hip--;
hipController.text = hip.toString();
}); });
}, },
), ),
@ -912,6 +912,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
hip = newValue.round(); hip = newValue.round();
hipController.text = hip.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),

@ -19,6 +19,7 @@ class OvulationPeriod extends StatefulWidget {
class _OvulationPeriodState extends State<OvulationPeriod> { class _OvulationPeriodState extends State<OvulationPeriod> {
DateTime bloodSugarDate = DateTime.now(); DateTime bloodSugarDate = DateTime.now();
DateTime timeSugarDate = DateTime.now(); DateTime timeSugarDate = DateTime.now();
DateTime selectedDateTime = DateTime.now();
int cycleLength = 0; int cycleLength = 0;
int lutealPhaseLength = 0; int lutealPhaseLength = 0;
String selectedDate; String selectedDate;
@ -37,13 +38,30 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
} }
String getDate() { String getDate() {
return "${DateUtil.getMonth(bloodSugarDate.month)} ${bloodSugarDate.day}, ${bloodSugarDate.year}"; return "${DateUtil.getMonth(selectedDateTime.month)} ${selectedDateTime.day}, ${selectedDateTime.year}";
} }
// void calculate() {} // void calculate() {}
// //
// void calculateFertility(DateTime selectedDate) {const diff = Date.} // void calculateFertility(DateTime selectedDate) {const diff = Date.}
calculateBabyInformation() {
setState(() {
bloodSugarDate = selectedDateTime;
dateFrom = selectedDateTime.add(Duration(days: 10));
updatedDt = DateFormat.yMMMEd().format(dateFrom);
dateTo = selectedDateTime.add(Duration(days: 20));
conceivedDate = selectedDateTime.add(Duration(days: 14));
deliveryDue = selectedDateTime.add(Duration(days: 280));
// babyAge = Jiffy([DateTime.now()]).diff(Jiffy([date]), Units.WEEK);
babyAgeWeeks = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([selectedDateTime.year, selectedDateTime.month, dateTo.day]), Units.WEEK);
babyAgeDays = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([selectedDateTime.year, selectedDateTime.month, dateTo.day]), Units.DAY);
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
@ -78,18 +96,7 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
onConfirm: (date) { onConfirm: (date) {
print('confirm $date'); print('confirm $date');
setState(() { setState(() {
bloodSugarDate = date; selectedDateTime = date;
dateFrom = date.add(Duration(days: 10));
updatedDt = DateFormat.yMMMEd().format(dateFrom);
dateTo = date.add(Duration(days: 20));
conceivedDate = date.add(Duration(days: 14));
deliveryDue = date.add(Duration(days: 280));
// babyAge = Jiffy([DateTime.now()]).diff(Jiffy([date]), Units.WEEK);
babyAgeWeeks = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([date.year, date.month, dateTo.day]), Units.WEEK);
babyAgeDays = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([date.year, date.month, dateTo.day]), Units.DAY);
}); });
}, },
currentTime: DateTime.now(), currentTime: DateTime.now(),
@ -321,22 +328,19 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
child: SecondaryButton( child: SecondaryButton(
label: 'CALCULATE', label: 'CALCULATE',
onTap: () { onTap: () {
setState(() { calculateBabyInformation();
{ Navigator.push(
Navigator.push( context,
context, FadePage(
FadePage( page: OvulationResult(
page: OvulationResult( conceivedDate: conceivedDate,
conceivedDate: conceivedDate, dateFrom: dateFrom,
dateFrom: dateFrom, dateTo: dateTo,
dateTo: dateTo, deliveryDue: deliveryDue,
deliveryDue: deliveryDue, babyAge: babyAgeWeeks,
babyAge: babyAgeWeeks, babyAgeDays: babyAgeDays,
babyAgeDays: babyAgeDays, )),
)), );
);
}
});
}, },
), ),
), ),

@ -78,7 +78,7 @@ class OvulationResult extends StatelessWidget {
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
Texts( Texts(
babyAge.toString() + " Weeks," + "2", babyAge <= 0 ? "baby age is not available" : babyAge.toString() + " Weeks," + "3",
fontWeight: FontWeight.w800, fontWeight: FontWeight.w800,
fontSize: 21.0, fontSize: 21.0,
), ),

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/qr_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/qr_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -9,11 +10,13 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:maps_launcher/maps_launcher.dart'; import 'package:maps_launcher/maps_launcher.dart';
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:provider/provider.dart';
import '../../d_q_icons_icons.dart'; import '../../d_q_icons_icons.dart';
class ParkingPage extends StatelessWidget { class ParkingPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<QrViewModel>( return BaseView<QrViewModel>(
onModelReady: (model) => model.getIsSaveParking(), onModelReady: (model) => model.getIsSaveParking(),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
@ -21,10 +24,7 @@ class ParkingPage extends StatelessWidget {
appBarTitle: TranslationBase.of(context).parking, appBarTitle: TranslationBase.of(context).parking,
description: TranslationBase.of(context).parkingDescription, description: TranslationBase.of(context).parkingDescription,
imagesInfo: [ imagesInfo: [
ImagesInfo( ImagesInfo(imageAr: 'assets/images/bc_parking.png', imageEn: 'assets/images/bc_parking.png', isAsset: true)
imageAr: 'assets/images/bc_parking.png',
imageEn: 'assets/images/bc_parking.png',
isAsset: true)
], ],
body: SingleChildScrollView( body: SingleChildScrollView(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
@ -50,7 +50,9 @@ class ParkingPage extends StatelessWidget {
Row( Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Container(child: Icon(/*Icons.landscape*/DQIcons.parking_icon,size: 130),), child: Container(
child: Icon(/*Icons.landscape*/ DQIcons.parking_icon, size: 130),
),
), ),
SizedBox( SizedBox(
width: 15, width: 15,
@ -85,15 +87,15 @@ class ParkingPage extends StatelessWidget {
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
height: 70, height: 70,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).showMyPark), Texts(TranslationBase.of(context).showMyPark),
Texts(model.qrParkingModel.floorDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.floorDescriptionN
: model.qrParkingModel.floorDescription),
], ],
), ),
), ),
@ -102,9 +104,7 @@ class ParkingPage extends StatelessWidget {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
width: double.infinity, width: double.infinity,
height: 70, height: 70,
@ -112,7 +112,9 @@ class ParkingPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).gate), Texts(TranslationBase.of(context).gate),
Texts(model.qrParkingModel.gateDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.gateDescriptionN
: model.qrParkingModel.gateDescription),
], ],
), ),
), ),
@ -121,9 +123,7 @@ class ParkingPage extends StatelessWidget {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
width: double.infinity, width: double.infinity,
height: 70, height: 70,
@ -131,7 +131,9 @@ class ParkingPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).building), Texts(TranslationBase.of(context).building),
Texts(model.qrParkingModel.buildingDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.buildingDescriptionN
: model.qrParkingModel.buildingDescription),
], ],
), ),
), ),
@ -141,16 +143,16 @@ class ParkingPage extends StatelessWidget {
Container( Container(
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
width: double.infinity, width: double.infinity,
height: 70, height: 70,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).branch), Texts(TranslationBase.of(context).branch),
Texts(model.qrParkingModel.branchDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.branchDescriptionN
: model.qrParkingModel.branchDescription),
], ],
), ),
), ),

@ -4,6 +4,9 @@ import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsLis
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rating_bar/rating_bar.dart'; import 'package:rating_bar/rating_bar.dart';
@ -21,109 +24,82 @@ class DoctorView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return InkWell( return InkWell(
onTap: () { onTap: () {
if(isShowFlag) if (isShowFlag) getDoctorsProfile(context, doctor);
getDoctorsProfile(context, doctor);
}, },
child: Card( child: Container(
margin: EdgeInsets.fromLTRB(10.0, 16.0, 10.0, 8.0), decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.all(
shape: RoundedRectangleBorder( Radius.circular(10.0),
borderRadius: BorderRadius.circular(10), ),
), boxShadow: [
child: Container( BoxShadow(
decoration: BoxDecoration(), color: Color(0xff000000).withOpacity(.05),
padding: EdgeInsets.all(7.0), //spreadRadius: 5,
width: MediaQuery.of(context).size.width, blurRadius: 27,
child: Row( offset: Offset(0, -3),
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
flex: 1,
child: ClipRRect(
borderRadius: BorderRadius.circular(100.0),
child: Image.network(this.doctor.doctorImageURL,
fit: BoxFit.fill, height: 60.0, width: 60.0),
),
), ),
Expanded( ],
flex: 4, color: Colors.white),
child: Container( child: Padding(
width: MediaQuery.of(context).size.width * 0.55, padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12),
margin: EdgeInsets.fromLTRB(20.0, 10.0, 10.0, 0.0), child: Column(
child: Column( mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: [
if (doctor.doctorTitle != null) if (doctor.doctorTitle != null)
Text(this.doctor.doctorTitle + " " + this.doctor.name, Text(
style: TextStyle( doctor.doctorTitle + " " + doctor.name,
fontSize: 14.0, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
color: Colors.grey[700], ),
letterSpacing: 1.0)), if (doctor.doctorTitle != null) SizedBox(height: 6),
Container( Row(
margin: EdgeInsets.only(top: 3.0), mainAxisSize: MainAxisSize.min,
child: Text( children: <Widget>[
this.doctor.clinicName != null LargeAvatar(
? this.doctor.clinicName name: doctor.name,
: "", url: doctor.doctorImageURL,
style: TextStyle( width: 48,
fontSize: 12.0, height: 48,
color: Colors.grey[600], ),
letterSpacing: 1.0)), SizedBox(width: 11),
), Expanded(
Container( child: Column(
margin: EdgeInsets.only(top: 3.0), crossAxisAlignment: CrossAxisAlignment.start,
child: Text(this.doctor.projectName, mainAxisSize: MainAxisSize.min,
style: TextStyle( children: <Widget>[
fontSize: 12.0, if (doctor.clinicName != null) myRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName),
color: Colors.grey[600], if (doctor.projectName != null) myRichText(TranslationBase.of(context).hospital + ":", doctor.projectName),
letterSpacing: 1.0)), if (doctor.speciality != null)
), Text(
if (doctor.speciality != null) getDoctorSpeciality(this.doctor.speciality).trim(),
Container( style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12),
margin: EdgeInsets.only(top: 3.0, bottom: 3.0), ),
child: Text( if (doctor.nearestFreeSlot != null)
getDoctorSpeciality(this.doctor.speciality) Text(
.trim(), getDate(doctor.nearestFreeSlot),
style: TextStyle( style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff359846), letterSpacing: -0.48, height: 18 / 12),
fontSize: 12.0,
color: Colors.grey[600],
letterSpacing: 1.0)),
),
this.doctor.nearestFreeSlot != null
? Container(
margin: EdgeInsets.only(top: 3.0, bottom: 3.0),
child: Text(getDate(this.doctor.nearestFreeSlot),
style: TextStyle(
fontSize: 14.0,
fontWeight: FontWeight.bold,
color: Colors.green[600],
letterSpacing: 1.0)),
)
: Container(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
RatingBar.readOnly(
initialRating:
this.doctor.actualDoctorRate.toDouble(),
size: 20.0,
filledColor: Colors.yellow[700],
emptyColor: Colors.grey[500],
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star,
), ),
isShowFlag ? Container( Row(
child: Image.network(this.doctor.nationalityFlagURL, mainAxisAlignment: MainAxisAlignment.spaceBetween,
width: 25.0, height: 25.0), mainAxisSize: MainAxisSize.max,
) : Container(), children: <Widget>[
], RatingBar.readOnly(
), initialRating: this.doctor.actualDoctorRate.toDouble(),
], size: 15.0,
filledColor: Color(0XFFD02127),
emptyColor: Color(0XFFD02127),
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
),
if (isShowFlag) Image.network(this.doctor.nationalityFlagURL, width: 22.0, height: 22.0)
],
),
],
),
), ),
), ],
), ),
], ],
), ),
@ -144,10 +120,7 @@ class DoctorView extends StatelessWidget {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
List<DoctorProfileList> docProfileList = []; List<DoctorProfileList> docProfileList = [];
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service service.getDoctorsProfile(docObject.doctorID, docObject.clinicID, docObject.projectID, context).then((res) {
.getDoctorsProfile(docObject.doctorID, docObject.clinicID,
docObject.projectID, context)
.then((res) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
if (res['DoctorProfileList'].length != 0) { if (res['DoctorProfileList'].length != 0) {
@ -155,8 +128,7 @@ class DoctorView extends StatelessWidget {
docProfileList.add(new DoctorProfileList.fromJson(v)); docProfileList.add(new DoctorProfileList.fromJson(v));
}); });
} else {} } else {}
navigateToDoctorProfile(context, docObject, docProfileList[0], navigateToDoctorProfile(context, docObject, docProfileList[0], isAppo: isAppo);
isAppo: isAppo);
} else { } else {
AppToast.showErrorToast(message: res['ErrorEndUserMessage']); AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
} }
@ -188,8 +160,7 @@ class DoctorView extends StatelessWidget {
} }
} }
Future navigateToDoctorProfile(context, docObject, docProfile, Future navigateToDoctorProfile(context, docObject, docProfile, {isAppo}) async {
{isAppo}) async {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(

@ -359,6 +359,7 @@ class _MyAppointmentsState extends State<MyAppointments> with SingleTickerProvid
isLiveCareAppointment: _appointmentResult.isLiveCareAppointment, isLiveCareAppointment: _appointmentResult.isLiveCareAppointment,
date: DateUtil.convertStringToDate(_appointmentResult.appointmentDate), date: DateUtil.convertStringToDate(_appointmentResult.appointmentDate),
isSortByClinic: _isSortByClinic, isSortByClinic: _isSortByClinic,
appoTime: _appointmentResult.startTime,
//projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(labOrder.orderDate) : DateUtil.getMonthDayYearDateFormatted(labOrder.orderDate), //projectViewModel.isArabic ? DateUtil.getMonthDayYearDateFormattedAr(labOrder.orderDate) : DateUtil.getMonthDayYearDateFormatted(labOrder.orderDate),
); );
}, },

@ -224,7 +224,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
pageController = PageController(keepPage: true); pageController = PageController(keepPage: true);
_firebaseMessaging.setAutoInitEnabled(true); _firebaseMessaging.setAutoInitEnabled(true);
locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context); locationUtils = new LocationUtils(isShowConfirmDialog: false, context: context);
WidgetsBinding.instance.addPostFrameCallback((_) => locationUtils.getCurrentLocation()); WidgetsBinding.instance.addPostFrameCallback((_) => locationUtils.getCurrentLocation());
// HMG (Guest/Internet) Wifi Access [Zohaib Kambrani] // HMG (Guest/Internet) Wifi Access [Zohaib Kambrani]
HMGNetworkConnectivity(context, () { HMGNetworkConnectivity(context, () {
@ -522,7 +522,7 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: currentTab == 0 ? CustomColors.backgroudGreyColor : Theme.of(context).textTheme.headline1.color, color: currentTab == 0 ? CustomColors.backgroudGreyColor : Theme.of(context).textTheme.headline1.color,
fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans'), fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins'),
// bold: true, // bold: true,
), ),
leading: Builder( leading: Builder(

@ -124,16 +124,16 @@ class _ConfirmLogin extends State<ConfirmLogin> {
children: [ children: [
Text( Text(
TranslationBase.of(context).welcomeBack, TranslationBase.of(context).welcomeBack,
style: TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64),
), ),
Text( Text(
user.name.toLowerCase().capitalizeFirstofEach, user.name.toLowerCase().capitalizeFirstofEach,
style: TextStyle(fontSize: 24, fontFamily: "Poppins", fontWeight: FontWeight.w700, color: Color(0xff2B353E), height: 1, letterSpacing: -1.44), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), height: 1, letterSpacing: -1.44),
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text( Text(
TranslationBase.of(context).accountInfo, TranslationBase.of(context).accountInfo,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 25 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 25 / 16),
), ),
Container( Container(
height: 72, height: 72,
@ -157,7 +157,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
children: [ children: [
Text( Text(
TranslationBase.of(context).lastLoginAt.toCamelCase, TranslationBase.of(context).lastLoginAt.toCamelCase,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64),
), ),
Text( Text(
user.editedOn != null user.editedOn != null
@ -165,7 +165,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
: user.createdOn != null : user.createdOn != null
? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.createdOn)) ? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.createdOn))
: '--', : '--',
style: TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48),
), ),
], ],
), ),
@ -177,7 +177,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
TranslationBase.of(context).lastLoginWith.toCamelCase, TranslationBase.of(context).lastLoginWith.toCamelCase,
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
fontFamily: "Poppins",
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xff575757), color: Color(0xff575757),
), ),
@ -186,7 +186,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
" " + getType(user.logInType, context), " " + getType(user.logInType, context),
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
fontFamily: "Poppins",
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xff2B353E), color: Color(0xff2B353E),
), ),
@ -198,7 +198,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
: user.createdOn != null : user.createdOn != null
? DateUtil.formatDateToTime(DateUtil.convertStringToDate(user.createdOn)) ? DateUtil.formatDateToTime(DateUtil.convertStringToDate(user.createdOn))
: '--', : '--',
style: TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48),
), ),
], ],
) )
@ -207,7 +207,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
), ),
Text( Text(
TranslationBase.of(context).pleaseVerify, TranslationBase.of(context).pleaseVerify,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64),
), ),
GridView( GridView(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 13, mainAxisSpacing: 9), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 13, mainAxisSpacing: 9),
@ -230,26 +230,32 @@ class _ConfirmLogin extends State<ConfirmLogin> {
height: 90, height: 90,
width: 90, width: 90,
), ),
SizedBox(height: 23),
this.onlySMSBox == false this.onlySMSBox == false
? Texts( ? Text(
TranslationBase.of(context).verifyLoginWith, TranslationBase.of(context).verifyLoginWith,
fontSize: SizeConfig.textMultiplier * 3.5, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 25 / 16),
textAlign: TextAlign.left,
) )
: Texts( : Text(
TranslationBase.of(context).verifyFingerprint2, TranslationBase.of(context).verifyFingerprint2,
fontSize: SizeConfig.textMultiplier * 2.5, style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 25 / 16),
textAlign: TextAlign.start,
), ),
onlySMSBox == false SizedBox(height: 23),
? Row( Text(
mainAxisAlignment: MainAxisAlignment.center, TranslationBase.of(context).pleaseVerify,
children: <Widget>[Expanded(child: getButton(3)), Expanded(child: getButton(2))], style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64),
) ),
: SizedBox(), GridView(
Row( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 13, mainAxisSpacing: 9),
mainAxisAlignment: MainAxisAlignment.center, physics: NeverScrollableScrollPhysics(),
children: <Widget>[Expanded(child: getButton(1)), Expanded(child: getButton(4))], padding: EdgeInsets.only(top: 9),
shrinkWrap: true,
children: [
if (onlySMSBox == false) getButton(3),
if (onlySMSBox == false) getButton(2),
getButton(1),
getButton(4),
],
), ),
]), ]),
], ],
@ -258,157 +264,14 @@ class _ConfirmLogin extends State<ConfirmLogin> {
SizedBox( SizedBox(
height: 12, height: 12,
), ),
SizedBox( DefaultButton(
height: 43, TranslationBase.of(context).useAnotherAccount,
width: double.infinity, () => {Navigator.of(context).pushNamed(LOGIN_TYPE)},
child: FlatButton(
onPressed: () {
Navigator.of(context).pushNamed(LOGIN_TYPE);
},
child: Text(
TranslationBase.of(context).useAnotherAccount,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
),
color: Color(0xffD02127),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6),
),
),
), ),
], ],
), ),
), ),
); );
return AppScaffold(
appBarTitle: TranslationBase.of(context).confirm,
isShowAppBar: true,
isShowDecPage: false,
body: SingleChildScrollView(
child: Container(
padding: EdgeInsets.all(20),
height: SizeConfig.realScreenHeight * .9,
width: SizeConfig.realScreenWidth,
child: Column(
children: <Widget>[
user != null && isMoreOption == false
? Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Image.asset(
'assets/images/habib-logo.png',
height: 90,
width: 90,
),
Texts(
TranslationBase.of(context).welcomeBack + ' ' + user.name,
fontSize: SizeConfig.textMultiplier * 3.5,
),
SizedBox(
height: 20,
),
Texts(
TranslationBase.of(context).accountInfo,
fontSize: SizeConfig.textMultiplier * 2.5,
),
SizedBox(
height: 20,
),
Card(
color: Colors.grey[300],
child: Row(
children: <Widget>[
Flexible(
child: ListTile(
title: Text(
TranslationBase.of(context).lastLoginAt,
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
),
subtitle: Text(
user.editedOn != null
? formatDate(DateUtil.convertStringToDate(user.editedOn))
: user.createdOn != null
? formatDate(DateUtil.convertStringToDate(user.createdOn))
: '--',
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center),
)),
Flexible(
child: ListTile(
title: Text(TranslationBase.of(context).lastLoginWith, overflow: TextOverflow.ellipsis, textAlign: TextAlign.center),
subtitle: Text(getType(user.logInType, context), overflow: TextOverflow.ellipsis, textAlign: TextAlign.center),
))
],
)),
],
)
: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
Image.asset(
'assets/images/habib-logo.png',
height: 90,
width: 90,
),
this.onlySMSBox == false
? Texts(
TranslationBase.of(context).verifyLoginWith,
fontSize: SizeConfig.textMultiplier * 3.5,
textAlign: TextAlign.left,
)
: Texts(
TranslationBase.of(context).verifyFingerprint2,
fontSize: SizeConfig.textMultiplier * 2.5,
textAlign: TextAlign.start,
),
]),
user != null && isMoreOption == false
? Column(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
Expanded(child: InkWell(onTap: () => {authenticateUser(3, isActive: BiometricType.face.index)}, child: getButton(user.logInType))),
Expanded(child: getButton(5))
])
])
: Column(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
onlySMSBox == false
? Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[Expanded(child: getButton(3)), Expanded(child: getButton(2))],
)
: SizedBox(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[Expanded(child: getButton(1)), Expanded(child: getButton(4))],
),
]),
Expanded(
flex: 1,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
user != null
? Row(
children: <Widget>[
Expanded(
child: DefaultButton(
TranslationBase.of(context).useAnotherAccount,
() => {
Navigator.of(context).pushNamed(
LOGIN_TYPE,
)
},
)),
],
)
: SizedBox(),
],
),
)
],
),
),
),
);
} }
Future<void> _getAvailableBiometrics() async { Future<void> _getAvailableBiometrics() async {
@ -771,21 +634,25 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
Widget _loginOptionButton(String _title, String _icon, int _flag, int _loginIndex) { Widget _loginOptionButton(String _title, String _icon, int _flag, int _loginIndex) {
bool isDisable = (_flag == 3 && !checkIfBiometricAvailable(BiometricType.face));
return InkWell( return InkWell(
onTap: () { onTap: isDisable
if (_flag == 0) { ? null
setState(() { : () {
isMoreOption = true; if (_flag == 0) {
}); setState(() {
} else { isMoreOption = true;
authenticateUser(4, isActive: _loginIndex); });
} } else {
}, authenticateUser(_flag, isActive: _loginIndex);
}
},
child: Container( child: Container(
padding: EdgeInsets.only(left: 20, right: 20, bottom: 15, top: 28), padding: EdgeInsets.only(left: 20, right: 20, bottom: 15, top: 28),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
color: Colors.white, color: isDisable ? Colors.grey.withOpacity(0.3) : Colors.white,
border: Border.all( border: Border.all(
color: Color(0xffefefef), color: Color(0xffefefef),
width: 1, width: 1,
@ -799,10 +666,12 @@ class _ConfirmLogin extends State<ConfirmLogin> {
_icon, _icon,
height: 38, height: 38,
width: 38, width: 38,
color: isDisable ? Color(0xff2B353E).withOpacity(0.7) : null,
), ),
Text( Text(
TranslationBase.of(context).verifyThrough + " " + _title, TranslationBase.of(context).verifyThrough + " " + _title,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 20 / 16), style: TextStyle(
fontSize: 16, fontWeight: FontWeight.w600, color: isDisable ? Color(0xff2B353E).withOpacity(0.7) : Color(0xff2B353E), letterSpacing: -0.48, height: 20 / 16),
), ),
], ],
), ),

@ -52,7 +52,7 @@ class _ForgotPassword extends State<ForgotPassword> {
SizedBox(height: 50), SizedBox(height: 50),
Text( Text(
TranslationBase.of(context).forgotDesc, TranslationBase.of(context).forgotDesc,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
SizedBox(height: 20), SizedBox(height: 20),
PhoneNumberSelectorWidget(onNumberChange: (value) { PhoneNumberSelectorWidget(onNumberChange: (value) {
@ -76,7 +76,7 @@ class _ForgotPassword extends State<ForgotPassword> {
}, },
child: Text( child: Text(
TranslationBase.of(context).submit, TranslationBase.of(context).submit,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
), ),
// color: Color(0xffD02127), // color: Color(0xffD02127),
color: (mobileNo.length >= 9) == true ? Color(0xffD02127) : Color(0xff575757), color: (mobileNo.length >= 9) == true ? Color(0xffD02127) : Color(0xff575757),

@ -44,7 +44,7 @@ class LoginType extends StatelessWidget {
SizedBox(height: 50), SizedBox(height: 50),
Text( Text(
TranslationBase.of(context).logintypeRadio, TranslationBase.of(context).logintypeRadio,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
GridView( GridView(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 13, mainAxisSpacing: 9), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 13, mainAxisSpacing: 9),
@ -61,7 +61,7 @@ class LoginType extends StatelessWidget {
text: TextSpan( text: TextSpan(
text: TranslationBase.of(context).forgotPassword, text: TranslationBase.of(context).forgotPassword,
style: TextStyle( style: TextStyle(
decoration: TextDecoration.underline, fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xffC9272B), letterSpacing: -0.48, height: 18 / 12), decoration: TextDecoration.underline, fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffC9272B), letterSpacing: -0.48, height: 18 / 12),
recognizer: TapGestureRecognizer()..onTap = () => Navigator.of(context).push(FadePage(page: ForgotPassword())), recognizer: TapGestureRecognizer()..onTap = () => Navigator.of(context).push(FadePage(page: ForgotPassword())),
), ),
), ),
@ -77,7 +77,7 @@ class LoginType extends StatelessWidget {
}, },
child: Text( child: Text(
TranslationBase.of(context).registerNow, TranslationBase.of(context).registerNow,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
), ),
color: Color(0xffD02127), color: Color(0xffD02127),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
@ -253,7 +253,7 @@ class LoginType extends StatelessWidget {
), ),
Text( Text(
_title, _title,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 20 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 20 / 16),
), ),
], ],
), ),

@ -66,7 +66,7 @@ class _Login extends State<Login> {
// getDeviceToken(); // getDeviceToken();
super.initState(); super.initState();
if(BASE_URL.contains("uat.")){ if (BASE_URL.contains("uat.")) {
nationalIDorFile.text = "1231755"; nationalIDorFile.text = "1231755";
mobileNumberController.text = mobileNo = "537503378"; mobileNumberController.text = mobileNo = "537503378";
} }
@ -106,7 +106,7 @@ class _Login extends State<Login> {
SizedBox(height: 50), SizedBox(height: 50),
Text( Text(
loginType == 1 ? TranslationBase.of(context).enterNationalId : TranslationBase.of(context).enterFile, loginType == 1 ? TranslationBase.of(context).enterNationalId : TranslationBase.of(context).enterFile,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16),
), ),
SizedBox(height: 20), SizedBox(height: 20),
// inputWidget("Country", "Saudi Arabia", isEnable: false, hasSelection: true), // inputWidget("Country", "Saudi Arabia", isEnable: false, hasSelection: true),
@ -119,98 +119,18 @@ class _Login extends State<Login> {
), ),
), ),
SizedBox( SizedBox(
height: 43, height: 12,
width: double.infinity,
child: FlatButton(
onPressed: isButtonDisabled
? null
: () {
this.startLogin();
},
child: Text(
TranslationBase.of(context).login,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
),
disabledColor: Color(0xff575757),
color: Color(0xffD02127),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6),
),
),
), ),
]), DefaultButton(
), TranslationBase.of(context).login,
); isButtonDisabled
? null
return AppScaffold( : () {
appBarTitle: TranslationBase.of(context).login, this.startLogin();
isShowAppBar: true, },
isShowDecPage: false, disabledColor: Color(0xff575757),
body: SingleChildScrollView(
child: Container(
padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
height: SizeConfig.realScreenHeight * .9,
width: SizeConfig.realScreenWidth,
child: Column(
children: <Widget>[
Expanded(
flex: 2,
child: Texts(
loginType == 1 ? TranslationBase.of(context).enterNationalId : TranslationBase.of(context).enterFile,
fontSize: SizeConfig.textMultiplier * 3.5,
textAlign: TextAlign.start,
)),
Expanded(
flex: 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Directionality(
textDirection: TextDirection.ltr,
child: MobileNo(controller: mobileNumberController, onNumberChange: (value) => {mobileNo = value, validateForm()}, onCountryChange: (value) => countryCode = value)),
Directionality(
textDirection: TextDirection.ltr,
child: Container(
child: TextFields(
keyboardType: TextInputType.number,
fontWeight: FontWeight.normal,
controller: nationalIDorFile,
onChanged: (value) => {validateForm()},
prefixIcon: Icon(loginType == 1 ? Icons.chrome_reader_mode : Icons.receipt, color: secondaryColor),
padding: EdgeInsets.only(top: 20, bottom: 20, left: 10, right: 10),
hintText: loginType == 1 ? TranslationBase.of(context).nationalID : TranslationBase.of(context).fileNo,
)))
],
),
),
Expanded(
flex: 3,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Divider(
color: Colors.grey,
height: 2,
),
SizedBox(
height: 10,
),
Row(
children: <Widget>[
Expanded(
child: DefaultButton(
TranslationBase.of(context).login,
() => {this.startLogin()},
color: isButtonDisabled == true ? Colors.grey : Colors.grey[900],
textColor: Colors.white,
))
],
),
],
))
],
), ),
), ]),
), ),
); );
} }
@ -240,7 +160,6 @@ class _Login extends State<Login> {
_labelText, _labelText,
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,
fontFamily: "Poppins",
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xff2B353E), color: Color(0xff2B353E),
letterSpacing: -0.44, letterSpacing: -0.44,
@ -254,7 +173,6 @@ class _Login extends State<Login> {
onChanged: (value) => {validateForm()}, onChanged: (value) => {validateForm()},
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontFamily: "Poppins",
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xff2B353E), color: Color(0xff2B353E),
@ -265,7 +183,6 @@ class _Login extends State<Login> {
hintText: _hintText, hintText: _hintText,
hintStyle: TextStyle( hintStyle: TextStyle(
fontSize: 14, fontSize: 14,
fontFamily: "Poppins",
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xff575757), color: Color(0xff575757),
@ -278,7 +195,6 @@ class _Login extends State<Login> {
"+" + prefix, "+" + prefix,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontFamily: "Poppins",
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xff2E303A), color: Color(0xff2E303A),

@ -52,15 +52,15 @@ class _WelcomeLogin extends State<WelcomeLogin> {
SizedBox(height: 16), SizedBox(height: 16),
Text( Text(
TranslationBase.of(context).welcome, TranslationBase.of(context).welcome,
style: TextStyle(fontSize: 24, fontFamily: "Poppins", fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
), ),
Text( Text(
TranslationBase.of(context).welcomeText, TranslationBase.of(context).welcomeText,
style: TextStyle(fontSize: 14, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14),
), ),
Text( Text(
TranslationBase.of(context).welcomeText2, TranslationBase.of(context).welcomeText2,
style: TextStyle(fontSize: 14, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14),
), ),
SizedBox( SizedBox(
height: 14, height: 14,

@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart';
import 'package:diplomaticquarterapp/widgets/new_design/my_tab_view.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart'; import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -19,8 +20,10 @@ class DoctorHomePage extends StatelessWidget {
List<ImagesInfo> imagesInfo = List(); List<ImagesInfo> imagesInfo = List();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/en/0.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/ar/0.png')); imagesInfo
imagesInfo.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/en/1.png',imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/ar/1.png')); .add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/ar/0.png'));
imagesInfo
.add(ImagesInfo(imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/en/1.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/my-doctor/ar/1.png'));
return BaseView<MyDoctorViewModel>( return BaseView<MyDoctorViewModel>(
onModelReady: (model) => model.getMyDoctor(), onModelReady: (model) => model.getMyDoctor(),
builder: (context, MyDoctorViewModel model, widget) => AppScaffold( builder: (context, MyDoctorViewModel model, widget) => AppScaffold(
@ -29,86 +32,70 @@ class DoctorHomePage extends StatelessWidget {
appBarTitle: TranslationBase.of(context).myDoctor, appBarTitle: TranslationBase.of(context).myDoctor,
description: TranslationBase.of(context).infoMyDoctor, description: TranslationBase.of(context).infoMyDoctor,
infoList: TranslationBase.of(context).infoMyDoctorPoints, infoList: TranslationBase.of(context).infoMyDoctorPoints,
showNewAppBar: true,
showNewAppBarTitle: true,
imagesInfo: imagesInfo, imagesInfo: imagesInfo,
body: SingleChildScrollView( backgroundColor: Color(0xffF8F8F8),
physics: BouncingScrollPhysics(), body: Column(
child: FractionallySizedBox( children: <Widget>[
widthFactor: 1.0, Row(
child: Center( children: <Widget>[
child: Column( MyTabView(TranslationBase.of(context).byClinic, FilterType.Clinic, model.filterType, () {
children: <Widget>[ model.setFilterType(FilterType.Clinic);
Row( }),
children: <Widget>[ MyTabView(TranslationBase.of(context).byHospital, FilterType.Hospital, model.filterType, () {
Expanded( model.setFilterType(FilterType.Hospital);
flex: 1, }),
child: InkWell( ],
onTap: () => model.setFilterType(FilterType.Clinic), ),
child: ListTile( Expanded(
title: Text(TranslationBase.of(context).clinic), child: FractionallySizedBox(
leading: Radio( widthFactor: 1.0,
value: FilterType.Clinic, child: ListView.separated(
groupValue: model.filterType, physics: BouncingScrollPhysics(),
onChanged: (FilterType value) { separatorBuilder: (context, index) {
model.setFilterType(value); return Container(
}, height: 1,
), margin: EdgeInsets.only(left: 21, right: 21),
), color: Color(0xffD9D9D9),
), );
), },
Expanded( itemBuilder: (context, index) {
flex: 1, return AppExpandableNotifier(
child: InkWell( title: model.patientDoctorAppointmentList[index].filterName,
onTap: () => model.setFilterType(FilterType.Hospital), bodyWidget: ListView.separated(
child: ListTile( shrinkWrap: true,
title: Text(TranslationBase.of(context).hospital), physics: NeverScrollableScrollPhysics(),
leading: Radio( padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21),
value: FilterType.Hospital, itemBuilder: (context, _index) {
groupValue: model.filterType, DoctorList _doctorList = model.patientDoctorAppointmentList[index].patientDoctorAppointmentList[_index];
onChanged: (FilterType value) => DoctorList doctorList = DoctorList(
model.setFilterType(value), projectID: _doctorList.projectID,
), setupID: _doctorList.setupID,
), clinicID: _doctorList.clinicID,
), projectName: _doctorList.projectName,
) clinicName: _doctorList.clinicName,
], actualDoctorRate: _doctorList.actualDoctorRate,
), doctorID: _doctorList.doctorID,
...List.generate( doctorRate: _doctorList.doctorRate,
model.patientDoctorAppointmentList.length, gender: _doctorList.gender,
(index) => AppExpandableNotifier( doctorTitle: _doctorList.doctorTitle,
title: model name: _doctorList.name,
.patientDoctorAppointmentList[index].filterName, doctorImageURL: _doctorList.doctorImageURL,
bodyWidget: Column( nationalityFlagURL: _doctorList.nationalityFlagURL);
crossAxisAlignment: CrossAxisAlignment.start, return DoctorView(
mainAxisAlignment: MainAxisAlignment.spaceBetween, doctor: doctorList,
children: model.patientDoctorAppointmentList[index] isLiveCareAppointment: false,
.patientDoctorAppointmentList );
.map((doctor) { },
DoctorList doctorList = DoctorList( separatorBuilder: (context, index) => SizedBox(height: 14),
projectID: doctor.projectID, itemCount: model.patientDoctorAppointmentList[index].patientDoctorAppointmentList.length),
setupID: doctor.setupID, );
clinicID: doctor.clinicID, },
projectName: doctor.projectName, itemCount: model.patientDoctorAppointmentList.length),
clinicName: doctor.clinicName,
actualDoctorRate: doctor.actualDoctorRate,
doctorID: doctor.doctorID,
doctorRate: doctor.doctorRate,
gender: doctor.gender,
doctorTitle: doctor.doctorTitle,
name: doctor.name,
doctorImageURL: doctor.doctorImageURL,
nationalityFlagURL: doctor.nationalityFlagURL);
return DoctorView(
doctor: doctorList,
isLiveCareAppointment: false,
);
}).toList(),
)),
)
],
), ),
), ),
), ],
), ),
), ),
); );

@ -42,7 +42,8 @@ class AddBloodPressurePage extends StatefulWidget {
class _AddBloodPressurePageState extends State<AddBloodPressurePage> { class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
TextEditingController _bloodSystolicValueController = TextEditingController(); TextEditingController _bloodSystolicValueController = TextEditingController();
TextEditingController _bloodDiastolicValueController = TextEditingController(); TextEditingController _bloodDiastolicValueController =
TextEditingController();
DateTime bloodSugarDate = DateTime.now(); DateTime bloodSugarDate = DateTime.now();
DateTime timeSugarDate = DateTime.now(); DateTime timeSugarDate = DateTime.now();
int measuredArm = 1; int measuredArm = 1;
@ -80,7 +81,9 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: widget.isUpdate ? TranslationBase.of(context).update : TranslationBase.of(context).add, appBarTitle: widget.isUpdate
? TranslationBase.of(context).update
: TranslationBase.of(context).add,
appBarIcons: widget.isUpdate appBarIcons: widget.isUpdate
? [ ? [
IconButton( IconButton(
@ -96,10 +99,14 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
widget.model.deactivateDiabeticStatus(lineItemNo: widget.lineItemNo).then((value) { widget.model
.deactivateDiabeticStatus(
lineItemNo: widget.lineItemNo)
.then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.ErrorLocal) if (widget.model.state == ViewState.ErrorLocal)
AppToast.showErrorToast(message: widget.model.error); AppToast.showErrorToast(
message: widget.model.error);
else else
Navigator.pop(context); Navigator.pop(context);
}).catchError((e) { }).catchError((e) {
@ -144,13 +151,17 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
confirmSelectMeasureTimeDialog(projectViewModel.isArabic ? measureTimeArList : measureTimeEnList); confirmSelectMeasureTimeDialog(projectViewModel.isArabic
? measureTimeArList
: measureTimeEnList);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -177,13 +188,17 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
bloodSugarDate = date; bloodSugarDate = date;
}, },
); );
}, currentTime: bloodSugarDate, locale: projectViewModel.localeType); },
currentTime: bloodSugarDate,
locale: projectViewModel.localeType);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -198,22 +213,30 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
DatePicker.showTimePicker(context, showTitleActions: true, onConfirm: (date) { DatePicker.showTimePicker(context, showTitleActions: true,
onConfirm: (date) {
setState( setState(
() { () {
timeSugarDate = date; timeSugarDate = date;
}, },
); );
}, currentTime: timeSugarDate, locale: projectViewModel.localeType); },
currentTime: timeSugarDate,
locale: projectViewModel.localeType);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Texts(TranslationBase.of(context).time), Texts(getTime())], children: [
Texts(TranslationBase.of(context).time),
Texts(getTime())
],
), ),
), ),
), ),
@ -229,38 +252,44 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
widthFactor: 0.9, widthFactor: 0.9,
child: Column( child: Column(
children: [ children: [
SecondaryButton( Container(
loading: widget.model.state == ViewState.BusyLocal, height: 50,
label: TranslationBase.of(context).save.toUpperCase(), child: SecondaryButton(
textColor: Colors.white, loading: widget.model.state == ViewState.BusyLocal,
color: isButtonDisabled ? Colors.grey[900] : Colors.grey, label: TranslationBase.of(context).save.toUpperCase(),
onTap: () async { textColor: Colors.white,
if (_bloodSystolicValueController.text.isNotEmpty && color: isButtonDisabled ? Colors.grey[900] : Colors.grey,
_bloodDiastolicValueController.text.isNotEmpty) { onTap: () async {
GifLoaderDialogUtils.showMyDialog(context); if (_bloodSystolicValueController.text.isNotEmpty &&
_bloodDiastolicValueController.text.isNotEmpty) {
GifLoaderDialogUtils.showMyDialog(context);
widget.model widget.model
.addORUpdateDiabtecResult( .addORUpdateDiabtecResult(
isUpdate: widget.isUpdate, isUpdate: widget.isUpdate,
bloodPressureDate: bloodPressureDate:
'${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00', '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
diastolicPressure: _bloodDiastolicValueController.text.toString(), diastolicPressure:
systolicePressure: _bloodSystolicValueController.text.toString(), _bloodDiastolicValueController.text.toString(),
measuredArm: measuredArm, systolicePressure:
) _bloodSystolicValueController.text.toString(),
.then((value) { measuredArm: measuredArm,
GifLoaderDialogUtils.hideDialog(context); )
if (widget.model.state == ViewState.BusyLocal) .then((value) {
GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.BusyLocal)
AppToast.showErrorToast(
message: widget.model.error);
else
Navigator.pop(context);
;
}).catchError((e) {
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: widget.model.error); AppToast.showErrorToast(message: widget.model.error);
else });
Navigator.pop(context); }
; }),
}).catchError((e) { ),
GifLoaderDialogUtils.hideDialog(context);
AppToast.showErrorToast(message: widget.model.error);
});
}
}),
], ],
), ),
), ),
@ -295,7 +324,8 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
} }
void validateForm() { void validateForm() {
print("_bloodSystolicValueController " + _bloodSystolicValueController.text.length.toString()); print("_bloodSystolicValueController " +
_bloodSystolicValueController.text.length.toString());
if (measureTimeSelectedType != 'Left Arm' && if (measureTimeSelectedType != 'Left Arm' &&
_bloodSystolicValueController.text.length > 0 && _bloodSystolicValueController.text.length > 0 &&
_bloodDiastolicValueController.text.length > 0) { _bloodDiastolicValueController.text.length > 0) {

@ -1,24 +1,18 @@
import 'dart:async'; import 'dart:async';
import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/landing/landing_page.dart';
import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; import 'package:diplomaticquarterapp/theme/theme_notifier.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart'; import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:firebase_analytics/observer.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter/services.dart';
import 'analytics/google-analytics.dart';
import 'config/shared_pref_kay.dart';
import 'config/size_config.dart';
import 'core/service/AuthenticatedUserObject.dart'; import 'core/service/AuthenticatedUserObject.dart';
import 'core/service/privilege_service.dart'; import 'core/service/privilege_service.dart';
import 'core/viewModels/project_view_model.dart'; import 'core/viewModels/project_view_model.dart';
import 'locator.dart'; import 'locator.dart';
import 'models/Authentication/authenticated_user.dart';
import 'widgets/transitions/slide_up_page.dart';
AppSharedPreferences sharedPref = new AppSharedPreferences(); AppSharedPreferences sharedPref = new AppSharedPreferences();
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>(); AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
@ -79,7 +73,7 @@ class _SplashScreenState extends State<SplashScreen> {
children: [ children: [
Text( Text(
TranslationBase.of(context).poweredBy, TranslationBase.of(context).poweredBy,
style: TextStyle(fontSize: 14, fontFamily: "Poppins", fontWeight: FontWeight.w400, color: Color(0xff333C45), letterSpacing: -0.56, height: 16 / 14), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w400, color: Color(0xff333C45), letterSpacing: -0.56, height: 16 / 14),
), ),
SizedBox( SizedBox(
height: 5, height: 5,
@ -94,7 +88,7 @@ class _SplashScreenState extends State<SplashScreen> {
), ),
Text( Text(
"Version 1.1.0", "Version 1.1.0",
style: TextStyle(fontSize: 10, fontFamily: "Poppins", fontWeight: FontWeight.w400, color: Color(0xff3989898), letterSpacing: 0, height: 12 / 10), style: TextStyle(fontSize: 10, fontWeight: FontWeight.w400, color: Color(0xff3989898), letterSpacing: 0, height: 12 / 10),
), ),
SizedBox( SizedBox(
height: 18, height: 18,

@ -17,7 +17,6 @@ defaultTheme({fontName}) {
return ThemeData( return ThemeData(
fontFamily: fontName, fontFamily: fontName,
//projectProvider.isArabic ? 'Cairo' : 'WorkSans', //projectProvider.isArabic ? 'Cairo' : 'WorkSans',
primarySwatch: Colors.blue, primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light, brightness: Brightness.light,

@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
class DefaultButton extends StatelessWidget { class DefaultButton extends StatelessWidget {
final String text; final String text;
final Function onPress; final VoidCallback onPress;
final Color textColor; final Color textColor;
final Color color; final Color color;
DefaultButton(this.text, this.onPress, {this.color, this.textColor = Colors.white}); final Color disabledColor;
DefaultButton(this.text, this.onPress, {this.color, this.disabledColor, this.textColor = Colors.white});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -13,15 +14,14 @@ class DefaultButton extends StatelessWidget {
height: 43, height: 43,
width: double.infinity, width: double.infinity,
child: FlatButton( child: FlatButton(
onPressed: () { onPressed: onPress,
onPress();
},
child: Text( child: Text(
text, text,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: textColor, letterSpacing: -0.48),
), ),
// color: Color(0xffD02127), // color: Color(0xffD02127),
color: color ?? const Color(0xffD02127), color: color ?? const Color(0xffD02127),
disabledColor: disabledColor,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6), borderRadius: BorderRadius.circular(6),
), ),

@ -50,7 +50,7 @@ class LineChartCurvedState extends State<LineChartCurved> {
children: <Widget>[ children: <Widget>[
Text( Text(
widget.title, widget.title,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
), ),
SizedBox(height: 16), SizedBox(height: 16),
AspectRatio( AspectRatio(
@ -83,7 +83,7 @@ class LineChartCurvedState extends State<LineChartCurved> {
titlesData: FlTitlesData( titlesData: FlTitlesData(
bottomTitles: SideTitles( bottomTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: 0, height: 18 / 12), getTextStyles: (value) => TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: 0, height: 18 / 12),
margin: 8, margin: 8,
rotateAngle: -0, rotateAngle: -0,
getTitles: (value) { getTitles: (value) {
@ -107,7 +107,7 @@ class LineChartCurvedState extends State<LineChartCurved> {
), ),
leftTitles: SideTitles( leftTitles: SideTitles(
showTitles: true, showTitles: true,
getTextStyles: (value) => TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: 0, height: 18 / 12), getTextStyles: (value) => TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: 0, height: 18 / 12),
getTitles: (value) { getTitles: (value) {
return '${value.toInt()}'; return '${value.toInt()}';

@ -51,7 +51,7 @@ class LabResultChartAndDetails extends StatelessWidget {
Expanded( Expanded(
child: Text( child: Text(
TranslationBase.of(context).graphDetails, TranslationBase.of(context).graphDetails,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
), ),
), ),
], ],
@ -74,7 +74,7 @@ class LabResultChartAndDetails extends StatelessWidget {
// Expanded( // Expanded(
// child: Text( // child: Text(
// TranslationBase.of(context).generalResult, // TranslationBase.of(context).generalResult,
// style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), // style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
// ), // ),
// ), // ),
// ], // ],

@ -107,7 +107,7 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
Expanded( Expanded(
child: Text( child: Text(
TranslationBase.of(context).generalResult, TranslationBase.of(context).generalResult,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
), ),
), ),
Icon( Icon(
@ -164,7 +164,7 @@ class _LaboratoryResultWidgetState extends State<LaboratoryResultWidget> {
Expanded( Expanded(
child: Text( child: Text(
TranslationBase.of(context).specialResult, TranslationBase.of(context).specialResult,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16),
), ),
), ),
Icon( Icon(

@ -22,9 +22,10 @@ class DoctorCard extends StatelessWidget {
final bool isInOutPatient; final bool isInOutPatient;
final bool isLiveCareAppointment; final bool isLiveCareAppointment;
final bool isSortByClinic; final bool isSortByClinic;
final String appoTime;
DoctorCard( DoctorCard(
{this.name, this.subName, this.rat, this.date, this.profileUrl, this.isSortByClinic = true, this.billNo, this.onTap, this.onEmailTap, this.isInOutPatient, this.isLiveCareAppointment = false}); {this.name, this.subName, this.rat, this.date, this.profileUrl, this.isSortByClinic = true, this.billNo, this.onTap, this.onEmailTap, this.isInOutPatient, this.isLiveCareAppointment = false, this.appoTime});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -106,7 +107,8 @@ class DoctorCard extends StatelessWidget {
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
), ),
Text( Text(
DateUtil.formatDateToTime(date), // DateUtil.formatDateToTime(date),
appoTime,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48, height: 18 / 12), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.48, height: 18 / 12),
), ),
], ],
@ -161,11 +163,11 @@ Widget myRichText(String title, String value) {
return RichText( return RichText(
text: TextSpan( text: TextSpan(
text: title, text: title,
style: TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 18 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 18 / 10),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: " $value", text: " $value",
style: TextStyle(fontSize: 14, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12),
) )
]), ]),
); );

@ -92,7 +92,11 @@ class _AppDrawerState extends State<AppDrawer> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
SvgPicture.asset("assets/images/new/logo.svg"), SvgPicture.asset(
"assets/images/new/logo.svg",
height: 60,
width: 60,
),
IconButton( IconButton(
icon: Icon(Icons.clear), icon: Icon(Icons.clear),
onPressed: () { onPressed: () {
@ -112,20 +116,15 @@ class _AppDrawerState extends State<AppDrawer> {
children: [ children: [
Text( Text(
(user != null && projectProvider.isLogin) ? user.firstName + ' ' + user.lastName : TranslationBase.of(context).cantSeeProfile, (user != null && projectProvider.isLogin) ? user.firstName + ' ' + user.lastName : TranslationBase.of(context).cantSeeProfile,
style: TextStyle( style: TextStyle(color: Color(0xff2E303A), fontWeight: FontWeight.bold, fontSize: 20, letterSpacing: -1.2, height: 35 / 20),
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 17,
letterSpacing: -1.2,
),
), ),
Text( Text(
(user != null && projectProvider.isLogin) (user != null && projectProvider.isLogin)
? TranslationBase.of(context).fileno + ": " + user.patientID.toString() ? TranslationBase.of(context).fileNumber + ": " + user.patientID.toString()
: TranslationBase.of(context).loginRegisterNow, : TranslationBase.of(context).loginRegisterNow,
style: TextStyle( style: TextStyle(
color: Colors.black, color: Color(0xff2E303A),
fontSize: 13, fontSize: 16,
letterSpacing: -0.96, letterSpacing: -0.96,
height: 1, height: 1,
), ),
@ -219,17 +218,22 @@ class _AppDrawerState extends State<AppDrawer> {
children: <Widget>[ children: <Widget>[
AppText( AppText(
mainUser.firstName + ' ' + mainUser.lastName, mainUser.firstName + ' ' + mainUser.lastName,
color: Theme.of(context).textTheme.bodyText1.color, color: Color(0xff2E303A), //Theme.of(context).textTheme.bodyText1.color,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 12, fontSize: 12,
letterSpacing: -0.33, letterSpacing: -0.33,
), ),
AppText( AppText(
TranslationBase.of(context).fileno + ": " + mainUser.patientID.toString(), TranslationBase.of(context).fileno + ": " + mainUser.patientID.toString(),
color: Colors.grey[700], color: Color(0xff989898),
fontSize: 12, fontSize: 12,
letterSpacing: -0.33, letterSpacing: -0.33,
), ),
Container(
height: 1,
margin: EdgeInsets.only(top: 7.5),
color: Color(0xffEDEDED),
),
], ],
), ),
), ),
@ -264,15 +268,15 @@ class _AppDrawerState extends State<AppDrawer> {
children: <Widget>[ children: <Widget>[
AppText( AppText(
result.patientName, result.patientName,
color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black, color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Color(0xff2B353E),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 12, fontSize: 11,
letterSpacing: -0.33, letterSpacing: -0.33,
), ),
AppText( AppText(
TranslationBase.of(context).fileno + ": " + result.responseID.toString(), TranslationBase.of(context).fileno + ": " + result.responseID.toString(),
color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.grey[700], color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Color(0xff989898),
fontSize: 12, fontSize: 11,
letterSpacing: -0.33, letterSpacing: -0.33,
), ),
Divider( Divider(
@ -448,7 +452,7 @@ class _AppDrawerState extends State<AppDrawer> {
Text( Text(
"Cloud Solutions", "Cloud Solutions",
style: TextStyle( style: TextStyle(
color: Colors.black, color: Color(0xff2E303A),
fontSize: 13, fontSize: 13,
letterSpacing: -0.54, letterSpacing: -0.54,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,

@ -22,15 +22,15 @@ class HabibLogoWidget extends StatelessWidget {
children: [ children: [
Text( Text(
TranslationBase.of(context).welcomeTo, TranslationBase.of(context).welcomeTo,
style: TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.72, height: 23 / 12), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.72, height: 23 / 12),
), ),
Text( Text(
TranslationBase.of(context).drSulaimanText, TranslationBase.of(context).drSulaimanText,
style: TextStyle(fontSize: 24, fontFamily: "Poppins", fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
), ),
Text( Text(
TranslationBase.of(context).patientApp, TranslationBase.of(context).patientApp,
style: TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xffD02127), letterSpacing: -0.72), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xffD02127), letterSpacing: -0.72),
), ),
SizedBox(height: 2), SizedBox(height: 2),
], ],

@ -83,7 +83,7 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
_labelText, _labelText,
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,
fontFamily: "Poppins",
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Color(0xff2B353E), color: Color(0xff2B353E),
letterSpacing: -0.44, letterSpacing: -0.44,
@ -96,7 +96,7 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
onChanged: (value) => widget.onNumberChange(value), onChanged: (value) => widget.onNumberChange(value),
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontFamily: "Poppins",
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xff2B353E), color: Color(0xff2B353E),
@ -107,7 +107,7 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
hintText: _hintText, hintText: _hintText,
hintStyle: TextStyle( hintStyle: TextStyle(
fontSize: 14, fontSize: 14,
fontFamily: "Poppins",
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xff575757), color: Color(0xff575757),
@ -120,7 +120,7 @@ class _PhoneNumberSelectorWidgetState extends State<PhoneNumberSelectorWidget> {
prefix, prefix,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontFamily: "Poppins",
height: 21 / 14, height: 21 / 14,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
color: Color(0xff2E303A), color: Color(0xff2E303A),
@ -254,7 +254,8 @@ class _MobileNo extends State<MobileNo> {
controller: widget.controller, controller: widget.controller,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
maxLength: 10, maxLength: 10,
inputFormatters: <TextInputFormatter>[ inputFormatters: <TextInputFormatter>
[
FilteringTextInputFormatter.allow(RegExp("[0-9]")), FilteringTextInputFormatter.allow(RegExp("[0-9]")),
], ],
// maxLengthEnforced: true, // maxLengthEnforced: true,

@ -27,7 +27,7 @@ class MyTabView extends StatelessWidget {
title, title,
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontFamily: "Poppins",
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: value == groupValue ? Color(0xff2B353E) : Color(0xff575757), color: value == groupValue ? Color(0xff2B353E) : Color(0xff575757),
letterSpacing: -0.48, letterSpacing: -0.48,

@ -82,14 +82,14 @@ class _AppExpandableNotifier extends State<AppExpandableNotifier> {
children: [ children: [
if (_title.isNotEmpty) if (_title.isNotEmpty)
Text( Text(
_title, _title + " " + _subTitle,
style: TextStyle(fontSize: 12, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 23 / 12), style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 23 / 12),
), ),
Text( // Text(
_subTitle, // _subTitle,
maxLines: 1, // maxLines: 1,
style: TextStyle(fontSize: 24, fontFamily: "Poppins", fontWeight: FontWeight.w700, color: Color(0xff2E303A), letterSpacing: -1.44, height: 25 / 24), // style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2E303A), letterSpacing: -1.44, height: 25 / 24),
), // ),
], ],
), ),
), ),

@ -61,11 +61,11 @@ class _NotAutPageState extends State<NotAutPage> {
SizedBox(height: 16), SizedBox(height: 16),
Text( Text(
widget.title, widget.title,
style: TextStyle(fontSize: 24, fontFamily: "Poppins", fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
), ),
Text( Text(
widget.description, widget.description,
style: TextStyle(fontSize: 14, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14),
), ),
SizedBox( SizedBox(
height: 14, height: 14,
@ -107,7 +107,7 @@ class _NotAutPageState extends State<NotAutPage> {
}, },
child: Text( child: Text(
TranslationBase.of(context).loginregister, TranslationBase.of(context).loginregister,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
), ),
// color: Color(0xffD02127), // color: Color(0xffD02127),
color: Color(0xffD02127), color: Color(0xffD02127),
@ -152,11 +152,11 @@ class _NotAutPageState extends State<NotAutPage> {
SizedBox(height: 16), SizedBox(height: 16),
Text( Text(
widget.title, widget.title,
style: TextStyle(fontSize: 24, fontFamily: "Poppins", fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24), style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2B353E), letterSpacing: -1.44, height: 23 / 24),
), ),
Text( Text(
widget.description, widget.description,
style: TextStyle(fontSize: 14, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.56, height: 21 / 14),
), ),
SizedBox( SizedBox(
height: 14, height: 14,
@ -198,7 +198,7 @@ class _NotAutPageState extends State<NotAutPage> {
}, },
child: Text( child: Text(
TranslationBase.of(context).loginregister, TranslationBase.of(context).loginregister,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.48),
), ),
// color: Color(0xffD02127), // color: Color(0xffD02127),
color: Color(0xffD02127), color: Color(0xffD02127),

@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'dart:math'; import 'dart:math';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -86,8 +87,8 @@ class SMSOTP {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Image.asset( SvgPicture.asset(
type == 1 ? 'assets/images/login/103.png' : 'assets/images/login/104.png', type == 1 ?"assets/images/new/verify_sms.svg":"assets/images/new/verify_whatsapp.svg",
height: 50, height: 50,
width: 50, width: 50,
), ),
@ -105,41 +106,43 @@ class SMSOTP {
SizedBox(height: 22), SizedBox(height: 22),
Text( Text(
TranslationBase.of(context).pleaseEnterTheVerificationCode + ' xxxxxxxx' + mobileNo.toString().substring(mobileNo.toString().length - 3), TranslationBase.of(context).pleaseEnterTheVerificationCode + ' xxxxxxxx' + mobileNo.toString().substring(mobileNo.toString().length - 3),
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48),
), ),
SizedBox(height: 18), SizedBox(height: 18),
Directionality( Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
child: OTPWidget( child: Center(
autoFocus: true, child: OTPWidget(
controller: _pinPutController, autoFocus: true,
defaultBorderColor: Color(0xffD8D8D8), controller: _pinPutController,
maxLength: 4, defaultBorderColor: Color(0xffD8D8D8),
onTextChanged: (text) {}, maxLength: 4,
pinBoxColor: Colors.white, onTextChanged: (text) {},
onDone: (code) => _onOtpCallBack(code, null), pinBoxColor: Colors.white,
textBorderColor: Color(0xffD8D8D8), onDone: (code) => _onOtpCallBack(code, null),
pinBoxWidth: 68, textBorderColor: Color(0xffD8D8D8),
pinBoxHeight: 75, pinBoxWidth: 60,
pinTextStyle: TextStyle( pinBoxHeight: 60,
fontSize: 24.0, pinTextStyle: TextStyle(
color: Color(0xff2B353E), fontSize: 24.0,
color: Color(0xff2B353E),
),
pinTextAnimatedSwitcherTransition: ProvidedPinBoxTextAnimation.scalingTransition,
pinTextAnimatedSwitcherDuration: Duration(milliseconds: 300),
pinBoxRadius: 10,
keyboardType: TextInputType.number,
), ),
pinTextAnimatedSwitcherTransition: ProvidedPinBoxTextAnimation.scalingTransition,
pinTextAnimatedSwitcherDuration: Duration(milliseconds: 300),
pinBoxRadius: 10,
keyboardType: TextInputType.number,
), ),
), ),
SizedBox(height: 30), SizedBox(height: 30),
RichText( RichText(
text: TextSpan( text: TextSpan(
text: TranslationBase.of(context).validationMessage + '\n', text: TranslationBase.of(context).validationMessage + '\n',
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48),
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: displayTime, text: displayTime,
style: TextStyle(fontSize: 16, fontFamily: "Poppins", fontWeight: FontWeight.w600, color: Color(0xffD02127), letterSpacing: -0.48), style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xffD02127), letterSpacing: -0.48),
), ),
], ],
), ),

@ -295,7 +295,7 @@ class OTPWidgetState extends State<OTPWidget> with SingleTickerProviderStateMixi
List<Widget> pinCodes = List.generate(widget.maxLength, (int i) { List<Widget> pinCodes = List.generate(widget.maxLength, (int i) {
return _buildPinCode(i, context); return _buildPinCode(i, context);
}); });
return Row(children: pinCodes, mainAxisSize: MainAxisSize.min); return Row(children: pinCodes, mainAxisSize: MainAxisSize.min,mainAxisAlignment: MainAxisAlignment.spaceBetween,);
} }
Widget _buildPinCode(int i, BuildContext context) { Widget _buildPinCode(int i, BuildContext context) {

Loading…
Cancel
Save