Merge branch 'Dec_fixes' into 'development'

Dec fixes

See merge request Cloud_Solution/doctor_app_flutter!928
merge-requests/929/merge
Elham Ali 4 years ago
commit 0116de2454

@ -0,0 +1,57 @@
<svg id="woman_2_" data-name="woman (2)" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48">
<g id="Group_7145" data-name="Group 7145">
<g id="Group_7144" data-name="Group 7144">
<g id="Group_7143" data-name="Group 7143">
<g id="Group_7142" data-name="Group 7142">
<g id="XMLID_2114_">
<g id="XMLID_2115_">
<g id="XMLID_2116_">
<g id="XMLID_2117_">
<g id="XMLID_2118_">
<g id="XMLID_2119_">
<g id="XMLID_2120_">
<g id="XMLID_2121_">
<g id="XMLID_2122_">
<g id="XMLID_2123_">
<g id="XMLID_2124_">
<g id="XMLID_2125_">
<g id="XMLID_2126_">
<g id="XMLID_2127_">
<g id="Group_7141" data-name="Group 7141">
<path id="Path_4450" data-name="Path 4450" d="M48,24a23.928,23.928,0,0,1-6.947,16.887C36.7,45.279,30.669,42.776,24,42.776s-12.7,2.5-17.053-1.889A24,24,0,1,1,48,24Z" fill="#e2e2e2"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<path id="Path_4451" data-name="Path 4451" d="M48,24q0-1.087-.1-2.151L33.541,7.485,14.75,23.632,31.62,40.5l1.688,2.974c2.921.089,5.548-.37,7.745-2.589A23.928,23.928,0,0,0,48,24Z" fill="#c4c4c4"/>
<path id="Path_4452" data-name="Path 4452" d="M24,3.287C20.723,2.9,8.986,6.052,12.5,19.837c.924,3.622,4.646,5.913,6.284,6.51,2.5.913,2.742-.517,5.214-2.007,2.472,1.49,2.71,2.919,5.214,2.007,1.638-.6,5.36-2.888,6.284-6.51C39.014,6.052,27.277,2.9,24,3.287Z" fill="#515151"/>
<path id="Path_4453" data-name="Path 4453" d="M35.5,19.838c-.924,3.622-4.646,5.913-6.284,6.51-2.5.913-2.742-.517-5.213-2.007V3.287C27.277,2.9,39.014,6.052,35.5,19.837Z" fill="#3d3d3d"/>
<path id="Path_4454" data-name="Path 4454" d="M18.747,23.459H29.253V34.6H18.747Z" fill="#eaa678"/>
<path id="Path_4455" data-name="Path 4455" d="M24,23.46h5.253V34.6H24Z" fill="#d38c5b"/>
<path id="Path_4456" data-name="Path 4456" d="M18.747,30.452H29.253V41.593H18.747Z" fill="#ffc397"/>
<path id="Path_4457" data-name="Path 4457" d="M24,30.452h5.253V41.593H24Z" fill="#eaa678"/>
<path id="Path_4458" data-name="Path 4458" d="M41.053,35.918v4.969a24,24,0,0,1-34.106,0V35.918a5.466,5.466,0,0,1,5.466-5.467h6.335L24,37.18l5.253-6.728h6.335A5.466,5.466,0,0,1,41.053,35.918Z" fill="#d02127"/>
<path id="Path_4459" data-name="Path 4459" d="M41.053,35.918v4.969A23.925,23.925,0,0,1,24,48V37.18l5.253-6.728h6.335A5.466,5.466,0,0,1,41.053,35.918Z" fill="#aa191e"/>
<path id="Path_4460" data-name="Path 4460" d="M28.256,39.447a2.908,2.908,0,0,0-1.3,2.649c.172,1.751,2.3,3.292,2.3,3.292s3.4-3.062,2.069-5.94l-1.446-.556Z" fill="#3d3d3d"/>
<path id="Path_4461" data-name="Path 4461" d="M32.274,14.271C31.924,8.965,27.632,7,24,7s-7.924,1.961-8.274,7.267a2.285,2.285,0,0,0-1.5,2.409l.161,2.267a1.875,1.875,0,0,0,2.043,1.7l.175-.019c2.076,5.573,5.33,6.154,7.4,6.48,2.066-.326,5.321-.907,7.4-6.48l.175.019a1.875,1.875,0,0,0,2.043-1.7l.161-2.267A2.285,2.285,0,0,0,32.274,14.271Z" fill="#ffc397"/>
<path id="Path_4462" data-name="Path 4462" d="M33.775,16.681l-.161,2.267a1.875,1.875,0,0,1-2.043,1.7l-.175-.019a11.863,11.863,0,0,1-2.445,4.151A7.942,7.942,0,0,1,24,27.1V7c3.632,0,7.924,1.961,8.274,7.267a2.285,2.285,0,0,1,1.5,2.409Z" fill="#eaa678"/>
<path id="Path_4463" data-name="Path 4463" d="M24,4.977c-5.521-1.2-9.452,2.277-9.539,6.282a10.3,10.3,0,0,0,3.027,6.969c-.053-3.326,1-4.7,3.062-5.438A8.7,8.7,0,0,0,24,9.96a8.7,8.7,0,0,0,3.45,2.83c2.059.739,3.115,2.112,3.062,5.438a10.3,10.3,0,0,0,3.027-6.969C33.452,7.253,29.521,3.772,24,4.977Z" fill="#515151"/>
<path id="Path_4464" data-name="Path 4464" d="M33.539,11.259a10.305,10.305,0,0,1-3.027,6.968c.052-3.326-1-4.7-3.062-5.437A8.7,8.7,0,0,1,24,9.96V4.976C29.521,3.772,33.452,7.253,33.539,11.259Z" fill="#3d3d3d"/>
<path id="Path_4465" data-name="Path 4465" d="M33.389,27.8a6.76,6.76,0,0,0-.026-5.35l-3.618,2.514a2.626,2.626,0,0,0-.524.48,2.882,2.882,0,0,0-.2,3.919,3.365,3.365,0,0,0-.367.422,2.833,2.833,0,0,0,.006,3.69c-.043.042-.085.086-.124.132-2.549,2.97.917,5.083.917,5.083a5.421,5.421,0,0,0,3.554-6.78A6.03,6.03,0,0,0,33.389,27.8Z" fill="#3d3d3d"/>
<path id="Path_4466" data-name="Path 4466" d="M31.27,39.657H28.377a.7.7,0,0,1-.7-.7V37.87a.7.7,0,0,1,.7-.7H31.27a.7.7,0,0,1,.7.7v1.087A.7.7,0,0,1,31.27,39.657Z" fill="#d02127"/>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="12.179" height="12.188" viewBox="0 0 12.179 12.188">
<path id="Path_4406" data-name="Path 4406" d="M12.039,10.586c1.24-1.24,1.644-1.48,1.348-1.776L12.38,7.8a.3.3,0,0,0-.427,0L10.6,9.152l-.976-.976A4.378,4.378,0,1,0,8.2,9.615l.973.972c-1.24,1.24-1.644,1.48-1.348,1.776L8.828,13.37a.3.3,0,0,0,.427,0L10.6,12.022c1.457,1.457,1.679,1.847,1.977,1.55.97-.97,1.1-1.02,1.1-1.222s-.058-.183-1.638-1.764ZM5.892,8.77a2.9,2.9,0,1,1,2.9-2.9A2.9,2.9,0,0,1,5.892,8.77Z" transform="translate(-1.498 -1.476)" fill="#f0448d"/>
</svg>

After

Width:  |  Height:  |  Size: 565 B

@ -0,0 +1,4 @@
<svg id="hospital_3_" data-name="hospital (3)" xmlns="http://www.w3.org/2000/svg" width="20.5" height="20.5" viewBox="0 0 20.5 20.5">
<path id="Path_4585" data-name="Path 4585" d="M19.9,182.442a.6.6,0,0,0-.6.6v3H18a2.982,2.982,0,0,0-2.921-2.4H8.648v.578L7.413,184.2a3.059,3.059,0,0,0-2.577-.643,1.8,1.8,0,1,0-3.512-.652l-.123-.077V180.6a.6.6,0,0,0-1.2,0v12.092a.6.6,0,0,0,1.2,0v-3H19.3v3a.6.6,0,0,0,1.2,0v-9.649A.6.6,0,0,0,19.9,182.442Zm-18.7,3.6v-1.8l2.853,1.8Z" transform="translate(0 -172.793)" fill="#28323a"/>
<path id="Path_4586" data-name="Path 4586" d="M136.6,1.842h1.2v1.2h-.6a.6.6,0,0,0-.6.6v1.2a1.8,1.8,0,0,0,3.6,0v-1.2a.6.6,0,0,0-.6-.6H139v-1.2h2.4V9.649h1.2V.6a.6.6,0,1,0-1.2.04h-4.8a.6.6,0,0,0,0,1.2Z" transform="translate(-130.555)" fill="#28323a"/>
</svg>

After

Width:  |  Height:  |  Size: 776 B

@ -0,0 +1,56 @@
<svg id="man_5_" data-name="man (5)" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48">
<g id="Group_7139" data-name="Group 7139">
<g id="Group_7138" data-name="Group 7138">
<g id="Group_7137" data-name="Group 7137">
<g id="Group_7136" data-name="Group 7136">
<g id="XMLID_2211_">
<g id="XMLID_2212_">
<g id="XMLID_2213_">
<g id="XMLID_2214_">
<g id="XMLID_2215_">
<g id="XMLID_2216_">
<g id="XMLID_2217_">
<g id="XMLID_2218_">
<g id="XMLID_2219_">
<g id="XMLID_2220_">
<g id="XMLID_2221_">
<g id="XMLID_2222_">
<g id="XMLID_2223_">
<g id="XMLID_2224_">
<g id="XMLID_2225_">
<path id="Path_4436" data-name="Path 4436" d="M0,24A24,24,0,1,1,42.887,38.81c-4.394,5.6-11.221,3.983-18.887,3.983S9.507,44.405,5.113,38.81A23.9,23.9,0,0,1,0,24Z" fill="#e2e2e2"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<path id="Path_4437" data-name="Path 4437" d="M42.887,38.81A23.9,23.9,0,0,0,48,24q0-.493-.02-.982L34.651,9.689C26.856,6.362,15.212,20.337,15.212,20.337l9.778,9.778,4.217,12.829C34.718,43.153,39.518,43.1,42.887,38.81Z" fill="#c4c4c4"/>
<g id="Group_7140" data-name="Group 7140">
<path id="Path_4438" data-name="Path 4438" d="M18.747,23.459H29.253V34.6H18.747Z" fill="#eaa678"/>
<path id="Path_4439" data-name="Path 4439" d="M24,23.46h5.253V34.6H24Z" fill="#d38c5b"/>
<path id="Path_4440" data-name="Path 4440" d="M32.43,46.477a23.683,23.683,0,0,1-3.177.946,24.178,24.178,0,0,1-10.506,0,23.683,23.683,0,0,1-3.177-.946l3.177-16.024L24,33.857l5.253-3.4Z" fill="#d02127"/>
<path id="Path_4441" data-name="Path 4441" d="M32.43,46.477a23.683,23.683,0,0,1-3.177.946A24,24,0,0,1,24,48V33.857l5.253-3.4Z" fill="#aa191e"/>
<path id="Path_4442" data-name="Path 4442" d="M18.747,30.452V47.423A24,24,0,0,1,5.113,38.81V35.741A5.289,5.289,0,0,1,10.4,30.452Z" fill="#2b353e"/>
<path id="Path_4443" data-name="Path 4443" d="M42.887,35.741V38.81a24,24,0,0,1-13.634,8.613V30.452H37.6A5.289,5.289,0,0,1,42.887,35.741Z" fill="#2b353e"/>
<path id="Path_4444" data-name="Path 4444" d="M13.7,39.923v5.761a23.726,23.726,0,0,1-3.023-1.717V39.923Z" fill="#989898"/>
<path id="Path_4445" data-name="Path 4445" d="M37.362,39.923v4.016a23.888,23.888,0,0,1-3.023,1.725V39.923Z" fill="#989898"/>
<path id="Path_4446" data-name="Path 4446" d="M32.274,14.271C31.924,8.965,27.632,7,24,7s-7.924,1.961-8.274,7.267a2.285,2.285,0,0,0-1.5,2.409l.161,2.267a1.875,1.875,0,0,0,2.043,1.7l.175-.019c2.075,5.573,5.33,6.154,7.4,6.48,2.066-.326,5.321-.907,7.4-6.48l.175.019a1.875,1.875,0,0,0,2.043-1.7l.161-2.267A2.285,2.285,0,0,0,32.274,14.271Z" fill="#ffc397"/>
<path id="Path_4447" data-name="Path 4447" d="M33.775,16.681l-.161,2.267a1.875,1.875,0,0,1-2.043,1.7l-.175-.019a11.863,11.863,0,0,1-2.445,4.151A7.942,7.942,0,0,1,24,27.1V7c3.632,0,7.924,1.961,8.274,7.267a2.285,2.285,0,0,1,1.5,2.409Z" fill="#eaa678"/>
<path id="Path_4448" data-name="Path 4448" d="M34.651,9.689A13.957,13.957,0,0,0,24,4.41a8.424,8.424,0,0,0-4.772,1.436c-.026,0-3.178-.265-4.44,1.943s-.107,6.613,1.16,8.619L17.426,17.7l.68-4.473a17.48,17.48,0,0,0,11.514-.762l.8,5.234,1.478-1.294A12.875,12.875,0,0,0,33.6,10.422C34.277,9.986,34.651,9.689,34.651,9.689Z" fill="#515151"/>
<path id="Path_4449" data-name="Path 4449" d="M29.619,12.467l.8,5.234,1.478-1.294A12.875,12.875,0,0,0,33.6,10.422c.677-.436,1.051-.733,1.051-.733A13.956,13.956,0,0,0,24,4.41v9.415A19.77,19.77,0,0,0,29.619,12.467Z" fill="#3d3d3d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -0,0 +1,3 @@
<svg id="_14._Men_sign" data-name="14. Men sign" xmlns="http://www.w3.org/2000/svg" width="12.739" height="12.739" viewBox="0 0 12.739 12.739">
<path id="Path_4403" data-name="Path 4403" d="M13.928,1.5H8.757a.313.313,0,0,0-.313.313V3.2a.313.313,0,0,0,.313.313h1.988l-2.3,2.3A4.553,4.553,0,1,0,9.93,7.3l2.3-2.3V6.984a.313.313,0,0,0,.313.313h1.383a.313.313,0,0,0,.313-.313V1.813a.313.313,0,0,0-.313-.313ZM6.057,12.687a3,3,0,1,1,3-3,3,3,0,0,1-3,3Z" transform="translate(-1.502 -1.5)" fill="#1474d5"/>
</svg>

After

Width:  |  Height:  |  Size: 507 B

@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22.631" height="6.466" viewBox="0 0 22.631 6.466">
<g id="more_1_" data-name="more (1)" transform="translate(0 -170.666)">
<g id="Group_7031" data-name="Group 7031" transform="translate(0 170.666)">
<g id="Group_7030" data-name="Group 7030" transform="translate(0 0)">
<circle id="Ellipse_145" data-name="Ellipse 145" cx="3.233" cy="3.233" r="3.233"/>
</g>
</g>
<g id="Group_7033" data-name="Group 7033" transform="translate(8.082 170.666)">
<g id="Group_7032" data-name="Group 7032" transform="translate(0 0)">
<circle id="Ellipse_146" data-name="Ellipse 146" cx="3.233" cy="3.233" r="3.233"/>
</g>
</g>
<g id="Group_7035" data-name="Group 7035" transform="translate(16.165 170.666)">
<g id="Group_7034" data-name="Group 7034" transform="translate(0 0)">
<circle id="Ellipse_147" data-name="Ellipse 147" cx="3.233" cy="3.233" r="3.233"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 996 B

@ -0,0 +1,69 @@
<svg xmlns="http://www.w3.org/2000/svg" width="118.141" height="107.644" viewBox="0 0 118.141 107.644">
<g id="content" transform="translate(0 -22.748)">
<g id="Group_7442" data-name="Group 7442" transform="translate(1.731 28.436)">
<g id="Group_7439" data-name="Group 7439" transform="translate(0 8.932)">
<g id="Group_7438" data-name="Group 7438">
<g id="Group_7434" data-name="Group 7434" transform="translate(0 21.014)">
<g id="Group_7430" data-name="Group 7430" transform="translate(63.164)">
<g id="Group_7429" data-name="Group 7429">
<path id="Path_4552" data-name="Path 4552" d="M332.756,179.321v66a2.139,2.139,0,0,1-2.141,2.139H283.381a2.141,2.141,0,0,1-2.141-2.139v-66a2.143,2.143,0,0,1,2.141-2.141h47.233a2.141,2.141,0,0,1,2.141,2.141Z" transform="translate(-281.24 -177.18)" fill="#fff"/>
<g id="Group_7428" data-name="Group 7428">
<path id="Path_4553" data-name="Path 4553" d="M304.644,177.18v63.254a2.475,2.475,0,0,1-2.476,2.476H281.24V179.321a2.143,2.143,0,0,1,2.141-2.141Z" transform="translate(-281.24 -177.18)" fill="#dbdbdb"/>
<path id="Path_4554" data-name="Path 4554" d="M332.758,195.96V179.322a2.141,2.141,0,0,0-2.141-2.141H283.384a2.141,2.141,0,0,0-2.141,2.141V195.96Z" transform="translate(-281.242 -177.18)" fill="#dbdbdb"/>
<path id="Path_4555" data-name="Path 4555" d="M473.157,179.319v66a2.14,2.14,0,0,1-2.141,2.141h-7.26a2.14,2.14,0,0,0,2.141-2.141v-66a2.141,2.141,0,0,0-2.141-2.141h7.26A2.141,2.141,0,0,1,473.157,179.319Z" transform="translate(-421.642 -177.178)" fill="#dbdbdb"/>
</g>
<path id="Path_4556" data-name="Path 4556" d="M332.756,179.321V189.4H281.24V179.321a2.143,2.143,0,0,1,2.141-2.141h47.233A2.141,2.141,0,0,1,332.756,179.321Z" transform="translate(-281.24 -177.18)" fill="#d02127"/>
<path id="Path_4557" data-name="Path 4557" d="M371.453,179.57a6.171,6.171,0,1,1-11.863-2.391h11.383A6.141,6.141,0,0,1,371.453,179.57Z" transform="translate(-341.142 -177.18)" fill="#d02127"/>
<path id="Path_4558" data-name="Path 4558" d="M473.157,179.319v10.075H465.9V179.319a2.141,2.141,0,0,0-2.141-2.141h7.26A2.141,2.141,0,0,1,473.157,179.319Z" transform="translate(-421.642 -177.178)" fill="#d02127"/>
</g>
</g>
<g id="Group_7433" data-name="Group 7433">
<g id="Group_7432" data-name="Group 7432">
<path id="Path_4559" data-name="Path 4559" d="M59.016,179.321v66a2.141,2.141,0,0,1-2.141,2.139H9.641A2.139,2.139,0,0,1,7.5,245.319v-66a2.141,2.141,0,0,1,2.141-2.141H56.875a2.143,2.143,0,0,1,2.141,2.141Z" transform="translate(-7.5 -177.18)" fill="#fff"/>
<g id="Group_7431" data-name="Group 7431" transform="translate(0)">
<path id="Path_4560" data-name="Path 4560" d="M148.988,179.321V242.91H126.936a2.476,2.476,0,0,1-2.476-2.476V177.18h22.387a2.143,2.143,0,0,1,2.141,2.141Z" transform="translate(-97.472 -177.18)" fill="#dbdbdb"/>
<path id="Path_4561" data-name="Path 4561" d="M59.015,195.96V179.322a2.141,2.141,0,0,0-2.141-2.141H9.641A2.141,2.141,0,0,0,7.5,179.322V195.96Z" transform="translate(-7.5 -177.18)" fill="#dbdbdb"/>
<path id="Path_4562" data-name="Path 4562" d="M199.413,179.319v66a2.14,2.14,0,0,1-2.141,2.141h-7.26a2.14,2.14,0,0,0,2.141-2.141v-66a2.141,2.141,0,0,0-2.141-2.141h7.26A2.141,2.141,0,0,1,199.413,179.319Z" transform="translate(-147.898 -177.178)" fill="#dbdbdb"/>
</g>
<path id="Path_4563" data-name="Path 4563" d="M59.015,189.4H7.5V179.323a2.141,2.141,0,0,1,2.141-2.141H56.875a2.141,2.141,0,0,1,2.141,2.141Z" transform="translate(-7.5 -177.181)" fill="#d02127"/>
<path id="Path_4564" data-name="Path 4564" d="M199.413,179.319v10.075h-7.26V179.319a2.141,2.141,0,0,0-2.141-2.141h7.26A2.141,2.141,0,0,1,199.413,179.319Z" transform="translate(-147.898 -177.178)" fill="#20bfd5"/>
</g>
</g>
</g>
<g id="Group_7437" data-name="Group 7437" transform="translate(26.988)">
<g id="Group_7436" data-name="Group 7436">
<path id="Path_4565" data-name="Path 4565" d="M181.569,167.391H126.94a2.476,2.476,0,0,1-2.476-2.476V88.586a2.476,2.476,0,0,1,2.476-2.476h54.629a2.476,2.476,0,0,1,2.476,2.476v76.329A2.476,2.476,0,0,1,181.569,167.391Z" transform="translate(-124.463 -86.109)" fill="#fff"/>
<path id="Path_4566" data-name="Path 4566" d="M184.044,106.725V88.586a2.476,2.476,0,0,0-2.476-2.476H126.94a2.476,2.476,0,0,0-2.476,2.476v18.14Z" transform="translate(-124.463 -86.109)" fill="#dbdbdb"/>
<path id="Path_4567" data-name="Path 4567" d="M346.423,88.582v76.33a2.475,2.475,0,0,1-2.476,2.476h-8.4a2.475,2.475,0,0,0,2.476-2.476V88.582a2.476,2.476,0,0,0-2.476-2.476h8.4A2.476,2.476,0,0,1,346.423,88.582Z" transform="translate(-286.842 -86.106)" fill="#dbdbdb"/>
<path id="Path_4568" data-name="Path 4568" d="M184.041,88.586v11.653H124.46V88.586a2.476,2.476,0,0,1,2.476-2.476h54.629A2.475,2.475,0,0,1,184.041,88.586Z" transform="translate(-124.46 -86.109)" fill="#d02127"/>
<g id="Group_7435" data-name="Group 7435" transform="translate(37.747)">
<path id="Path_4569" data-name="Path 4569" d="M299.01,88.138a5.48,5.48,0,1,1-10.57-2.028h10.18A5.435,5.435,0,0,1,299.01,88.138Z" transform="translate(-288.05 -86.109)" fill="#d02127"/>
<path id="Path_4570" data-name="Path 4570" d="M346.423,88.582v11.653h-8.4V88.582a2.476,2.476,0,0,0-2.476-2.476h8.4A2.476,2.476,0,0,1,346.423,88.582Z" transform="translate(-324.59 -86.106)" fill="#d02127"/>
</g>
</g>
</g>
</g>
</g>
<g id="Group_7440" data-name="Group 7440" transform="translate(81.132 21.147)">
<path id="Path_4571" data-name="Path 4571" d="M359.11,145.215a6.171,6.171,0,1,1,6.171,6.171,6.171,6.171,0,0,1-6.171-6.171" transform="translate(-359.11 -139.044)" fill="#d02127"/>
<path id="Path_4572" data-name="Path 4572" d="M372.29,150.533a5.46,5.46,0,0,0,0-10.638,6.173,6.173,0,1,1,0,10.638" transform="translate(-369.249 -139.044)" fill="#d02127"/>
</g>
<g id="Group_7441" data-name="Group 7441" transform="translate(64.735)">
<path id="Path_4573" data-name="Path 4573" d="M288.05,52.878a5.48,5.48,0,1,1,5.48,5.48,5.48,5.48,0,0,1-5.48-5.48" transform="translate(-288.05 -47.398)" fill="#d02127"/>
<path id="Path_4574" data-name="Path 4574" d="M299.754,57.6a4.849,4.849,0,0,0,0-9.446,5.481,5.481,0,1,1,0,9.446" transform="translate(-297.053 -47.397)" fill="#d02127"/>
</g>
</g>
<g id="Group_7443" data-name="Group 7443" transform="translate(0 22.748)">
<path id="Path_4575" data-name="Path 4575" d="M114.27,69.844H96.883a7.887,7.887,0,0,0-6.853-8.735V53.036a4.211,4.211,0,0,0-4.206-4.206H78.948a7.211,7.211,0,1,0-14,0H31.2a4.211,4.211,0,0,0-4.206,4.206V69.844H21.93a1.731,1.731,0,0,0,0,3.461h5.058V82.06H3.461V73.716a.411.411,0,0,1,.41-.41h9.515a1.731,1.731,0,0,0,0-3.461H3.871A3.876,3.876,0,0,0,0,73.716v66a3.876,3.876,0,0,0,3.871,3.871H51.105a3.876,3.876,0,0,0,3.871-3.871v-6.14h8.188v6.14a3.876,3.876,0,0,0,3.871,3.871H81.123a1.731,1.731,0,0,0,0-3.461H67.036a.41.41,0,0,1-.41-.41v-6.14h19.2a4.211,4.211,0,0,0,4.206-4.206V85.521h24.65v54.191a.41.41,0,0,1-.41.41h-24.6a1.731,1.731,0,0,0,0,3.461h24.6a3.876,3.876,0,0,0,3.871-3.871v-66a3.876,3.876,0,0,0-3.871-3.871Zm-20.8-.9a4.441,4.441,0,1,1-4.441-4.441A4.446,4.446,0,0,1,93.475,68.946ZM71.946,43.358a3.75,3.75,0,1,1-3.75,3.75A3.754,3.754,0,0,1,71.946,43.358ZM31.2,52.291H66.941a7.192,7.192,0,0,0,10.011,0h8.873a.746.746,0,0,1,.745.745v8.4a7.9,7.9,0,0,0-2.683,1.519H30.45V53.036a.746.746,0,0,1,.745-.745Zm54.629,77.82H31.2a.746.746,0,0,1-.745-.745V109.979a1.731,1.731,0,0,0-3.461,0v19.386a4.211,4.211,0,0,0,4.206,4.206h20.32v6.14a.41.41,0,0,1-.41.41H3.871a.41.41,0,0,1-.41-.41V85.521H26.989v15.915a1.731,1.731,0,1,0,3.461,0V66.419h51.1a7.895,7.895,0,0,0,5.021,10.033v52.913A.746.746,0,0,1,85.824,130.111ZM90.03,82.06V76.783a7.909,7.909,0,0,0,5.59-3.478h18.65a.41.41,0,0,1,.41.41V82.06H90.03Z" transform="translate(0 -35.94)" fill="#2e303a"/>
<path id="Path_4576" data-name="Path 4576" d="M238.224,296.64a8.143,8.143,0,0,0-5.276-1.877h-.027a8.138,8.138,0,0,0-5.261,1.846,1.73,1.73,0,1,0,2.231,2.646,4.746,4.746,0,0,1,3.03-1.03h.015a4.75,4.75,0,0,1,3.04,1.048,1.731,1.731,0,0,0,2.247-2.633Z" transform="translate(-174.656 -231.997)"/>
<path id="Path_4577" data-name="Path 4577" d="M288.664,267.015l-.045,0h-.03a1.73,1.73,0,0,0-.156,3.452l.039,0c.042,0,.085.007.128.007h.01a1.73,1.73,0,0,0,.054-3.459Z" transform="translate(-220.675 -210.65)"/>
<path id="Path_4578" data-name="Path 4578" d="M207.009,267.012h-.03a1.731,1.731,0,0,0,.011,3.461H207a1.731,1.731,0,0,0,.009-3.461Z" transform="translate(-157.897 -210.65)"/>
<path id="Path_4579" data-name="Path 4579" d="M156.674,112.612h.009c.038,0,.077,0,.115.006l.062,0h.009a1.73,1.73,0,0,0,.346-3.426h-.007c-.053-.011-.108-.019-.162-.025-.02,0-.04,0-.06,0-.036,0-.072-.006-.109-.006h-.031a1.721,1.721,0,0,0-1.722,1.731,1.738,1.738,0,0,0,1.549,1.719Z" transform="translate(-119.331 -89.223)"/>
<path id="Path_4580" data-name="Path 4580" d="M179.553,112.623a1.731,1.731,0,0,0,0-3.461h-.021a1.722,1.722,0,0,0-1.72,1.731A1.74,1.74,0,0,0,179.553,112.623Z" transform="translate(-136.783 -89.223)"/>
<path id="Path_4581" data-name="Path 4581" d="M202.243,112.623a1.731,1.731,0,0,0,0-3.461h-.021a1.722,1.722,0,0,0-1.72,1.731A1.74,1.74,0,0,0,202.243,112.623Z" transform="translate(-154.237 -89.223)"/>
<path id="Path_4582" data-name="Path 4582" d="M53.4,116.408a1.73,1.73,0,0,0,2.447,0l.922-.922.922.922a1.73,1.73,0,0,0,2.447-2.447l-.922-.922.922-.922A1.73,1.73,0,0,0,57.7,109.67l-.922.922-.922-.922a1.73,1.73,0,0,0-2.447,2.447l.922.922-.922.922A1.73,1.73,0,0,0,53.4,116.408Z" transform="translate(-40.692 -89.223)"/>
<path id="Path_4583" data-name="Path 4583" d="M428.867,107.109a1.73,1.73,0,0,0,2.447,0l.922-.922.922.922a1.73,1.73,0,0,0,2.447-2.447l-.922-.922.922-.922a1.73,1.73,0,0,0-2.447-2.447l-.922.922-.922-.922a1.73,1.73,0,1,0-2.447,2.447l.922.922-.922.922A1.73,1.73,0,0,0,428.867,107.109Z" transform="translate(-329.518 -82.07)"/>
<path id="Path_4584" data-name="Path 4584" d="M237.941,29.993a1.73,1.73,0,0,0,2.447,0l.922-.922.922.922a1.73,1.73,0,0,0,2.447-2.447l-.922-.922.922-.922a1.73,1.73,0,0,0-2.447-2.447l-.922.922-.922-.922a1.73,1.73,0,1,0-2.447,2.447l.922.922-.922.922A1.73,1.73,0,0,0,237.941,29.993Z" transform="translate(-182.648 -22.748)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

@ -5,8 +5,8 @@ const ONLY_NUMBERS = "[0-9]";
const ONLY_LETTERS = "[a-zA-Z &'\"]"; const ONLY_LETTERS = "[a-zA-Z &'\"]";
const ONLY_DATE = "[0-9/]"; const ONLY_DATE = "[0-9/]";
const BASE_URL_LIVE_CARE = 'https://livecare.hmg.com/'; const BASE_URL_LIVE_CARE = 'https://livecare.hmg.com/';
const BASE_URL = 'https://hmgwebservices.com/'; // const BASE_URL = 'https://hmgwebservices.com/';
// const BASE_URL = 'https://uat.hmgwebservices.com/'; const BASE_URL = 'https://uat.hmgwebservices.com/';
const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh"; const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh";
const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList"; const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList";
const PATIENT_PROGRESS_NOTE_URL = const PATIENT_PROGRESS_NOTE_URL =

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_screen.dart'; import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_reply_screen.dart';
import 'package:doctor_app_flutter/screens/doctor/my_schedule_screen.dart'; import 'package:doctor_app_flutter/screens/doctor/my_schedule_screen.dart';
import 'package:doctor_app_flutter/screens/home/home_screen.dart'; import 'package:doctor_app_flutter/screens/home/home_screen.dart';
@ -10,6 +11,8 @@ import 'package:doctor_app_flutter/widgets/shared/bottom_nav_bar.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/app_showcase_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/user-guid/app_showcase_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
class LandingPage extends StatefulWidget { class LandingPage extends StatefulWidget {
@override @override
@ -35,6 +38,7 @@ class _LandingPageState extends State<LandingPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return AppScaffold( return AppScaffold(
appBar: currentTab != 0 appBar: currentTab != 0
? AppBar( ? AppBar(
@ -52,12 +56,16 @@ class _LandingPageState extends State<LandingPage> {
: SizedBox(), : SizedBox(),
leading: Builder( leading: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
return IconButton( return Container(
icon: Image.asset('assets/images/menu.png', width: 40,
height: 50, width: 50), margin: EdgeInsets.only(left: projectViewModel.isArabic? 0:20, right: projectViewModel.isArabic? 20:0),
iconSize: 15, child: IconButton(
color: Color(0xff2B353E), icon: SvgPicture.asset('assets/images/svgs/menu.svg',
onPressed: () => Scaffold.of(context).openDrawer(), height: 25, width: 10),
iconSize: 15,
color: Color(0xff2B353E),
onPressed: () => Scaffold.of(context).openDrawer(),
),
); );
}, },
), ),

@ -15,37 +15,32 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/secondary_button.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/secondary_button.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../config/size_config.dart'; import '../../config/size_config.dart';
import '../../landing_page.dart';
import '../../root_page.dart';
import '../../routes.dart';
import '../../util/dr_app_shared_pref.dart'; import '../../util/dr_app_shared_pref.dart';
import '../../util/helpers.dart'; import '../../util/helpers.dart';
import '../../widgets/auth/verification_methods_list.dart'; import '../../widgets/auth/verification_methods_list.dart';
import 'login_screen.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
Helpers helpers = Helpers(); Helpers helpers = Helpers();
///TODO Elham* check if this still in user or not
class VerificationMethodsScreen extends StatefulWidget { class VerificationMethodsScreen extends StatefulWidget {
final password; final password;
VerificationMethodsScreen({
VerificationMethodsScreen({this.password, }); this.password,
});
@override @override
_VerificationMethodsScreenState createState() => _VerificationMethodsScreenState(); _VerificationMethodsScreenState createState() =>
_VerificationMethodsScreenState();
} }
class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> { class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
ProjectViewModel projectsProvider; ProjectViewModel projectsProvider;
bool isMoreOption = false; bool isMoreOption = false;
bool onlySMSBox = false; bool onlySMSBox = false;
@ -58,367 +53,440 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
projectsProvider = Provider.of<ProjectViewModel>(context); projectsProvider = Provider.of<ProjectViewModel>(context);
authenticationViewModel = Provider.of<AuthenticationViewModel>(context); authenticationViewModel = Provider.of<AuthenticationViewModel>(context);
return AppScaffold( return AppScaffold(
isShowAppBar: false, isShowAppBar: false,
backgroundColor: Theme.of(context).scaffoldBackgroundColor, backgroundColor: Theme.of(context).scaffoldBackgroundColor,
// baseViewModel: model,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Center( child: Center(
child: FractionallySizedBox( child: FractionallySizedBox(
child: Container( widthFactor: 0.9,
margin: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0), child: SingleChildScrollView(
height: SizeConfig.realScreenHeight * .95, child: Column(
width: SizeConfig.realScreenWidth, crossAxisAlignment: CrossAxisAlignment.start,
child: SingleChildScrollView( children: <Widget>[
child: Column( SizedBox(
crossAxisAlignment: CrossAxisAlignment.start, height: SizeConfig.heightMultiplier *
// mainAxisAlignment: MainAxisAlignment.spaceBetween, (SizeConfig.isHeightVeryShort ? 6 : 4),
children: <Widget>[ ),
SizedBox( if (authenticationViewModel.isFromLogin)
height: 80,
),
if(authenticationViewModel.isFromLogin)
InkWell( InkWell(
onTap: (){ onTap: () {
authenticationViewModel.setUnverified(false,isFromLogin: false); authenticationViewModel.setUnverified(false,
authenticationViewModel.setAppStatus(APP_STATUS.UNAUTHENTICATED); isFromLogin: false);
authenticationViewModel
.setAppStatus(APP_STATUS.UNAUTHENTICATED);
}, },
child: Icon(Icons.arrow_back_ios,color: Color(0xFF2B353E),) child: Icon(
Icons.arrow_back_ios,
), color: AppGlobal.appTextColor,
Container( )),
Column(
child: Column( children: <Widget>[
children: <Widget>[ SizedBox(
SizedBox( height: SizeConfig.heightMultiplier *
height: 20, (SizeConfig.isHeightVeryShort ? 3 : 4),
), ),
authenticationViewModel.user != null && isMoreOption == false authenticationViewModel.user != null &&
? Column( isMoreOption == false
mainAxisAlignment: ? Column(
MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppText(
AppText( TranslationBase.of(context).welcomeBack,
TranslationBase.of(context).welcomeBack, fontSize: SizeConfig
fontSize:12, .getTextMultiplierBasedOnWidth() *
fontWeight: FontWeight.w700, 3.5,
color: Color(0xFF2B353E), fontWeight: FontWeight.w600,
), color: AppGlobal.appTextColor,
AppText( letterSpacing: -0.72,
Helpers.capitalize(authenticationViewModel.user.doctorName),
fontSize: 24,
color: Color(0xFF2B353E),
fontWeight: FontWeight.bold,
),
SizedBox(
height: 20,
),
AppText(
TranslationBase.of(context).accountInfo ,
fontSize: 16,
color: Color(0xFF2E303A),
fontWeight: FontWeight.w600,
),
SizedBox(
height: 20,
),
Container(
padding: EdgeInsets.all(15),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10),
),
border: Border.all(
color: HexColor('#707070'),
width: 0.1),
), ),
child: Row( AppText(
mainAxisAlignment: MainAxisAlignment.spaceBetween, Helpers.convertToTitleCase(
children: <Widget>[ authenticationViewModel.user.doctorName),
Column( fontSize: SizeConfig
children: [ .getTextMultiplierBasedOnWidth() *
6,
Text( color: AppGlobal.appTextColor,
TranslationBase.of(context) fontWeight: FontWeight.bold,
.lastLoginAt, letterSpacing: -1.44,
overflow: ),
TextOverflow.ellipsis, SizedBox(
style: TextStyle( height: SizeConfig.heightMultiplier * 4,
fontFamily: 'Poppins', ),
fontSize: 16, AppText(
color: Color(0xFF2E303A), TranslationBase.of(context).accountInfo,
fontWeight: FontWeight.w700,), fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
4.5,
color: Color(0xFF2E303A),
fontWeight: FontWeight.w600,
letterSpacing: -0.64,
),
SizedBox(
height: SizeConfig.heightMultiplier * 4),
Container(
padding: EdgeInsets.all(15),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10),
),
border: Border.all(
color: HexColor('#707070'), width: 0.1),
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Container(
width: SizeConfig.realScreenWidth * .5,
padding: EdgeInsets.all(0),
child: Column(
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
TranslationBase.of(context)
.lastLoginAt,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontFamily: 'Poppins',
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
4.5,
color: Color(0xFF2E303A),
fontWeight: FontWeight.w600,
letterSpacing: -0.4),
),
Container(
width: MediaQuery.of(context)
.size
.width *
0.55,
child: RichText(
text: TextSpan(
text: TranslationBase.of(
context)
.verifyWith +
':',
style: TextStyle(
color:
Color(0xFF575757),
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
3.5,
fontFamily: 'Poppins',
fontWeight:
FontWeight.w600,
letterSpacing: -0.4),
children: <TextSpan>[
TextSpan(
text: authenticationViewModel
.getType(
authenticationViewModel
.user
.logInTypeID,
context),
style: TextStyle(
color: AppGlobal
.appTextColor,
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
3.5,
fontFamily:
'Poppins',
fontWeight:
FontWeight.w600,
letterSpacing:
-0.48),
)
]),
),
),
],
crossAxisAlignment:
CrossAxisAlignment.start,
),
), ),
Row( Column(
mainAxisAlignment:
MainAxisAlignment.start,
children: [ children: [
AppText( AppText(
TranslationBase authenticationViewModel
.of(context) .user.editedOn !=
.verifyWith, null
fontSize: 14, ? AppDateUtils
color: Color(0xFF575757), .getDayMonthYearDateFormatted(
fontWeight: FontWeight.w600, AppDateUtils
), .convertStringToDate(
AppText( authenticationViewModel
authenticationViewModel.getType( .user
authenticationViewModel.user .editedOn),
.logInTypeID, isMonthShort: true)
context), : authenticationViewModel
fontSize: 14, .user.createdOn !=
color: Color(0xFF2B353E), null
? AppDateUtils.getDayMonthYearDateFormatted(
AppDateUtils
.convertStringToDate(
authenticationViewModel
.user
.createdOn),
isMonthShort: true)
: '--',
textAlign: TextAlign.right,
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
4.5,
color: Color(0xFF2E303A),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
letterSpacing: -0.48,
), ),
AppText(
authenticationViewModel
.user.editedOn !=
null
? AppDateUtils.getHour(AppDateUtils
.convertStringToDate(
authenticationViewModel
.user.editedOn))
: authenticationViewModel
.user.createdOn !=
null
? AppDateUtils.getHour(
AppDateUtils
.convertStringToDate(
authenticationViewModel
.user
.createdOn))
: '--',
textAlign: TextAlign.right,
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
3.5,
fontWeight: FontWeight.w600,
letterSpacing: -0.48,
color: Color(0xFF575757),
)
], ],
crossAxisAlignment:
CrossAxisAlignment.end,
) )
], ],
crossAxisAlignment: CrossAxisAlignment.start,), ),
Column(children: [ ),
AppText( SizedBox(
authenticationViewModel.user.editedOn != height: SizeConfig.heightMultiplier * 3,
null ),
? AppDateUtils.getDayMonthYearDateFormatted( Row(
AppDateUtils.convertStringToDate( children: [
authenticationViewModel.user //todo add translation
.editedOn)) AppText(
: authenticationViewModel.user.createdOn != "Please Verify",
null fontSize: SizeConfig
? AppDateUtils.getDayMonthYearDateFormatted( .getTextMultiplierBasedOnWidth() *
AppDateUtils.convertStringToDate(authenticationViewModel.user 4.5,
.createdOn)) color: AppGlobal.appTextColor,
: '--', fontWeight: FontWeight.w600,
textAlign: letterSpacing: -.64,
TextAlign.right, ),
fontSize: 13,
color: Color(0xFF2E303A),
fontWeight: FontWeight.w700,
),
AppText(
authenticationViewModel.user.editedOn !=
null
? AppDateUtils.getHour(
AppDateUtils.convertStringToDate(
authenticationViewModel.user
.editedOn))
: authenticationViewModel.user.createdOn !=
null
? AppDateUtils.getHour(
AppDateUtils.convertStringToDate(authenticationViewModel.user
.createdOn))
: '--',
textAlign:
TextAlign.right,
fontSize: 14,
fontWeight: FontWeight.w600,
color: Color(0xFF575757),
)
],
crossAxisAlignment: CrossAxisAlignment.start,
)
], ],
), ),
), SizedBox(
SizedBox( height: SizeConfig.heightMultiplier * 2,
height: 20, ),
), ],
Row( )
children: [ : Column(
AppText( mainAxisAlignment: MainAxisAlignment.spaceEvenly,
"Please Verify",
fontSize: 16,
color: Color(0xFF2B353E),
fontWeight: FontWeight.w700,
),
],
)
],
)
: Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
this.onlySMSBox == false this.onlySMSBox == false
? Container( ? Container(
margin: EdgeInsets.only(bottom: 20, top: 30), margin: EdgeInsets.only(
child: AppText( bottom: 20, top: 30),
TranslationBase.of(context) child: AppText(
.verifyLoginWith, TranslationBase.of(context)
fontSize: 18, .verifyLoginWith,
color: Color(0xFF2E303A), fontSize: SizeConfig
fontWeight: FontWeight.bold, .getTextMultiplierBasedOnWidth() *
textAlign: TextAlign.left, 4,
), color: Color(0xFF2E303A),
) fontWeight: FontWeight.bold,
: AppText( textAlign: TextAlign.left,
TranslationBase.of(context) ),
.verifyFingerprint2, )
fontSize: : AppText(
SizeConfig.textMultiplier * 2.5, TranslationBase.of(context)
textAlign: TextAlign.start, .verifyFingerprint2,
), fontSize: SizeConfig
]), .getTextMultiplierBasedOnWidth() *
authenticationViewModel.user != null && isMoreOption == false 4,
? Column( textAlign: TextAlign.start,
),
]),
authenticationViewModel.user != null &&
isMoreOption == false
? Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.center, MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: InkWell( child: InkWell(
onTap: () => onTap: () => {
{ // TODO check this logic it seem it will create bug to us
// TODO check this logic it seem it will create bug to us authenticateUser(
authenticateUser( AuthMethodTypes
AuthMethodTypes .Fingerprint,
.Fingerprint, true) true)
}, },
child: VerificationMethodsList(
authenticationViewModel:
authenticationViewModel,
authMethodType:
SelectedAuthMethodTypesService
.getMethodsTypeService(
authenticationViewModel
.user
.logInTypeID),
authenticateUser:
(AuthMethodTypes
authMethodType,
isActive) =>
authenticateUser(
authMethodType,
isActive),
)),
),
Expanded(
child: VerificationMethodsList( child: VerificationMethodsList(
authenticationViewModel:authenticationViewModel, authenticationViewModel:
authMethodType: SelectedAuthMethodTypesService authenticationViewModel,
.getMethodsTypeService( authMethodType:
authenticationViewModel.user AuthMethodTypes.MoreOptions,
.logInTypeID), onShowMore: () {
authenticateUser: setState(() {
(AuthMethodTypes isMoreOption = true;
authMethodType, });
isActive) => },
))
]),
])
: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
onlySMSBox == false
? Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: VerificationMethodsList(
authenticationViewModel:
authenticationViewModel,
authMethodType:
AuthMethodTypes.Fingerprint,
authenticateUser: (AuthMethodTypes
authMethodType,
isActive) =>
authenticateUser( authenticateUser(
authMethodType, authMethodType, isActive),
isActive),
)), )),
), Expanded(
child: VerificationMethodsList(
authenticationViewModel:
authenticationViewModel,
authMethodType:
AuthMethodTypes.FaceID,
authenticateUser: (AuthMethodTypes
authMethodType,
isActive) =>
authenticateUser(
authMethodType, isActive),
))
],
)
: SizedBox(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded( Expanded(
child: VerificationMethodsList( child: VerificationMethodsList(
authenticationViewModel:authenticationViewModel, authenticationViewModel:
authMethodType: authenticationViewModel,
AuthMethodTypes.MoreOptions, authMethodType: AuthMethodTypes.SMS,
onShowMore: () { authenticateUser:
setState(() { (AuthMethodTypes authMethodType,
isMoreOption = true; isActive) =>
}); authenticateUser(
}, authMethodType, isActive),
)) )),
]), Expanded(
]) child: VerificationMethodsList(
: Column( authenticationViewModel:
mainAxisAlignment: MainAxisAlignment.start, authenticationViewModel,
crossAxisAlignment: CrossAxisAlignment.start, authMethodType:
children: <Widget>[ AuthMethodTypes.WhatsApp,
onlySMSBox == false authenticateUser:
? Row( (AuthMethodTypes authMethodType,
mainAxisAlignment: isActive) =>
MainAxisAlignment.center, authenticateUser(
children: <Widget>[ authMethodType, isActive),
Expanded( ))
child: VerificationMethodsList( ],
authenticationViewModel:authenticationViewModel, ),
authMethodType: ]),
AuthMethodTypes.Fingerprint,
authenticateUser:
(AuthMethodTypes
authMethodType,
isActive) =>
authenticateUser(
authMethodType,
isActive),
)),
Expanded(
child: VerificationMethodsList(
authenticationViewModel:authenticationViewModel,
authMethodType:
AuthMethodTypes.FaceID,
authenticateUser:
(AuthMethodTypes
authMethodType,
isActive) =>
authenticateUser(
authMethodType,
isActive),
))
],
)
: SizedBox(),
Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: VerificationMethodsList(
authenticationViewModel:authenticationViewModel,
authMethodType: AuthMethodTypes
.SMS,
authenticateUser:
(
AuthMethodTypes authMethodType,
isActive) =>
authenticateUser(
authMethodType, isActive),
)),
Expanded(
child: VerificationMethodsList(
authenticationViewModel:authenticationViewModel,
authMethodType:
AuthMethodTypes.WhatsApp,
authenticateUser:
(
AuthMethodTypes authMethodType,
isActive) =>
authenticateUser(
authMethodType, isActive),
))
],
),
]),
// ) // )
], ],
), ),
), ],
],
),
), ),
), ),
), ),
), ),
), ),
bottomSheet: authenticationViewModel.user == null ? SizedBox(height: 0,) : Container( bottomSheet: authenticationViewModel.user == null
height: 90, ? SizedBox(
width: double.infinity, height: 0,
child: Center( )
child: FractionallySizedBox( : Container(
widthFactor: 0.9, height: 90,
child: Column( width: double.infinity,
mainAxisAlignment: MainAxisAlignment.end, child: Center(
children: <Widget>[ child: FractionallySizedBox(
SecondaryButton( widthFactor: 0.9,
label: TranslationBase child: Column(
.of(context) mainAxisAlignment: MainAxisAlignment.end,
.useAnotherAccount, children: <Widget>[
color: Color(0xFFD02127), SecondaryButton(
//fontWeight: FontWeight.w700, label:
onTap: () { TranslationBase.of(context).useAnotherAccount ?? '',
authenticationViewModel.deleteUser(); color: Color(0xFFD02127),
authenticationViewModel.setAppStatus(APP_STATUS.UNAUTHENTICATED); //fontWeight: FontWeight.w700,
}, onTap: () {
authenticationViewModel.deleteUser();
authenticationViewModel
.setAppStatus(APP_STATUS.UNAUTHENTICATED);
},
),
SizedBox(
height: 25,
)
],
),
), ),
),
SizedBox(height: 25,)
],
), ),
),
),),
); );
} }
@ -428,13 +496,13 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
authMethodType == AuthMethodTypes.WhatsApp) { authMethodType == AuthMethodTypes.WhatsApp) {
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
await authenticationViewModel.sendActivationCodeForDoctorApp(
await authenticationViewModel.sendActivationCodeForDoctorApp(authMethodType:authMethodType, password: authenticationViewModel.userInfo.password ); authMethodType: authMethodType,
password: authenticationViewModel.userInfo.password);
if (authenticationViewModel.state == ViewState.ErrorLocal) { if (authenticationViewModel.state == ViewState.ErrorLocal) {
Helpers.showErrorToast(authenticationViewModel.error); Helpers.showErrorToast(authenticationViewModel.error);
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
} else { } else {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
this.startSMSService(authMethodType); this.startSMSService(authMethodType);
} }
@ -455,12 +523,14 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
Helpers.showErrorToast(authenticationViewModel.error); Helpers.showErrorToast(authenticationViewModel.error);
} else { } else {
await sharedPref.setString(TOKEN, await sharedPref.setString(
authenticationViewModel.activationCodeVerificationScreenRes.logInTokenID); TOKEN,
authenticationViewModel
.activationCodeVerificationScreenRes.logInTokenID);
if (authMethodType == AuthMethodTypes.SMS || if (authMethodType == AuthMethodTypes.SMS ||
authMethodType == AuthMethodTypes.WhatsApp) { authMethodType == AuthMethodTypes.WhatsApp) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
this.startSMSService(authMethodType,isSilentLogin: true); this.startSMSService(authMethodType, isSilentLogin: true);
} else { } else {
checkActivationCode(isSilentLogin: true); checkActivationCode(isSilentLogin: true);
} }
@ -473,7 +543,7 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
fingerPrintBefore = authMethodType; fingerPrintBefore = authMethodType;
} }
this.selectedOption = this.selectedOption =
fingerPrintBefore != null ? fingerPrintBefore : authMethodType; fingerPrintBefore != null ? fingerPrintBefore : authMethodType;
switch (authMethodType) { switch (authMethodType) {
case AuthMethodTypes.SMS: case AuthMethodTypes.SMS:
@ -503,11 +573,13 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
} }
} }
startSMSService(AuthMethodTypes type,{isSilentLogin: false}) { startSMSService(AuthMethodTypes type, {isSilentLogin: false}) {
new SMSOTP( new SMSOTP(
context, context,
type, type,
authenticationViewModel.loggedUser != null ? authenticationViewModel.loggedUser.mobileNumber : authenticationViewModel.user.mobile, authenticationViewModel.loggedUser != null
? authenticationViewModel.loggedUser.mobileNumber
: authenticationViewModel.user.mobile,
(value) { (value) {
showDialog( showDialog(
context: context, context: context,
@ -515,25 +587,26 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
return AppLoaderWidget(); return AppLoaderWidget();
}); });
this.checkActivationCode(value: value,isSilentLogin: isSilentLogin); this.checkActivationCode(value: value, isSilentLogin: isSilentLogin);
}, },
() => () => {
{
print('Faild..'), print('Faild..'),
}, },
).displayDialog(context); ).displayDialog(context);
} }
loginWithFingerPrintOrFaceID(AuthMethodTypes authMethodTypes,
isActive) async { loginWithFingerPrintOrFaceID(
AuthMethodTypes authMethodTypes, isActive) async {
if (isActive) { if (isActive) {
await authenticationViewModel.showIOSAuthMessages(); await authenticationViewModel.showIOSAuthMessages();
if (!mounted) return; if (!mounted) return;
if (authenticationViewModel.user != null && if (authenticationViewModel.user != null &&
(SelectedAuthMethodTypesService.getMethodsTypeService( (SelectedAuthMethodTypesService.getMethodsTypeService(
authenticationViewModel.user.logInTypeID) == authenticationViewModel.user.logInTypeID) ==
AuthMethodTypes.Fingerprint || AuthMethodTypes.Fingerprint ||
SelectedAuthMethodTypesService.getMethodsTypeService( SelectedAuthMethodTypesService.getMethodsTypeService(
authenticationViewModel.user.logInTypeID) == AuthMethodTypes.FaceID)) { authenticationViewModel.user.logInTypeID) ==
AuthMethodTypes.FaceID)) {
this.sendActivationCode(authMethodTypes); this.sendActivationCode(authMethodTypes);
} else { } else {
setState(() { setState(() {
@ -543,22 +616,19 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
} }
} }
checkActivationCode({String value,bool isSilentLogin = false}) async { checkActivationCode({String value, bool isSilentLogin = false}) async {
await authenticationViewModel.checkActivationCodeForDoctorApp(activationCode: value,isSilentLogin: isSilentLogin); await authenticationViewModel.checkActivationCodeForDoctorApp(
activationCode: value, isSilentLogin: isSilentLogin);
if (authenticationViewModel.state == ViewState.ErrorLocal) { if (authenticationViewModel.state == ViewState.ErrorLocal) {
Navigator.pop(context); Navigator.pop(context);
Helpers.showErrorToast(authenticationViewModel.error); Helpers.showErrorToast(authenticationViewModel.error);
} else { } else {
await authenticationViewModel.onCheckActivationCodeSuccess(); await authenticationViewModel.onCheckActivationCodeSuccess();
if(value !=null){ if (value != null) {
if(Navigator.canPop(context)) if (Navigator.canPop(context)) Navigator.pop(context);
Navigator.pop(context); }
} if (Navigator.canPop(context)) Navigator.pop(context);
if(Navigator.canPop(context)) navigateToLandingPage();
Navigator.pop(context);
navigateToLandingPage();
} }
} }
@ -569,5 +639,4 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
authenticationViewModel.setAppStatus(APP_STATUS.AUTHENTICATED); authenticationViewModel.setAppStatus(APP_STATUS.AUTHENTICATED);
} }
} }
} }

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_repaly_chat.dart'; import 'package:doctor_app_flutter/screens/doctor/doctor_replay/doctor_repaly_chat.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
@ -14,6 +15,7 @@ import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils
import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'all_doctor_questions.dart'; import 'all_doctor_questions.dart';
import 'not_replaied_Doctor_Questions.dart'; import 'not_replaied_Doctor_Questions.dart';
@ -81,6 +83,8 @@ class _DoctorReplyScreenState extends State<DoctorReplyScreen>
preferredSize: Size.fromHeight( preferredSize: Size.fromHeight(
MediaQuery.of(context).size.height * 0.070), MediaQuery.of(context).size.height * 0.070),
child: Container( child: Container(
color: Helpers.getBgTabColor(),
child: TabBar( child: TabBar(
isScrollable: false, isScrollable: false,
controller: _tabController, controller: _tabController,
@ -137,11 +141,13 @@ class _DoctorReplyScreenState extends State<DoctorReplyScreen>
Widget tabWidget(Size screenSize, bool isActive, String title, Widget tabWidget(Size screenSize, bool isActive, String title,
{int counter = -1, bool isFirst = false, {int counter = -1, bool isFirst = false,
bool isMiddle = false, bool isMiddle = false,
bool isLast = false,context}) { bool isLast = false,context, }) {
ProjectViewModel projectViewModel= Provider.of(context);
return Center( return Center(
child: Container( child: Container(
height: Helpers.getTabHeight(context), height: Helpers.getTabHeight(context),
decoration: Helpers.getBoxTabsBoxDecoration(isActive: isActive,isFirst: isFirst, isMiddle: isMiddle, isLast: isLast), decoration: Helpers.getBoxTabsBoxDecoration(isActive: isActive,isFirst: isFirst, isMiddle: isMiddle, isLast: isLast, projectViewModel: projectViewModel),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [

@ -31,11 +31,6 @@ class HomePageCard extends StatelessWidget {
width: width, width: width,
margin: this.margin, margin: this.margin,
decoration: BoxDecoration( decoration: BoxDecoration(
// color: !hasBorder
// ? color != null
// ? color
// : HexColor('#050705').withOpacity(opacity)
// : Colors.white,
gradient: gradient, gradient: gradient,
borderRadius: BorderRadius.circular(20.0), borderRadius: BorderRadius.circular(20.0),
border: hasBorder border: hasBorder

@ -1,4 +1,5 @@
import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart'; import 'package:doctor_app_flutter/core/model/patient_muse/PatientSearchRequestModel.dart';
import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart';
@ -20,6 +21,7 @@ import 'package:doctor_app_flutter/screens/patients/profile/referral/patient_ref
import 'package:doctor_app_flutter/screens/patients/register_patient/RegisterPatientPage.dart'; import 'package:doctor_app_flutter/screens/patients/register_patient/RegisterPatientPage.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/profile-welcome-widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/profile-welcome-widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@ -29,6 +31,7 @@ import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart'; import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sticky_headers/sticky_headers/widget.dart'; import 'package:sticky_headers/sticky_headers/widget.dart';
@ -40,7 +43,6 @@ class HomeScreen extends StatefulWidget {
HomeScreen({Key key, this.title}) : super(key: key); HomeScreen({Key key, this.title}) : super(key: key);
final String title; final String title;
final String iconURL = 'assets/images/dashboard_icon/';
@override @override
_HomeScreenState createState() => _HomeScreenState(); _HomeScreenState createState() => _HomeScreenState();
@ -83,12 +85,17 @@ class _HomeScreenState extends State<HomeScreen> {
color: Colors.grey[100], color: Colors.grey[100],
padding: EdgeInsets.only(top: 10), padding: EdgeInsets.only(top: 10),
child: Stack(children: [ child: Stack(children: [
IconButton( //TODO Elham* make it componet
icon: Image.asset('assets/images/menu.png', Container(
height: 50, width: 50), width: 40,
iconSize: 18, margin: EdgeInsets.only(left: projectsProvider.isArabic? 0:32, right: projectsProvider.isArabic? 23:0),
color: Colors.black, child: IconButton(
onPressed: () => Scaffold.of(context).openDrawer(), icon: SvgPicture.asset('assets/images/svgs/menu.svg',
height: 25, width: 10),
iconSize: 15,
color: Colors.black,
onPressed: () => Scaffold.of(context).openDrawer(),
),
), ),
Column(children: <Widget>[ Column(children: <Widget>[
ProfileWelcomeWidget( ProfileWelcomeWidget(
@ -169,7 +176,7 @@ class _HomeScreenState extends State<HomeScreen> {
)), )),
], ],
), ),
AppText(item.clinicName, AppText(Helpers.convertToTitleCase(item.clinicName),
fontSize: 14, fontSize: 14,
letterSpacing: -0.96, letterSpacing: -0.96,
color: AppGlobal.appTextColor, color: AppGlobal.appTextColor,
@ -199,7 +206,7 @@ class _HomeScreenState extends State<HomeScreen> {
.map((item) { .map((item) {
return DropdownMenuItem( return DropdownMenuItem(
child: AppText( child: AppText(
item.clinicName, Helpers.convertToTitleCase(item.clinicName),
fontSize: 14, fontSize: 14,
letterSpacing: -0.96, letterSpacing: -0.96,
color: AppGlobal.appTextColor, color: AppGlobal.appTextColor,
@ -292,7 +299,14 @@ class _HomeScreenState extends State<HomeScreen> {
), ),
Container( Container(
height: 120, height: SizeConfig.heightMultiplier *
(SizeConfig.isHeightVeryShort
? 16
: SizeConfig.isHeightShort
? 14
: SizeConfig.isHeightLarge
? 15
: 13),
child: ListView( child: ListView(
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
children: [ children: [

@ -63,7 +63,6 @@ class _InPatientScreenState extends State<InPatientScreen>
Widget build(BuildContext context) { Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
PatientSearchRequestModel requestModel = PatientSearchRequestModel(); PatientSearchRequestModel requestModel = PatientSearchRequestModel();
ProjectViewModel projectsProvider = Provider.of<ProjectViewModel>(context);
return BaseView<PatientSearchViewModel>( return BaseView<PatientSearchViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
@ -127,6 +126,8 @@ class _InPatientScreenState extends State<InPatientScreen>
color: Colors.white), color: Colors.white),
child: Container( child: Container(
margin: EdgeInsets.only(top: 9), margin: EdgeInsets.only(top: 9),
color: Helpers.getBgTabColor(),
child: TabBar( child: TabBar(
isScrollable: false, isScrollable: false,
controller: _tabController, controller: _tabController,
@ -140,13 +141,13 @@ class _InPatientScreenState extends State<InPatientScreen>
// unselectedLabelColor: Colors.grey[800], // unselectedLabelColor: Colors.grey[800],
tabs: [ tabs: [
tabWidget(screenSize, _activeTab == 0, tabWidget(screenSize, _activeTab == 0,
TranslationBase.of(context).inPatientAll, TranslationBase.of(context).inPatientAll,context: context,
counter: model.inPatientList.length, isFirst: true), counter: model.inPatientList.length, isFirst: true),
tabWidget(screenSize, _activeTab == 1, tabWidget(screenSize, _activeTab == 1,
TranslationBase.of(context).myInPatientTitle, TranslationBase.of(context).myInPatientTitle,
counter: model.myIinPatientList.length, isMiddle: true), counter: model.myIinPatientList.length, isMiddle: true, context: context,),
tabWidget(screenSize, _activeTab == 2, tabWidget(screenSize, _activeTab == 2,
TranslationBase.of(context).discharged, isLast:true), TranslationBase.of(context).discharged, isLast:true, context: context,),
], ],
), ),
), ),
@ -199,11 +200,15 @@ class _InPatientScreenState extends State<InPatientScreen>
{int counter = -1, {int counter = -1,
bool isFirst = false, bool isFirst = false,
bool isMiddle = false, bool isMiddle = false,
bool isLast = false,}) { bool isLast = false,BuildContext context}) {
ProjectViewModel projectsProvider = Provider.of<ProjectViewModel>(context);
return Center( return Center(
child: Container( child: Container(
height: Helpers.getTabHeight(context), height: Helpers.getTabHeight(context),
decoration:Helpers.getBoxTabsBoxDecoration(isActive: isActive,isFirst: isFirst, isMiddle: isMiddle, isLast: isLast), decoration:Helpers.getBoxTabsBoxDecoration(isActive: isActive,isFirst: isFirst, isMiddle: isMiddle, isLast: isLast,projectViewModel: projectsProvider),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [

@ -107,9 +107,7 @@ class _OutPatientsScreenState extends State<OutPatientsScreen> {
Container( Container(
// color: Colors.red, // color: Colors.red,
height: Helpers.getTabHeight(context), height: Helpers.getTabHeight(context),
decoration: TextFieldsUtils.containerBorderDecoration( color: Helpers.getBgTabColor(),
Color(0Xffffffff), Color(0xFFCCCCCC),
borderRadius: 4, borderWidth: 0),
child: Row( child: Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -149,19 +147,21 @@ class _OutPatientsScreenState extends State<OutPatientsScreen> {
isFirst: _times.indexOf(item) == 0, isFirst: _times.indexOf(item) == 0,
isLast: isLast:
_times.indexOf(item) == _times.length - 1, _times.indexOf(item) == _times.length - 1,
isMiddle: _times.indexOf(item) != 0 && _times.indexOf(item) != _times.length - 1 isMiddle: _times.indexOf(item) != 0 &&
_times.indexOf(item) != _times.length - 1,
), projectViewModel: projectsProvider),
child: Center( child: Center(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Helpers.getTabText(title: item, isActive: _isActive), Helpers.getTabText(
title: item, isActive: _isActive),
_isActive && _isActive &&
_activeLocation != 0 && _activeLocation != 0 &&
model.state == ViewState.Idle model.state == ViewState.Idle
? Helpers.getTabCounter(isActive:_isActive,counter: model.filterData.length) ? Helpers.getTabCounter(
isActive: _isActive,
counter: model.filterData.length)
: Container(), : Container(),
], ],
), ),

@ -251,7 +251,7 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
radius: 30, radius: 30,
hPadding: 20, hPadding: 20,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: 1.6, fontSize: 12,
icon: SvgPicture.asset( icon: SvgPicture.asset(
"assets/images/svgs/profile_screen/create episode.svg", "assets/images/svgs/profile_screen/create episode.svg",
color: Colors.white, color: Colors.white,
@ -283,7 +283,7 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
radius: 30, radius: 30,
hPadding: 20, hPadding: 20,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
fontSize: 1.6, fontSize: 12,
icon: SvgPicture.asset( icon: SvgPicture.asset(
"assets/images/svgs/profile_screen/modify episode.svg", "assets/images/svgs/profile_screen/modify episode.svg",
color: Colors.white, color: Colors.white,

@ -88,38 +88,38 @@ class ProfileGridForOther extends StatelessWidget {
? patient.appointmentNo == null ? patient.appointmentNo == null
: patient.patientStatusType != 43 || patient.appointmentNo == null), : patient.patientStatusType != 43 || patient.appointmentNo == null),
]; ];
return Padding(
padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 15),
child: GridView(
shrinkWrap: true,
return Column( physics: BouncingScrollPhysics(),
children: [ // if you want IOS bouncing effect, otherwise remove this line
Padding( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 15), crossAxisSpacing: 10,
child: StaggeredGridView.countBuilder( mainAxisSpacing: 8,
shrinkWrap: true, crossAxisCount: 3,
physics: NeverScrollableScrollPhysics(),
crossAxisSpacing: 8,
mainAxisSpacing: 8,
crossAxisCount: 3,
itemCount: cardsList.length,
staggeredTileBuilder: (int index) => StaggeredTile.fit(1),
itemBuilder: (BuildContext context, int index) => PatientProfileButton(
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
from: from,
to: to,
nameLine1: cardsList[index].nameLine1,
nameLine2: cardsList[index].nameLine2,
route: cardsList[index].route,
icon: cardsList[index].icon,
isInPatient: cardsList[index].isInPatient,
isDischargedPatient: cardsList[index].isDischargedPatient,
isDisable: cardsList[index].isDisable,
onTap: cardsList[index].onTap,
isLoading: cardsList[index].isLoading,
isFromLiveCare: isFromLiveCare),
),
), ),
], //change the number as you want
children: cardsList.map((item) {
return PatientProfileButton(
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
from: from,
to: to,
nameLine1: item.nameLine1,
nameLine2: item.nameLine2,
route: item.route,
icon: item.icon,
isInPatient: item.isInPatient,
isDischargedPatient: item.isDischargedPatient,
isDisable: item.isDisable,
onTap: item.onTap,
isLoading: item.isLoading,
);
}).toList(),
),
); );
} }
} }

@ -66,37 +66,39 @@ class ProfileGridForSearch extends StatelessWidget {
isInPatient: isInpatient, isDisable: patient.patientStatusType != 43 ? true : false), isInPatient: isInpatient, isDisable: patient.patientStatusType != 43 ? true : false),
]; ];
return Column(
children: [ return Padding(
Padding( padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 15),
padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 15), child: GridView(
child: StaggeredGridView.countBuilder( shrinkWrap: true,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: BouncingScrollPhysics(),
crossAxisSpacing: 8, // if you want IOS bouncing effect, otherwise remove this line
mainAxisSpacing: 8, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, crossAxisSpacing: 10,
itemCount: cardsList.length, mainAxisSpacing: 8,
staggeredTileBuilder: (int index) => StaggeredTile.fit(1), crossAxisCount: 3,
itemBuilder: (BuildContext context, int index) => PatientProfileButton(
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
from: from,
to: to,
nameLine1: cardsList[index].nameLine1,
nameLine2: cardsList[index].nameLine2,
route: cardsList[index].route,
icon: cardsList[index].icon,
isInPatient: cardsList[index].isInPatient,
isDischargedPatient: cardsList[index].isDischargedPatient,
isDisable: cardsList[index].isDisable,
onTap: cardsList[index].onTap,
isLoading: cardsList[index].isLoading,
),
),
), ),
], //change the number as you want
children: cardsList.map((item) {
return PatientProfileButton(
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
from: from,
to: to,
nameLine1: item.nameLine1,
nameLine2: item.nameLine2,
route: item.route,
icon: item.icon,
isInPatient: item.isInPatient,
isDischargedPatient: item.isDischargedPatient,
isDisable: item.isDisable,
onTap: item.onTap,
isLoading: item.isLoading,
);
}).toList(),
),
); );
} }
} }

@ -1,6 +1,7 @@
import 'dart:ui'; import 'dart:ui';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart'; import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart';
import 'package:doctor_app_flutter/screens/patients/profile/referral/referred-patient-screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/referral/referred-patient-screen.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
@ -10,6 +11,7 @@ import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../ReferralDischargedPatientPage.dart'; import '../../ReferralDischargedPatientPage.dart';
import 'my-referral-inpatient-screen.dart'; import 'my-referral-inpatient-screen.dart';
@ -45,6 +47,8 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectsProvider = Provider.of<ProjectViewModel>(context);
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBar: PatientSearchHeader( appBar: PatientSearchHeader(
@ -60,6 +64,7 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
child: Center( child: Center(
child: Container( child: Container(
height: Helpers.getTabHeight(context), height: Helpers.getTabHeight(context),
color: Helpers.getBgTabColor(),
child: Center( child: Center(
child: TabBar( child: TabBar(
isScrollable: false, isScrollable: false,
@ -74,7 +79,7 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
tabs: [ tabs: [
Container( Container(
decoration: Helpers.getBoxTabsBoxDecoration( decoration: Helpers.getBoxTabsBoxDecoration(
isActive: index == 0, isFirst: true), isActive: index == 0, isFirst: true, projectViewModel:projectsProvider ),
child: Center( child: Center(
child: Helpers.getTabText(title:TranslationBase.of(context).myReferredPatient, isActive:index == 0 ) child: Helpers.getTabText(title:TranslationBase.of(context).myReferredPatient, isActive:index == 0 )
), ),
@ -82,7 +87,7 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
Center( Center(
child: Container( child: Container(
decoration:Helpers.getBoxTabsBoxDecoration( decoration:Helpers.getBoxTabsBoxDecoration(
isActive: index == 1, isMiddle: true), isActive: index == 1, isMiddle: true, projectViewModel:projectsProvider ),
child: Center( child: Center(
child:Helpers.getTabText(title:TranslationBase.of(context).referral, isActive:index == 1 ) child:Helpers.getTabText(title:TranslationBase.of(context).referral, isActive:index == 1 )
), ),
@ -91,7 +96,7 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
Center( Center(
child: Container( child: Container(
decoration:Helpers.getBoxTabsBoxDecoration( decoration:Helpers.getBoxTabsBoxDecoration(
isActive: index == 2, isLast: true), isActive: index == 2, isLast: true, projectViewModel:projectsProvider ),
child: Center( child: Center(
child: Helpers.getTabText(title:TranslationBase.of(context).discharged, isActive:index == 2 ), child: Helpers.getTabText(title:TranslationBase.of(context).discharged, isActive:index == 2 ),
), ),

@ -15,6 +15,7 @@ import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:html/parser.dart'; import 'package:html/parser.dart';
import 'package:intl/intl.dart';
import '../UpdatePage.dart'; import '../UpdatePage.dart';
import '../config/size_config.dart'; import '../config/size_config.dart';
@ -330,26 +331,64 @@ class Helpers {
} }
static getBoxTabsBoxDecoration( static getBoxTabsBoxDecoration(
{ {bool isFirst = false,
bool isFirst = false,
bool isMiddle = false, bool isMiddle = false,
bool isLast = false, bool isLast = false,
bool isActive = false, bool isActive = false,
double radius = 6.0 double radius = 6.0, ProjectViewModel projectViewModel}) {
}) { return BoxDecoration(
return BoxDecoration(
color: isActive ? AppGlobal.appRedColor : Color(0xFFEAEAEA), color: isActive ? AppGlobal.appRedColor : Color(0xFFEAEAEA),
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topRight: Radius.circular(isActive?isFirst || isMiddle?radius:0:0), topRight: projectViewModel.isArabic?Radius.circular(isActive
bottomRight: Radius.circular(isActive?isFirst || isMiddle?radius:0:0), ? isLast || isMiddle
topLeft: Radius.circular(isActive?isLast|| isMiddle?radius:0:0), ? radius
bottomLeft: Radius.circular(isActive?isLast || isMiddle?radius:0:0) : 0
), : 0):Radius.circular(isActive
? isFirst || isMiddle
? radius
: 0
: 0),
topLeft: projectViewModel.isArabic? Radius.circular(isActive
? isFirst || isMiddle
? radius
: 0
: 0):Radius.circular(isActive
? isLast || isMiddle
? radius
: 0
: 0),
bottomRight: projectViewModel.isArabic? Radius.circular(isActive
? isLast || isMiddle
? radius
: 0
: 0): Radius.circular(isActive
? isFirst || isMiddle
? radius
: 0
: 0),
bottomLeft:projectViewModel.isArabic? Radius.circular(isActive
? isFirst || isMiddle
? radius
: 0
: 0): Radius.circular(isActive
? isLast || isMiddle
? radius
: 0
: 0)),
); );
} }
static getTabText({String title, bool isActive = false,}){ static getBgTabColor() {
return Color(0xFFEAEAEA);
}
static getTabText({
String title,
bool isActive = false,
}) {
return AppText( return AppText(
title, title,
fontSize: SizeConfig.textMultiplier * 1.8, fontSize: SizeConfig.textMultiplier * 1.8,
@ -357,16 +396,14 @@ class Helpers {
letterSpacing: -0.48, letterSpacing: -0.48,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
); );
} }
static getTabHeight(BuildContext context) {
static getTabHeight(BuildContext context){
final screenSize = MediaQuery.of(context).size; final screenSize = MediaQuery.of(context).size;
return screenSize.height * 0.07; return screenSize.height * 0.07;
} }
static getTabCounter({bool isActive: false,int counter}){ static getTabCounter({bool isActive: false, int counter}) {
return Container( return Container(
margin: EdgeInsets.all(4), margin: EdgeInsets.all(4),
width: 15, width: 15,
@ -388,5 +425,30 @@ class Helpers {
); );
} }
static String convertToTitleCase(String text) {
if (text == null) {
return null;
}
if (text.length <= 1) {
return text.toUpperCase();
}
// Split string into multiple words
final List<String> words = text.split(' ');
// Capitalize first letter of each words
final capitalizedWords = words.map((word) {
if (word.trim().isNotEmpty) {
final String firstLetter = word.trim().substring(0, 1).toUpperCase();
final String remainingLetters = word.trim().substring(1).toLowerCase();
return '$firstLetter$remainingLetters';
}
return '';
});
// Join/Merge all words back to one String
return capitalizedWords.join(' ');
}
} }

@ -1,6 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/auth_method_types.dart'; import 'package:doctor_app_flutter/core/enum/auth_method_types.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
@ -9,6 +8,7 @@ import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class SMSOTP { class SMSOTP {
final AuthMethodTypes type; final AuthMethodTypes type;
final mobileNo; final mobileNo;
@ -48,231 +48,307 @@ class SMSOTP {
String displayTime = ''; String displayTime = '';
bool isClosed = false; bool isClosed = false;
displayDialog(BuildContext context) async { displayDialog(BuildContext context) async {
double dialogWidth = MediaQuery.of(context).size.width * 0.90;
double dialogInputWidth = (dialogWidth / 4) -
(SizeConfig.isWidthLarge
? SizeConfig.getWidthMultiplier(width: dialogWidth) * 4.5
: 20);
double dialogHeight = SizeConfig.isHeightVeryShort
? MediaQuery.of(context).size.height * 0.50
: MediaQuery.of(context).size.height * 0.40;
return showDialog( return showDialog(
context: context, context: context,
barrierColor: Colors.black.withOpacity(0.7), builder: (ctx) => Center(
builder: (context) { child: Container(
projectProvider = Provider.of(context); color: Colors.white,
return AlertDialog( height: dialogHeight,
contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 0.0, 24.0), width: dialogWidth,
content: StatefulBuilder(builder: (context, setState) { child: Material(
if (displayTime == '') { color: Colors.white,
startTimer(setState); child: SingleChildScrollView(
} child: Center(
return Container( child: Container(
color: Colors.white, color: Colors.white,
height: MediaQuery.of(context).size.height * 0.50, child: StatefulBuilder(builder: (context, setState) {
width: MediaQuery.of(context).size.width * 0.84, if (displayTime == '') {
child: Center( startTimer(setState);
child: SingleChildScrollView( }
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, return Center(
children: <Widget>[ child: FractionallySizedBox(
Padding( widthFactor: 0.9,
padding: EdgeInsets.all(13), child: Column(
child: Row( crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <Widget>[
children: [ SizedBox(
type == AuthMethodTypes.SMS height: SizeConfig.getHeightMultiplier(
? Padding( height: dialogHeight) *
child: Icon( 2,
DoctorApp.verify_sms_1, ),
size: 50,
),
padding: EdgeInsets.only(bottom: 20),
)
: Padding(
child: Icon(
DoctorApp.verify_whtsapp,
size: 50,
),
padding: EdgeInsets.only(bottom: 20),
),
Row( Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment:
children: <Widget>[ MainAxisAlignment.spaceBetween,
Padding( children: [
padding: EdgeInsets.only( Icon(
left: 10, right: 10, bottom: 20), type == AuthMethodTypes.SMS
child: IconButton( ? DoctorApp.verify_sms_1
icon: Icon(Icons.close), : DoctorApp.verify_whtsapp,
iconSize: 40, size: SizeConfig.getHeightMultiplier(
onPressed: () { height: dialogHeight) *
this.isClosed = true; 9,
Navigator.pop(context); color: Color(0xFF2B353E),
this.onFailure(); ),
}, Row(
)) mainAxisAlignment: MainAxisAlignment.end,
], children: <Widget>[
) IconButton(
])), icon: Icon(Icons.close),
Padding( color: Color(0xFF2B353E),
padding: EdgeInsets.only(top: 5, right: 5), iconSize:
child: AppText( SizeConfig.getHeightMultiplier(
TranslationBase.of(context).verificationMessage + height: dialogHeight) *
' XXXXXX' + 15,
mobileNo onPressed: () {
.toString() this.isClosed = true;
.substring(mobileNo.toString().length - 3), Navigator.pop(context);
textAlign: TextAlign.start, this.onFailure();
fontWeight: FontWeight.bold, },
fontSize: 14, )
maxLines: 2, ],
)), )
Form( ]),
key: verifyAccountForm, SizedBox(
child: Padding( height: SizeConfig.getHeightMultiplier(
padding: EdgeInsets.only(top: 20), height: dialogHeight) *
child: Directionality( (SizeConfig.isHeightVeryShort ? 10 : 5),
textDirection: TextDirection.ltr, ),
child: Row( Padding(
mainAxisAlignment: MainAxisAlignment.start, padding: EdgeInsets.only(top: 5, right: 5),
children: <Widget>[ child: AppText(
Container( TranslationBase.of(context)
width: SizeConfig.realScreenWidth * 0.16, .verificationMessage +
margin: EdgeInsets.all(5), ' XXXXXX' +
child: TextFormField( mobileNo.toString().substring(
textInputAction: TextInputAction.next, mobileNo.toString().length - 3),
style: buildTextStyle(), textAlign: TextAlign.start,
autofocus: true, fontWeight: FontWeight.w700,
maxLength: 1, letterSpacing: -0.48,
controller: digit1, color: Color(0xFF2B353E),
textAlign: TextAlign.center, fontSize: SizeConfig
keyboardType: TextInputType.number, .getTextMultiplierBasedOnWidth(
decoration: buildInputDecoration(context), width: dialogWidth) *
onSaved: (val) {}, 3.5, //14,
validator: validateCodeDigit, maxLines: 2,
onFieldSubmitted: (_) { )),
FocusScope.of(context) Form(
.requestFocus(focusD2); key: verifyAccountForm,
}, child: Padding(
onChanged: (val) { padding: EdgeInsets.only(
if (val.length == 1) { top: SizeConfig.getHeightMultiplier(
FocusScope.of(context) height: dialogHeight) *
.requestFocus(focusD2); 2),
verifyAccountFormValue['digit1'] = child: Directionality(
val.trim(); textDirection: TextDirection.ltr,
checkValue(); child: Row(
} mainAxisAlignment:
}, MainAxisAlignment.start,
), children: <Widget>[
), Container(
Container( width: dialogInputWidth,
width: SizeConfig.realScreenWidth * 0.16, height:
margin: EdgeInsets.all(5), SizeConfig.getHeightMultiplier(
child: TextFormField( height: dialogHeight) *
focusNode: focusD2, 30,
textInputAction: TextInputAction.next, margin: EdgeInsets.symmetric(
maxLength: 1, vertical: 2, horizontal: 5),
controller: digit2, child: TextFormField(
textAlign: TextAlign.center, textInputAction:
style: buildTextStyle(), TextInputAction.next,
keyboardType: TextInputType.number, style: buildTextStyle(),
decoration: buildInputDecoration(context), autofocus: true,
onSaved: (val) {}, maxLength: 1,
onFieldSubmitted: (_) { controller: digit1,
FocusScope.of(context) textAlign: TextAlign.center,
.requestFocus(focusD3); keyboardType:
}, TextInputType.number,
onChanged: (val) { decoration:
if (val.length == 1) { buildInputDecoration(context),
FocusScope.of(context) onSaved: (val) {},
.requestFocus(focusD3); validator: validateCodeDigit,
verifyAccountFormValue['digit2'] = onFieldSubmitted: (_) {
val.trim(); FocusScope.of(context)
checkValue(); .requestFocus(focusD2);
} },
}, onChanged: (val) {
validator: validateCodeDigit), if (val.length == 1) {
FocusScope.of(context)
.requestFocus(focusD2);
verifyAccountFormValue[
'digit1'] = val.trim();
checkValue();
}
},
),
),
Container(
width: dialogInputWidth,
height:
SizeConfig.getHeightMultiplier(
height: dialogHeight) *
30,
margin: EdgeInsets.symmetric(
vertical: 2, horizontal: 5),
child: TextFormField(
focusNode: focusD2,
textInputAction:
TextInputAction.next,
maxLength: 1,
controller: digit2,
textAlign: TextAlign.center,
style: buildTextStyle(),
keyboardType:
TextInputType.number,
decoration:
buildInputDecoration(
context),
onSaved: (val) {},
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD3);
},
onChanged: (val) {
if (val.length == 1) {
FocusScope.of(context)
.requestFocus(focusD3);
verifyAccountFormValue[
'digit2'] = val.trim();
checkValue();
}
},
validator: validateCodeDigit),
),
Container(
margin: EdgeInsets.symmetric(
vertical: 2, horizontal: 5),
width: dialogInputWidth,
height: SizeConfig
.getHeightMultiplier(
height:
dialogHeight) *
30,
child: TextFormField(
focusNode: focusD3,
textInputAction:
TextInputAction.next,
maxLength: 1,
controller: digit3,
textAlign: TextAlign.center,
style: buildTextStyle(),
keyboardType:
TextInputType.number,
decoration:
buildInputDecoration(
context),
onSaved: (val) {},
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD4);
},
onChanged: (val) {
if (val.length == 1) {
FocusScope.of(context)
.requestFocus(
focusD4);
verifyAccountFormValue[
'digit3'] =
val.trim();
checkValue();
}
},
validator:
validateCodeDigit)),
Container(
margin: EdgeInsets.symmetric(
vertical: 2, horizontal: 5),
width: dialogInputWidth,
height: SizeConfig
.getHeightMultiplier(
height:
dialogHeight) *
30,
child: TextFormField(
focusNode: focusD4,
maxLength: 1,
textAlign: TextAlign.center,
style: buildTextStyle(),
controller: digit4,
keyboardType:
TextInputType.number,
decoration:
buildInputDecoration(
context),
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD4);
},
onChanged: (val) {
if (val.length == 1) {
verifyAccountFormValue[
'digit4'] =
val.trim();
checkValue();
}
},
validator:
validateCodeDigit)),
],
)),
), ),
Container( ),
margin: EdgeInsets.all(5), Column(
width: SizeConfig.realScreenWidth * 0.16, mainAxisAlignment: MainAxisAlignment.start,
child: TextFormField( crossAxisAlignment: CrossAxisAlignment.start,
focusNode: focusD3, children: [
textInputAction: TextInputAction.next, AppText(
maxLength: 1, TranslationBase.of(context)
controller: digit3, .validationMessage +
textAlign: TextAlign.center, ' ',
style: buildTextStyle(), textAlign: TextAlign.start,
keyboardType: TextInputType.number, fontWeight: FontWeight.w700,
decoration: letterSpacing: -0.48,
buildInputDecoration(context), color: Color(0xFF2B353E),
onSaved: (val) {}, fontSize: SizeConfig
onFieldSubmitted: (_) { .getTextMultiplierBasedOnWidth(
FocusScope.of(context) width: dialogWidth) *
.requestFocus(focusD4); 3.5,
}, ),
onChanged: (val) { AppText(
if (val.length == 1) { displayTime,
FocusScope.of(context) color: Colors.red,
.requestFocus(focusD4); textAlign: TextAlign.start,
verifyAccountFormValue['digit3'] = fontWeight: FontWeight.bold,
val.trim(); fontSize: SizeConfig
checkValue(); .getTextMultiplierBasedOnWidth(
} width: dialogWidth) *
}, 3.5,
validator: validateCodeDigit)), )
Container( ])
margin: EdgeInsets.all(5), ],
width: SizeConfig.realScreenWidth * 0.16, ),
child: TextFormField( ),
focusNode: focusD4, );
maxLength: 1, })),
textAlign: TextAlign.center, ),
style: buildTextStyle(), ),
controller: digit4, ),
keyboardType: TextInputType.number, ),
decoration: ),
buildInputDecoration(context), );
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD4);
},
onChanged: (val) {
if (val.length == 1) {
verifyAccountFormValue['digit4'] =
val.trim();
checkValue();
}
},
validator: validateCodeDigit)),
],
)),
),
),
Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
TranslationBase.of(context).validationMessage +
' ',
fontWeight: FontWeight.w600,
fontSize: 14,
),
AppText(
displayTime,
color: Colors.red,
textAlign: TextAlign.start,
fontWeight: FontWeight.bold,
fontSize: 14,
)
]),
)
],
))),
);
}),
);
});
} }
TextStyle buildTextStyle() { TextStyle buildTextStyle() {
return TextStyle( return TextStyle(
fontSize: SizeConfig.textMultiplier * 3, fontSize: SizeConfig.textMultiplier * 2.5,
); );
} }
@ -316,7 +392,6 @@ class SMSOTP {
digit3.text.toString() + digit3.text.toString() +
digit4.text.toString()); digit4.text.toString());
this.isClosed = true; this.isClosed = true;
} }
} }
@ -341,7 +416,7 @@ class SMSOTP {
displayTime = this.getSecondsAsDigitalClock(this.remainingTime); displayTime = this.getSecondsAsDigitalClock(this.remainingTime);
}); });
Future.delayed(Duration(seconds: 1), () { Future.delayed(Duration(seconds: 1), () {
if (this.remainingTime > 0) { if (this.remainingTime > 0) {
if (isClosed == false) { if (isClosed == false) {
startTimer(setState); startTimer(setState);

@ -62,7 +62,7 @@ class PatientCard extends StatelessWidget {
decoration: Helpers.getCardBoxDecoration(), decoration: Helpers.getCardBoxDecoration(),
child: CardWithBgWidget( child: CardWithBgWidget(
padding: 0, padding: 0,
marginLeft: (!isMyPatient && isInpatient) ||isFromLiveCare ? 0 : 10, marginLeft: (!isMyPatient && isInpatient) || isFromLiveCare ? 0 : 10,
marginSymmetric: isFromSearch ? 10 : 0.0, marginSymmetric: isFromSearch ? 10 : 0.0,
hasBorder: false, hasBorder: false,
bgColor: isFromLiveCare bgColor: isFromLiveCare
@ -95,6 +95,7 @@ class PatientCard extends StatelessWidget {
padding: EdgeInsets.only(left: 12.0), padding: EdgeInsets.only(left: 12.0),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
patientInfo.patientStatusType == 43 patientInfo.patientStatusType == 43
? Row( ? Row(
@ -207,56 +208,31 @@ class PatientCard extends StatelessWidget {
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
) )
: patientInfo.arrivedOn != null : patientInfo.arrivedOn != null
? Column( ? Container(
crossAxisAlignment: padding: EdgeInsets.only(right: 9),
CrossAxisAlignment.end,
children: [ child: AppText(
AppText( "${AppDateUtils.getStartTime(patientInfo.startTime)}",
AppDateUtils fontFamily: 'Poppins',
.getDayMonthYearDateFormatted( fontWeight: FontWeight.w600,
AppDateUtils fontSize: 11,
.convertStringToDate( letterSpacing: -0.64,
patientInfo.arrivedOn, ),
), )
isMonthShort: true,
),
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
fontSize: 15,
),
AppText(
"${AppDateUtils.getStartTime(patientInfo.startTime)}",
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
fontSize: 15,
),
],
)
: (patientInfo.appointmentDate != : (patientInfo.appointmentDate !=
null && null &&
patientInfo patientInfo
.appointmentDate.isNotEmpty) .appointmentDate.isNotEmpty)
? Column( ? Container(
crossAxisAlignment: padding: EdgeInsets.only(right: 9),
CrossAxisAlignment.end, child: AppText(
children: [ " ${AppDateUtils.getStartTime(patientInfo.startTime)}",
AppText( fontFamily: 'Poppins',
"${AppDateUtils.getDayMonthYearDateFormatted(AppDateUtils.convertStringToDate( fontWeight: FontWeight.w600,
patientInfo fontSize: 11,
.appointmentDate, letterSpacing: -0.64,
), isMonthShort: true)}", ),
fontFamily: 'Poppins', )
fontWeight: FontWeight.w400,
fontSize: 15,
),
AppText(
" ${AppDateUtils.getStartTime(patientInfo.startTime)}",
fontFamily: 'Poppins',
fontWeight: FontWeight.w400,
fontSize: 15,
),
],
)
: SizedBox() : SizedBox()
], ],
)) ))
@ -301,16 +277,18 @@ class PatientCard extends StatelessWidget {
textOverflow: TextOverflow.ellipsis, textOverflow: TextOverflow.ellipsis,
), ),
if (patientInfo.gender == 1) if (patientInfo.gender == 1)
Icon( Container(
DoctorApp.male_2, padding: EdgeInsets.symmetric(
color: Colors.blue, horizontal: 4, vertical: 2),
size: 18, child: SvgPicture.asset(
"assets/images/svgs/male.svg"),
) )
else else
Icon( Container(
DoctorApp.female_1, padding: EdgeInsets.symmetric(
color: Colors.pink, horizontal: 4, vertical: 2),
size: 18, child: SvgPicture.asset(
"assets/images/svgs/female.svg"),
), ),
if (isFromLiveCare) if (isFromLiveCare)
ShowTimer( ShowTimer(
@ -318,49 +296,54 @@ class PatientCard extends StatelessWidget {
), ),
]), ]),
), ),
if(nationalityName.isNotEmpty) if (nationalityName.isNotEmpty)
Expanded( Expanded(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Expanded( Expanded(
child: Container( child: Container(
padding: EdgeInsets.only(top: 8), padding: EdgeInsets.only(top: 5),
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
child: AppText( child: AppText(
nationalityName.truncate(14), nationalityName.truncate(14),
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 10, fontSize: 10,
color: Color(0xFF2E303A), color: Color(0xFF2E303A),
textOverflow: TextOverflow.ellipsis, textOverflow: TextOverflow.ellipsis,
),
), ),
), ),
), patientInfo.nationality != null ||
patientInfo.nationality != null || patientInfo.nationalityId != null
patientInfo.nationalityId != null ? Container(
? ClipRRect( padding: EdgeInsets.only(
borderRadius: right: 7, top: 5),
BorderRadius.circular(20.0), child: ClipRRect(
child: CachedNetworkImage( borderRadius:
imageUrl: patientInfo BorderRadius.circular(20.0),
.nationalityFlagURL != child: CachedNetworkImage(
null imageUrl: patientInfo
? patientInfo.nationalityFlagURL .nationalityFlagURL !=
: '', null
height: 16, ? patientInfo
width: 22, .nationalityFlagURL
errorWidget: : '',
(context, url, error) => height: 16,
AppText( width: 22,
'No Image', errorWidget:
fontSize: 10, (context, url, error) =>
), AppText(
)) 'No Image',
: SizedBox() fontSize: 10,
], ),
), )),
) )
: SizedBox()
],
),
)
], ],
)), )),
SizedBox( SizedBox(
@ -374,10 +357,11 @@ class PatientCard extends StatelessWidget {
child: Container( child: Container(
width: 60, width: 60,
height: 60, height: 60,
child: Image.asset( //TODO Elham* create widget for this to make it use every where
child: SvgPicture.asset(
patientInfo.gender == 1 patientInfo.gender == 1
? 'assets/images/male_avatar.png' ? 'assets/images/svgs/male avatar.svg'
: 'assets/images/female_avatar.png', : 'assets/images/svgs/female avatar.svg',
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
@ -406,6 +390,69 @@ class PatientCard extends StatelessWidget {
value: value:
"${AppDateUtils.getAgeByBirthday(patientInfo.dateofBirth, context, isServerFormat: !isFromLiveCare)}", "${AppDateUtils.getAgeByBirthday(patientInfo.dateofBirth, context, isServerFormat: !isFromLiveCare)}",
), ),
patientInfo.arrivedOn != null
? Column(
crossAxisAlignment:
CrossAxisAlignment.end,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
// AppText(
// AppDateUtils
// .getDayMonthYearDateFormatted(
// AppDateUtils
// .convertStringToDate(
// patientInfo.arrivedOn,
// ),
// isMonthShort: true,
// ),
// fontFamily: 'Poppins',
// fontWeight: FontWeight.w600,
// fontSize: 11,
// letterSpacing: -0.64,
// ),
CustomRow(
label: TranslationBase.of(
context)
.arrivedP +
" : ",
value: AppDateUtils
.getDayMonthYearDateFormatted(
AppDateUtils
.convertStringToDate(
patientInfo.arrivedOn,
),
isMonthShort: true,
),
),
],
)
: (patientInfo.appointmentDate !=
null &&
patientInfo.appointmentDate
.isNotEmpty)
? Column(
crossAxisAlignment:
CrossAxisAlignment.end,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
CustomRow(
label: TranslationBase.of(
context)
.appointmentDate +
" : ",
value: "${AppDateUtils.getDayMonthYearDateFormatted(AppDateUtils.convertStringToDate(
patientInfo
.appointmentDate,
), isMonthShort: true)}",
),
],
)
: SizedBox(),
if (isInpatient) if (isInpatient)
CustomRow( CustomRow(
label: label:
@ -455,9 +502,12 @@ class PatientCard extends StatelessWidget {
), ),
]), ]),
), ),
Icon( Padding(
Icons.arrow_forward, padding: const EdgeInsets.only(right: 8),
size: 24, child: Icon(
Icons.arrow_forward,
size: 24,
),
), ),
], ],
)) ))
@ -467,7 +517,8 @@ class PatientCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
Container( Container(
padding: EdgeInsets.all(4), padding: EdgeInsets.only(
left: 9, right: 9, bottom: 9),
child: SvgPicture.asset( child: SvgPicture.asset(
'assets/images/svgs/profile_screen/livecare.svg', 'assets/images/svgs/profile_screen/livecare.svg',
height: 20, height: 20,
@ -479,9 +530,11 @@ class PatientCard extends StatelessWidget {
: !isInpatient && !isFromSearch : !isInpatient && !isFromSearch
? Row( ? Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: EdgeInsets.all(4), padding: EdgeInsets.only(
left: 9, right: 9, bottom: 9),
child: SvgPicture.asset( child: SvgPicture.asset(
patientInfo.appointmentType == patientInfo.appointmentType ==
'Regular' && 'Regular' &&
@ -498,11 +551,16 @@ class PatientCard extends StatelessWidget {
: (isInpatient == true) : (isInpatient == true)
? Row( ? Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: EdgeInsets.all(4), padding: EdgeInsets.only(
child: Image.asset( left: 9,
'assets/images/inpatient.png', right: 9,
bottom: 9),
child: SvgPicture.asset(
'assets/images/svgs/inpatient.svg',
height: 25, height: 25,
width: 35, width: 35,
)), )),

@ -81,7 +81,7 @@ class BottomNavigationItem extends StatelessWidget {
child: AppText(name ?? "", child: AppText(name ?? "",
textAlign: TextAlign.center, textAlign: TextAlign.center,
fontSize: fontSize:
SizeConfig.getTextMultiplierBasedOnWidth() * 2, SizeConfig.getTextMultiplierBasedOnWidth() * 2.5,
letterSpacing: -0.24, letterSpacing: -0.24,
color: AppGlobal.appTextColor, color: AppGlobal.appTextColor,
fontWeight: FontWeight.w600) //#989898, fontWeight: FontWeight.w600) //#989898,

@ -32,7 +32,7 @@ class AppButton extends StatefulWidget {
this.iconData, this.iconData,
this.icon, this.icon,
this.color, this.color,
this.fontSize = 2, this.fontSize = 16,
this.padding = 13, this.padding = 13,
this.loading = false, this.loading = false,
this.disabled = false, this.disabled = false,
@ -107,7 +107,7 @@ class _AppButtonState extends State<AppButton> {
child: AppText( child: AppText(
widget.title, widget.title,
color: widget.fontColor, color: widget.fontColor,
fontSize: 16.0, fontSize: widget.fontSize,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
letterSpacing: -0.48, letterSpacing: -0.48,
), ),

@ -71,7 +71,7 @@ class CardWithBgWidget extends StatelessWidget {
), ),
Container( Container(
padding: EdgeInsets.all(padding), padding: EdgeInsets.all(padding),
margin: EdgeInsets.only(left: marginLeft), margin: EdgeInsets.only(left: !projectProvider.isArabic?marginLeft:0, right:projectProvider.isArabic?marginLeft:0 ),
child: widget) child: widget)
], ],
), ),

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import '../app_texts_widget.dart'; import '../app_texts_widget.dart';
@ -18,7 +19,7 @@ class ErrorMessage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
SizedBox(height: 100,), SizedBox(height: 100,),
Image.asset('assets/images/no-data.png'), SvgPicture.asset('assets/images/svgs/no data.svg'),
Center( Center(
child: Center( child: Center(
child: Padding( child: Padding(

File diff suppressed because it is too large Load Diff

@ -130,6 +130,7 @@ flutter:
- assets/images/ - assets/images/
- assets/images/dashboard/ - assets/images/dashboard/
- assets/images/login/ - assets/images/login/
- assets/images/svgs/
- assets/images/svgs/verification/ - assets/images/svgs/verification/
- assets/images/svgs/profile_screen/ - assets/images/svgs/profile_screen/
- assets/images/svgs/bottom_nav/ - assets/images/svgs/bottom_nav/

Loading…
Cancel
Save