Merge remote-tracking branch 'origin/export_module_ui_ux_enhancement' into export_module_ui_ux_enhancement

# Conflicts:
#	lib/modules/cm_module/cm_detail_page.dart
main_production_RSG
WaseemAbbasi22 2 months ago
commit b963dc65bc

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.8996 1.84591C14.4435 1.50576 13.9124 1.33331 13.3473 1.28277C13.0006 1.25176 12.5848 1.2513 12.1233 1.2508C12.0826 1.25075 12.0415 1.25071 12 1.25064C11.9584 1.25057 11.9168 1.25046 11.8752 1.25035C11.4799 1.24931 11.0835 1.24826 10.6899 1.28409C10.1121 1.33669 9.57032 1.51626 9.10861 1.87046C8.76721 2.13237 8.53387 2.45207 8.33676 2.79754C8.15403 3.11782 7.97212 3.51696 7.76556 3.97016L7.41008 4.75L3 4.7507C2.44772 4.7507 2 5.19842 2 5.7507C2 6.30299 2.44772 6.7507 3 6.7507H3.86958L4.40122 15.6453C4.47623 16.9003 4.53574 17.8962 4.65957 18.6917C4.78656 19.5075 4.99073 20.1869 5.40028 20.7813C5.77494 21.3251 6.25763 21.7841 6.8176 22.129C7.42972 22.5061 8.1135 22.671 8.92739 22.7499L15.0531 22.75C15.8661 22.6713 16.5491 22.5067 17.1608 22.1303C17.7204 21.786 18.2029 21.3278 18.5777 20.7849C18.9874 20.1915 19.1922 19.5131 19.3202 18.6984C19.4449 17.9041 19.5058 16.9096 19.5825 15.6564L20.1275 6.7507H21C21.5523 6.7507 22 6.30299 22 5.7507C22 5.19842 21.5523 4.7507 21 4.7507L16.6819 4.75L16.2555 3.8704C16.0437 3.4333 15.8569 3.04798 15.6714 2.73893C15.4712 2.40542 15.2369 2.09748 14.8996 1.84591ZM14.4593 4.75C14.2329 4.28301 14.0879 3.98696 13.9566 3.7682C13.7643 3.44787 13.5339 3.30745 13.1691 3.27482C12.9098 3.25163 12.5719 3.2507 12.0345 3.2507C11.4837 3.2507 11.137 3.25166 10.8712 3.27585C10.4971 3.30991 10.2639 3.45568 10.0739 3.78866C9.94948 4.00676 9.81401 4.29867 9.60808 4.75H14.4593ZM9 11.5664C8.58579 11.5664 8.25 11.9022 8.25 12.3164C8.25 12.7306 8.58579 13.0664 9 13.0664H15C15.4142 13.0664 15.75 12.7306 15.75 12.3164C15.75 11.9022 15.4142 11.5664 15 11.5664H9ZM9.75 16.2344C9.75 15.8202 10.0858 15.4844 10.5 15.4844H13.5C13.9142 15.4844 14.25 15.8202 14.25 16.2344C14.25 16.6486 13.9142 16.9844 13.5 16.9844H10.5C10.0858 16.9844 9.75 16.6486 9.75 16.2344Z" fill="#F63939"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -1,5 +1,5 @@
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.9989 13.3512C11.7971 13.5528 11.5477 13.7069 11.2775 13.797L8.66721 14.6671C8.47883 14.7299 8.28236 14.7618 8.0836 14.7618C7.59055 14.7618 7.12704 14.5699 6.77844 14.2212C6.28088 13.7235 6.11009 12.9999 6.3326 12.3324L7.20271 9.72226C7.29274 9.45193 7.44696 9.20239 7.64855 9.0008L13.2863 3.36304H2.25586C1.01198 3.36304 0 4.37502 0 5.6189V18.7439C0 19.9878 1.01198 20.9997 2.25586 20.9997H15.3809C16.6247 20.9997 17.6367 19.9878 17.6367 18.7439V7.7134L11.9989 13.3512Z" fill="#3B3D4A"/> <path d="M12 2.25H11.9278C9.92082 2.24998 8.31557 2.24996 7.0558 2.41933C5.75291 2.5945 4.67453 2.96676 3.82064 3.82064C2.96676 4.67453 2.5945 5.75291 2.41933 7.0558C2.24996 8.31557 2.24998 9.92081 2.25 11.9278V12.0722C2.24998 14.0792 2.24996 15.6844 2.41933 16.9442C2.5945 18.2471 2.96676 19.3255 3.82064 20.1794C4.67453 21.0332 5.75291 21.4055 7.0558 21.5807C8.31558 21.75 9.92083 21.75 11.9278 21.75H12.0722C14.0792 21.75 15.6844 21.75 16.9442 21.5807C18.2471 21.4055 19.3255 21.0332 20.1794 20.1794C21.0332 19.3255 21.4055 18.2471 21.5807 16.9442C21.75 15.6844 21.75 14.0792 21.75 12.0722V12C21.75 11.4615 21.3135 11.025 20.775 11.025C20.2365 11.025 19.8 11.4615 19.8 12C19.8 14.0959 19.7979 15.5697 19.6481 16.6844C19.502 17.771 19.2317 18.3693 18.8005 18.8005C18.3693 19.2317 17.771 19.502 16.6844 19.6481C15.5697 19.7979 14.0959 19.8 12 19.8C9.90415 19.8 8.43035 19.7979 7.31564 19.6481C6.22898 19.502 5.63068 19.2317 5.1995 18.8005C4.76831 18.3693 4.49804 17.771 4.35194 16.6844C4.20207 15.5697 4.2 14.0959 4.2 12C4.2 9.90415 4.20207 8.43035 4.35194 7.31564C4.49804 6.22898 4.76831 5.63068 5.1995 5.1995C5.63068 4.76831 6.22898 4.49804 7.31564 4.35194C8.43035 4.20207 9.90415 4.2 12 4.2C12.5385 4.2 12.975 3.76348 12.975 3.225C12.975 2.68652 12.5385 2.25 12 2.25Z" fill="#5A5E79"/>
<path d="M8.51856 9.87099C8.45101 9.93854 8.40015 10.0209 8.36996 10.1115L7.49986 12.7217C7.42615 12.9427 7.4837 13.1864 7.64846 13.3512C7.81326 13.516 8.05697 13.5736 8.27805 13.4998L10.8883 12.6298C10.9789 12.5996 11.0612 12.5487 11.1288 12.4812L18.8144 4.79556L16.2042 2.18536L8.51856 9.87099Z" fill="#3B3D4A"/> <path d="M17.0855 3.0503C18.1526 1.98323 19.8827 1.98323 20.9497 3.0503C22.0168 4.11736 22.0168 5.84742 20.9497 6.91448L20.078 7.78615L16.2139 3.92188L17.0855 3.0503Z" fill="#5A5E79"/>
<path d="M19.5394 0.300082C19.139 -0.100353 18.4897 -0.100353 18.0893 0.300082L17.0742 1.31518L19.6845 3.92541L20.6995 2.91032C21.1 2.50988 21.1 1.86064 20.6995 1.46021L19.5394 0.300082Z" fill="#3B3D4A"/> <path d="M15.1533 4.98254L19.0174 8.84682L14.2337 13.6306C13.2653 14.5992 12.6734 15.1912 11.9448 15.5983C11.5383 15.8255 10.9218 16.0239 10.291 16.1994C9.64198 16.38 8.89524 16.5578 8.18242 16.7275L8.17373 16.7296C7.92037 16.7899 7.65385 16.7145 7.46969 16.5303C7.28552 16.3462 7.21009 16.0796 7.27041 15.8263L7.27249 15.8175C7.44221 15.1047 7.62 14.358 7.8006 13.709C7.97615 13.0782 8.17455 12.4617 8.40167 12.0553C8.80884 11.3266 9.40083 10.7348 10.3694 9.76639L15.1533 4.98254Z" fill="#5A5E79"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.24805 1.25C8.28155 1.25 7.49805 2.0335 7.49805 3C7.49805 3.9665 8.28155 4.75 9.24805 4.75H14.748C15.7145 4.75 16.498 3.9665 16.498 3C16.498 2.0335 15.7145 1.25 14.748 1.25H9.24805Z" fill="#EAF1F4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.24805 3.00113C6.24805 2.9125 6.17214 2.84079 6.08434 2.8529C5.18423 2.97705 4.43657 3.24236 3.84615 3.83332C3.24436 4.43567 2.98555 5.19403 2.86456 6.09477C2.74802 6.96243 2.74803 8.06571 2.74805 9.43462V16.0504C2.74803 17.4193 2.74802 18.5226 2.86456 19.3903C2.98555 20.291 3.24436 21.0494 3.84615 21.6517C4.44804 22.2542 5.20597 22.5133 6.10621 22.6345C6.97322 22.7512 8.07557 22.7511 9.44311 22.7511L14.553 22.7511C15.9205 22.7512 17.0229 22.7512 17.8899 22.6345C18.7901 22.5133 19.5481 22.2542 20.1499 21.6517C20.7517 21.0494 21.0105 20.291 21.1315 19.3903C21.2481 18.5226 21.2481 17.4193 21.2481 16.0503V9.43469C21.2481 8.06574 21.2481 6.96246 21.1315 6.09477C21.0105 5.19403 20.7517 4.43567 20.1499 3.83332C19.5595 3.24236 18.8119 2.97705 17.9118 2.8529C17.824 2.84079 17.748 2.9125 17.748 3.00113C17.748 4.65798 16.4049 6.00113 14.748 6.00113H9.24805C7.5912 6.00113 6.24805 4.65798 6.24805 3.00113ZM13.502 10.25C13.0877 10.25 12.752 10.5858 12.752 11C12.752 11.4142 13.0877 11.75 13.502 11.75H17.002C17.4162 11.75 17.752 11.4142 17.752 11C17.752 10.5858 17.4162 10.25 17.002 10.25H13.502ZM11.7089 9.74982C11.8472 10.1403 11.6428 10.5689 11.2523 10.7072C11.0286 10.7864 10.7482 10.9666 10.4321 11.2438C10.1238 11.5142 9.8204 11.8422 9.54846 12.1681C9.27796 12.4924 9.04771 12.8036 8.8849 13.0343C8.80376 13.1492 8.67806 13.3377 8.63517 13.4021C8.4902 13.6302 8.23349 13.763 7.9636 13.7492C7.69365 13.7354 7.45202 13.5774 7.33113 13.3356C7.12562 12.9246 6.95413 12.7864 6.89843 12.7492L6.89162 12.7448L6.88583 12.7413C6.52676 12.6855 6.25195 12.3749 6.25195 12.0002C6.25195 11.586 6.58774 11.2502 7.00195 11.2502C7.13834 11.2502 7.22723 11.2756 7.29076 11.2938L7.29393 11.2947C7.42249 11.3314 7.57155 11.3952 7.73048 11.5012C7.81819 11.5596 7.9066 11.6294 7.9948 11.7119C8.11549 11.5534 8.25048 11.3825 8.39663 11.2073C8.69822 10.8457 9.05657 10.455 9.4431 10.116C9.82187 9.78384 10.2694 9.46399 10.7516 9.29323C11.142 9.15495 11.5706 9.35937 11.7089 9.74982ZM13.502 16.25C13.0877 16.25 12.752 16.5858 12.752 17C12.752 17.4142 13.0877 17.75 13.502 17.75H17.002C17.4162 17.75 17.752 17.4142 17.752 17C17.752 16.5858 17.4162 16.25 17.002 16.25H13.502ZM7.00195 17C7.00195 16.4477 7.44967 16 8.00195 16H9.00195C9.55424 16 10.002 16.4477 10.002 17C10.002 17.5523 9.55424 18 9.00195 18H8.00195C7.44967 18 7.00195 17.5523 7.00195 17Z" fill="#EAF1F4"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.362 2.015C11.4264 1.66167 12.5736 1.66167 13.638 2.015C14.6981 2.36687 15.5304 3.20141 16.3665 4.37395C17.1999 5.5426 18.1208 7.17206 19.3078 9.2725L19.3544 9.35496C20.5417 11.4557 21.4625 13.0851 22.0364 14.4065C22.613 15.7343 22.9002 16.8807 22.6711 17.9821C22.4403 19.0911 21.8714 20.0995 21.0428 20.8617C20.2162 21.622 19.0907 21.9428 17.6736 22.0968C16.2645 22.25 14.4212 22.25 12.0488 22.25H11.9513C9.57882 22.25 7.73554 22.25 6.32642 22.0968C4.90927 21.9428 3.78379 21.622 2.95722 20.8617C2.12862 20.0995 1.55968 19.0911 1.32895 17.9821C1.0998 16.8807 1.387 15.7343 1.96365 14.4065C2.53752 13.0851 3.45835 11.4557 4.64558 9.35495L4.69218 9.2725C5.87921 7.17207 6.80008 5.5426 7.63347 4.37395C8.46963 3.20141 9.30194 2.36687 10.362 2.015ZM11 17C11 16.4477 11.4457 16 11.9955 16H12.0045C12.5543 16 13 16.4477 13 17C13 17.5523 12.5543 18 12.0045 18H11.9955C11.4457 18 11 17.5523 11 17ZM11 13C11 13.5523 11.4477 14 12 14C12.5523 14 13 13.5523 13 13V9C13 8.44772 12.5523 8 12 8C11.4477 8 11 8.44772 11 9V13Z" fill="#EAF1F4"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.2012 1.35564C15.2901 1.45681 15.271 1.61164 15.2327 1.92129L15.1754 2.38553C15.0739 2.99419 15.0072 3.38447 14.9221 3.67053C14.8421 3.93895 14.7707 4.02428 14.7141 4.07226C14.6575 4.12025 14.5616 4.17665 14.2836 4.21134C13.9849 4.24864 13.5848 4.25 12.9586 4.25H11.0414C10.4153 4.25 10.0151 4.24864 9.71638 4.21134C9.43847 4.17665 9.34256 4.12025 9.28592 4.07226C9.22928 4.02428 9.15788 3.93895 9.07797 3.67053C8.99291 3.38484 8.92625 2.99518 8.825 2.38786L8.76993 1.91759C8.73385 1.60943 8.71581 1.45536 8.80469 1.3549C8.89358 1.25444 9.04774 1.25359 9.35607 1.25189C9.70036 1.24999 10.0621 1.25 10.4417 1.25H13.5586C13.9392 1.25 14.302 1.24999 14.6471 1.2519C14.9572 1.25362 15.1122 1.25448 15.2012 1.35564Z" fill="#EAF1F4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.25718 1.90006C7.22491 1.62456 7.20878 1.4868 7.10944 1.40966C7.01009 1.33252 6.878 1.3503 6.61383 1.38586L6.55446 1.39405C5.51094 1.54173 4.65468 1.85554 3.98138 2.56428C3.31322 3.26761 3.02208 4.15293 2.88419 5.23259C2.74998 6.28337 2.74999 7.62529 2.75 9.3166V14.6869C2.74999 16.3782 2.74998 17.7202 2.88419 18.7709C3.02208 19.8506 3.31322 20.7359 3.98138 21.4392C4.65468 22.148 5.51094 22.4618 6.55446 22.6095C7.5601 22.7518 8.84129 22.7518 10.4417 22.7518H13.5583C15.1587 22.7518 16.4399 22.7518 17.4455 22.6095C18.4891 22.4618 19.3453 22.148 20.0186 21.4392C20.6868 20.7359 20.9779 19.8506 21.1158 18.7709C21.25 17.7202 21.25 16.3782 21.25 14.6869V9.31665C21.25 7.62531 21.25 6.28338 21.1158 5.23259C20.9779 4.15293 20.6868 3.26761 20.0186 2.56428C19.3453 1.85554 18.4891 1.54173 17.4455 1.39405L17.3903 1.38642C17.1276 1.35093 16.9962 1.33319 16.897 1.40968C16.7978 1.48617 16.7809 1.62309 16.7471 1.89694L16.6619 2.58688L16.6583 2.60861C16.566 3.16257 16.4737 3.71642 16.3594 4.10029C16.2347 4.51935 16.0464 4.91107 15.6834 5.21856C15.3204 5.52605 14.9031 5.64738 14.4692 5.70155C14.0665 5.75183 13.5716 5.7518 13.0026 5.75177H10.9969C10.4279 5.7518 9.93298 5.75183 9.5303 5.70155C9.09643 5.64738 8.67908 5.52605 8.31611 5.21856C7.95313 4.91107 7.76484 4.51935 7.64008 4.10029C7.52625 3.71794 7.43374 3.16263 7.3418 2.61071L7.33705 2.58219L7.25718 1.90006ZM7.25 11C7.25 10.5858 7.58579 10.25 8 10.25H16C16.4142 10.25 16.75 10.5858 16.75 11C16.75 11.4142 16.4142 11.75 16 11.75H8C7.58579 11.75 7.25 11.4142 7.25 11ZM7.25 16C7.25 15.5858 7.58579 15.25 8 15.25H12C12.4142 15.25 12.75 15.5858 12.75 16C12.75 16.4142 12.4142 16.75 12 16.75H8C7.58579 16.75 7.25 16.4142 7.25 16Z" fill="#EAF1F4"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.875 1C6.42729 1 6.875 1.44772 6.875 2V2.27532C7.58956 2.24998 8.40132 2.24999 9.31925 2.25H9.875V2C9.875 1.44772 10.3227 1 10.875 1C11.4273 1 11.875 1.44772 11.875 2V2.25H12.4308C13.3487 2.24999 14.1604 2.24998 14.875 2.27532V2C14.875 1.44772 15.3227 1 15.875 1C16.4273 1 16.875 1.44772 16.875 2V2.48029C17.6631 2.6473 18.3307 2.94531 18.8802 3.4948C19.5553 4.16994 19.8508 5.02335 19.9902 6.05962C20.125 7.0627 20.125 8.34167 20.125 9.94426L20.1245 13.4137C20.1245 13.6015 20.1245 13.6954 20.0797 13.7678C20.035 13.8403 19.946 13.8849 19.7679 13.974C18.9461 14.3857 18.2111 14.942 17.598 15.4797C16.7727 16.2034 16.0194 17.0267 15.3965 17.7735C15.342 17.8388 15.3148 17.8714 15.2886 17.8915C15.2116 17.9508 15.13 17.9683 15.0356 17.9456C15.0034 17.9379 14.9609 17.9171 14.8758 17.8755C14.6528 17.7664 14.4371 17.6855 14.2337 17.6274C14.1092 17.5906 13.8022 17.4999 13.375 17.4999C11.9943 17.4999 10.875 18.6192 10.875 19.9999C10.875 21.1113 11.5993 22.0521 12.6022 22.3779C12.6557 22.3953 12.7049 22.4249 12.7402 22.4687C12.7485 22.479 12.7571 22.49 12.7661 22.5016C12.8314 22.5863 12.8266 22.7215 12.7219 22.7435C12.6914 22.75 12.6674 22.75 12.6194 22.75L9.31926 22.75C7.71667 22.75 6.4377 22.75 5.43462 22.6152C4.39835 22.4758 3.54494 22.1803 2.8698 21.5052C2.19466 20.8301 1.89915 19.9767 1.75983 18.9404C1.62497 17.9373 1.62498 16.6584 1.625 15.0558V9.94424C1.62498 8.34168 1.62497 7.06269 1.75983 6.05962C1.89915 5.02335 2.19466 4.16994 2.8698 3.4948C3.41929 2.94531 4.08686 2.6473 4.875 2.48029V2C4.875 1.44772 5.32272 1 5.875 1ZM6.875 9.25C6.46079 9.25 6.125 9.58579 6.125 10C6.125 10.4142 6.46079 10.75 6.875 10.75H14.875C15.2892 10.75 15.625 10.4142 15.625 10C15.625 9.58579 15.2892 9.25 14.875 9.25H6.875ZM6.875 14.25C6.46079 14.25 6.125 14.5858 6.125 15C6.125 15.4142 6.46079 15.75 6.875 15.75H10.875C11.2892 15.75 11.625 15.4142 11.625 15C11.625 14.5858 11.2892 14.25 10.875 14.25H6.875Z" fill="#EAF1F4"/>
<path d="M21.7088 16.9429C22.2294 16.7585 22.502 16.187 22.3176 15.6664C22.1332 15.1458 21.5618 14.8733 21.0412 15.0576C20.163 15.3686 19.3236 15.9618 18.587 16.6078C17.84 17.2629 17.1416 18.0235 16.5483 18.7347C16.109 19.2613 15.7206 19.7689 15.4054 20.1997C15.1166 19.8538 14.829 19.6011 14.5547 19.4182C14.2803 19.2353 14.0295 19.1294 13.8216 19.07C13.8108 19.0669 13.7999 19.0637 13.7888 19.0604C13.6942 19.0325 13.5848 19.0003 13.375 19.0003C12.8227 19.0003 12.375 19.448 12.375 20.0003C12.375 20.521 12.773 20.9487 13.2814 20.9959C13.304 21.0036 13.361 21.0261 13.4453 21.0823C13.6446 21.2152 14.0399 21.5661 14.4806 22.4475C14.6418 22.7698 14.9639 22.9805 15.3239 22.999C15.6837 23.0174 16.0258 22.8406 16.2191 22.5365C16.307 22.4044 16.5672 22.0141 16.7324 21.7801C17.0635 21.3111 17.5322 20.6774 18.0841 20.0159C18.6378 19.3521 19.263 18.6751 19.9057 18.1115C20.5587 17.5388 21.1752 17.1319 21.7088 16.9429Z" fill="#EAF1F4"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.55945 0C2.97063 0 2.42363 0.292383 2.09688 0.782773L0.494727 3.18605C0.426289 3.28855 0.393438 3.40656 0.338867 3.51566H9.41668V0H3.55945Z" fill="#EAF1F4"/>
<path d="M19.5079 3.18602L17.9057 0.782773C17.579 0.292383 16.9929 0 16.4041 0H10.5859V3.51562H19.6638C19.6092 3.40656 19.5763 3.28855 19.5079 3.18602Z" fill="#EAF1F4"/>
<path d="M19.9818 4.6875H0.0182422C0.0164453 4.72957 0 4.76883 0 4.81109V18.2422C0 19.2115 0.788516 20 1.75781 20H18.2422C19.2115 20 20 19.2115 20 18.2422V4.81109C20 4.76883 19.9836 4.72957 19.9818 4.6875ZM12.3438 10.5469H7.65625C6.68695 10.5469 5.89844 9.75836 5.89844 8.78906C5.89844 7.81977 6.68695 7.03125 7.65625 7.03125H12.3438C13.313 7.03125 14.1016 7.81977 14.1016 8.78906C14.1016 9.75836 13.313 10.5469 12.3438 10.5469Z" fill="#EAF1F4"/>
</svg>

After

Width:  |  Height:  |  Size: 889 B

@ -116,7 +116,7 @@ extension WidgetExtensions on Widget {
double borderRadius = 14, double borderRadius = 14,
bool withShadow = true, bool withShadow = true,
Color? backgroundColor, Color? backgroundColor,
Color borderColor = Colors.transparent, Color? borderColor,
double padding = 12, double padding = 12,
EdgeInsets? paddingObject, EdgeInsets? paddingObject,
EdgeInsets? margin, EdgeInsets? margin,
@ -128,7 +128,7 @@ extension WidgetExtensions on Widget {
width: double.infinity, width: double.infinity,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: backgroundColor ?? AppColor.background(context), color: backgroundColor ?? AppColor.background(context),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(borderRadius), side: BorderSide(color: AppColor.borderColor(context))), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(borderRadius), side: BorderSide(color: borderColor ?? AppColor.borderColor(context))),
shadows: showShadow ? [boxShadowR14] : null, shadows: showShadow ? [boxShadowR14] : null,
), ),
child: this, child: this,
@ -202,5 +202,5 @@ extension WidgetExtensions on Widget {
} }
extension DividerExtension on Divider { extension DividerExtension on Divider {
Divider defaultStyle(BuildContext context) => Divider(thickness: 1, color: context.isDarkNotListen ? AppColor.neutral20 : AppColor.neutral30); Divider defaultStyle(BuildContext context) => Divider(thickness: 1, color: AppColor.borderColor(context));
} }

@ -114,7 +114,7 @@ import 'package:test_sa/views/pages/user/profile_page.dart';
import 'package:test_sa/views/update_available_screen.dart'; import 'package:test_sa/views/update_available_screen.dart';
import 'package:test_sa/views/widgets/departments/single_department_picker.dart'; import 'package:test_sa/views/widgets/departments/single_department_picker.dart';
import 'package:test_sa/views/widgets/equipment/asset_detail_page.dart'; import 'package:test_sa/views/widgets/equipment/asset_detail_page.dart';
import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; import 'package:test_sa/views/widgets/equipment/my_assets_page.dart';
import 'package:timezone/data/latest_all.dart' as tz; import 'package:timezone/data/latest_all.dart' as tz;
import 'package:timezone/timezone.dart' as tz; import 'package:timezone/timezone.dart' as tz;

@ -92,7 +92,7 @@ class _AssetInventoryFormViewState extends State<AssetInventoryFormView> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
'Not Registered'.addTranslation.heading5(context), 'Not Registered'.addTranslation.heading5(context).custom(color: AppColor.textStyleColor(context)),
AdvancedSwitch( AdvancedSwitch(
controller: registeredController, controller: registeredController,
activeColor: AppColor.green50.withOpacity(0.5), activeColor: AppColor.green50.withOpacity(0.5),

@ -23,7 +23,7 @@ class CleanerRequestItemView extends StatelessWidget {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
if (result.taskNo != null && result.taskNo!.isNotEmpty) result.taskNo!.heading5(context), if (result.taskNo != null && result.taskNo!.isNotEmpty) result.taskNo!.heading5(context).custom(color: AppColor.textStyleColor(context)),
if (result.createdDate != null) if (result.createdDate != null)
Text( Text(
result.createdDate!.split('T').first, result.createdDate!.split('T').first,

@ -368,7 +368,7 @@ class _CleanerChecklistWidgetState extends State<CleanerChecklistWidget> {
borderRadius: BorderRadius.circular(30), borderRadius: BorderRadius.circular(30),
//boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], //boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
), ),
child: const Icon(Icons.delete_rounded, color: Color(0xffF63939))) child: "delete".toSvgAsset())
.onPress(() { .onPress(() {
widget.onImageCaptured?.call(null); widget.onImageCaptured?.call(null);
}); });

@ -1,6 +1,11 @@
import 'dart:developer';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:open_file/open_file.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
@ -21,6 +26,7 @@ import 'package:test_sa/modules/loan_module/pages/create_loan_request_page.dart'
import 'package:test_sa/modules/loan_module/pages/loan_equipment_detail_page.dart'; import 'package:test_sa/modules/loan_module/pages/loan_equipment_detail_page.dart';
import 'package:test_sa/modules/loan_module/provider/loan_provider.dart'; import 'package:test_sa/modules/loan_module/provider/loan_provider.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'views/components/history_log_view.dart'; import 'views/components/history_log_view.dart';
import 'views/components/service_request_detail_view.dart'; import 'views/components/service_request_detail_view.dart';

@ -137,11 +137,11 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { "edit_icon".toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).onPress(() {
editSparePartRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity); editSparePartRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity);
}), }),
24.width, 24.width,
"delete_icon".toSvgAsset(height: 21, width: 21).onPress(() async { "delete_icon".toSvgAsset(height: 24, width: 24).onPress(() async {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
int status = await requestDetailProvider.deleteActivitySparePart(id: activity.id!, workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!); int status = await requestDetailProvider.deleteActivitySparePart(id: activity.id!, workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!);
if (status == 200) { if (status == 200) {
@ -239,11 +239,11 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { "edit_icon".toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).onPress(() {
editMaintenanceRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity); editMaintenanceRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity);
}), }),
24.width, 24.width,
"delete_icon".toSvgAsset(height: 21, width: 21).onPress(() async { "delete_icon".toSvgAsset(height: 24, width: 24).onPress(() async {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
int status = await requestDetailProvider.deleteActivityMaintenance(id: activity.id!, workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!); int status = await requestDetailProvider.deleteActivityMaintenance(id: activity.id!, workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!);
if (status == 200) { if (status == 200) {

@ -52,7 +52,7 @@ class AssetDetailCard extends StatelessWidget {
), ),
//hide if status is closed or complete . //hide if status is closed or complete .
if (!requestDetailProvider.isReadOnlyRequest) if (!requestDetailProvider.isReadOnlyRequest)
"edit_icon".toSvgAsset(height: 21, width: 21, color: context.isDark ? AppColor.primary10 : null).onPress(() async { "edit_icon".toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).onPress(() async {
requestDetailProvider.refreshTimer = false; requestDetailProvider.refreshTimer = false;
await Navigator.push(context, MaterialPageRoute(builder: (context) => VerifyAssetDetails(isEdit: true))); await Navigator.push(context, MaterialPageRoute(builder: (context) => VerifyAssetDetails(isEdit: true)));
requestDetailProvider.refreshTimer = true; requestDetailProvider.refreshTimer = true;

@ -24,6 +24,7 @@ class _InitialVisitCardState extends State<InitialVisitCard> {
void initState() { void initState() {
super.initState(); super.initState();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<CMDetailProvider>(builder: (context, CMDetailProvider requestDetailProvider, snapshot) { return Consumer<CMDetailProvider>(builder: (context, CMDetailProvider requestDetailProvider, snapshot) {
@ -38,12 +39,12 @@ class _InitialVisitCardState extends State<InitialVisitCard> {
), ),
Row( Row(
children: [ children: [
"reminder_icon".toSvgAsset(height: 21, width: 21).onPress(() { "reminder_icon".toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).onPress(() {
ServiceRequestBottomSheet.getReminderTimeList(context: context); ServiceRequestBottomSheet.getReminderTimeList(context: context);
ServiceRequestBottomSheet.initialVisitReminderBottomSheet(context: context, reminder: requestDetailProvider.currentWorkOrder?.data?.setReminder); ServiceRequestBottomSheet.initialVisitReminderBottomSheet(context: context, reminder: requestDetailProvider.currentWorkOrder?.data?.setReminder);
}), }),
24.width, 24.width,
"edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { "edit_icon".toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).onPress(() {
ServiceRequestBottomSheet.initialVisitBottomSheet(context: context); ServiceRequestBottomSheet.initialVisitBottomSheet(context: context);
}), }),
], ],
@ -56,7 +57,7 @@ class _InitialVisitCardState extends State<InitialVisitCard> {
requestDetailProvider.needVisitHelperModel!.comment!.bodyText2(context).custom(color: AppColor.neutral120), requestDetailProvider.needVisitHelperModel!.comment!.bodyText2(context).custom(color: AppColor.neutral120),
] ]
], ],
).toShadowContainer(context,margin:const EdgeInsets.only(top: 12)); ).toShadowContainer(context, margin: const EdgeInsets.only(top: 12));
}); });
} }
} }

@ -22,6 +22,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
import 'package:test_sa/views/widgets/sound/sound_player.dart'; import 'package:test_sa/views/widgets/sound/sound_player.dart';
@ -505,7 +506,7 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
).expanded, ).expanded,
if (!provider.isReadOnlyRequest) if (!provider.isReadOnlyRequest)
"edit_icon".toSvgAsset(height: 21, width: 21, color: context.isDark ? AppColor.primary10 : null).onPress(() async { "edit_icon".toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).onPress(() async {
provider.refreshTimer = false; provider.refreshTimer = false;
await Navigator.push(context, MaterialPageRoute(builder: (context) => CostDetailFormScreen(isEdit: true))); await Navigator.push(context, MaterialPageRoute(builder: (context) => CostDetailFormScreen(isEdit: true)));
provider.refreshTimer = true; provider.refreshTimer = true;
@ -551,7 +552,7 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
], ],
), ),
], ],
).toShadowContainer(context, padding: 12); ).toShadowContainer(context);
} }
Widget assetRetiredButton({required BuildContext context}) { Widget assetRetiredButton({required BuildContext context}) {
@ -560,7 +561,7 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
child: AppFilledButton( child: AppFilledButton(
label: context.translation.assetToBeRetired, label: context.translation.assetToBeRetired,
maxWidth: true, maxWidth: true,
buttonColor: Colors.white54, buttonColor: AppColor.background(context),
textColor: AppColor.red30, textColor: AppColor.red30,
showBorder: true, showBorder: true,
onPressed: () async { onPressed: () async {

@ -137,7 +137,7 @@ class _SparePartRequestState extends State<SparePartRequest> with TickerProvider
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
context.translation.sparePartDetails.heading5(context), context.translation.sparePartDetails.heading5(context).custom(color: AppColor.textStyleColor(context)),
// 12.height, // 12.height,
// SingleItemDropDownMenu<Lookup, ActivityStatusProvider>( // SingleItemDropDownMenu<Lookup, ActivityStatusProvider>(
// context: context, // context: context,

@ -368,7 +368,7 @@ class _CleanerChecklistWidgetState extends State<CleanerChecklistWidget> {
borderRadius: BorderRadius.circular(30), borderRadius: BorderRadius.circular(30),
//boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], //boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
), ),
child: const Icon(Icons.delete_rounded, color: Color(0xffF63939))) child: "delete".toSvgAsset())
.onPress(() { .onPress(() {
widget.onImageCaptured?.call(null); widget.onImageCaptured?.call(null);
}); });

@ -90,7 +90,7 @@ class _PpmDetailsPageState extends State<PpmDetailsPage> {
], ],
), ),
8.height, 8.height,
planPreventiveVisit.assetName!.cleanupWhitespace.capitalizeFirstOfEach.heading5(context), planPreventiveVisit.assetName!.cleanupWhitespace.capitalizeFirstOfEach.heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
'${context.translation.assetNumber}: ${planPreventiveVisit.asset!.assetNumber}'.bodyText(context), '${context.translation.assetNumber}: ${planPreventiveVisit.asset!.assetNumber}'.bodyText(context),
'${context.translation.assetSN}: ${planPreventiveVisit.asset!.assetSerialNo}'.bodyText(context), '${context.translation.assetSN}: ${planPreventiveVisit.asset!.assetSerialNo}'.bodyText(context),

@ -80,7 +80,7 @@ class _PpmCalibrationToolsFormState extends State<PpmCalibrationToolsForm> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
(index == 0 ? "$currentIndex /$totalTabs . Calibration Tools" : "").heading5(context), (index == 0 ? "$currentIndex /$totalTabs . Calibration Tools" : "").heading5(context).custom(color: AppColor.textStyleColor(context)),
"trash".toSvgAsset(height: 20, width: 15).onPress(() { "trash".toSvgAsset(height: 20, width: 15).onPress(() {
widget.models!.remove(model); widget.models!.remove(model);
setState(() {}); setState(() {});

@ -134,7 +134,7 @@ class _ExternalDetailItemState extends State<ExternalDetailItem> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
(widget.index == 0 ? "1 /4 . External Details" : "").heading5(context), (widget.index == 0 ? "1 /4 . External Details" : "").heading5(context).custom(color: AppColor.textStyleColor(context)),
Container( Container(
height: 32, height: 32,
width: 32, width: 32,

@ -50,7 +50,7 @@ class _PpmPmChecklistFormState extends State<PpmPmChecklistForm> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if (index == 0) ...[ if (index == 0) ...[
"$currentIndex /$totalTabs . PM Checklist".heading5(context), "$currentIndex /$totalTabs . PM Checklist".heading5(context).custom(color: AppColor.textStyleColor(context)),
16.height, 16.height,
], ],
AppTextFormField( AppTextFormField(

@ -78,7 +78,7 @@ class _PpmPMKitsFormState extends State<PpmPMKitsForm> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
(index == 0 ? "$currentIndex /$totalTabs . PM Kits" : "").heading5(context), (index == 0 ? "$currentIndex /$totalTabs . PM Kits" : "").heading5(context).custom(color: AppColor.textStyleColor(context)),
Container( Container(
height: 32, height: 32,
width: 32, width: 32,

@ -7,13 +7,14 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/site.dart';
import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/multiple_item_drop_down_menu.dart'; import 'package:test_sa/new_views/common_widgets/multiple_item_drop_down_menu.dart';
import 'package:test_sa/providers/department_provider.dart'; import 'package:test_sa/providers/department_provider.dart';
import 'package:test_sa/providers/gas_request_providers/site_provider.dart'; import 'package:test_sa/providers/gas_request_providers/site_provider.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/equipment/commissioning_status_buttons.dart'; import 'package:test_sa/views/widgets/equipment/asset_status_buttons.dart';
import '../../../models/device/asset_search.dart'; import '../../../models/device/asset_search.dart';
import '../../../new_views/common_widgets/app_lazy_loading.dart'; import '../../../new_views/common_widgets/app_lazy_loading.dart';
@ -45,6 +46,7 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
setState(() {}); setState(() {});
startDate = filter.supplyDateFrom; startDate = filter.supplyDateFrom;
endDate = filter.supplyDateTo; endDate = filter.supplyDateTo;
_commissioningStatus = filter.assetStatus;
final departmentProvider = Provider.of<DepartmentProvider>(context, listen: false); final departmentProvider = Provider.of<DepartmentProvider>(context, listen: false);
final siteProvider = Provider.of<SiteProvider>(context, listen: false); final siteProvider = Provider.of<SiteProvider>(context, listen: false);
if (departmentProvider.items.isEmpty ?? true) await departmentProvider.getData(); if (departmentProvider.items.isEmpty ?? true) await departmentProvider.getData();
@ -68,38 +70,35 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SafeArea( return Scaffold(
top: false,
child: Scaffold(
appBar: DefaultAppBar( appBar: DefaultAppBar(
title: context.translation.filter, title: context.translation.filter,
actions: [ actions: [
if (loading == false && _showResetButton()) if (loading == false && _showResetButton())
Row( TextButton(
crossAxisAlignment: CrossAxisAlignment.center, onPressed: () {
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.loadingColor(context)),
).paddingAll(8).onPress(() {
setState(() { setState(() {
startDate = null; startDate = null;
endDate = null; endDate = null;
_selectedDepartments = []; _selectedDepartments = [];
_selectedSites = []; _selectedSites = [];
_commissioningStatus = null;
}); });
}), },
], style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap),
) child: Text(
'Clear Filters',
style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10),
),
).paddingOnly(start: 16, end: 16)
], ],
), ),
body: Column( body: Column(
children: [ children: [
SingleChildScrollView( ListView(
child: Column( padding: const EdgeInsets.all(16),
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
CommissioningStatusButtons( AssetStatusButtons(
initialValue: _commissioningStatus, initialValue: _commissioningStatus,
onSelect: (value) { onSelect: (value) {
if (value != null) { if (value != null) {
@ -124,8 +123,8 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
}); });
} }
}, },
).paddingOnly(start: 16, end: 16), ),
8.height, 12.height,
MultipleItemDropDownMenu<Site, SiteProvider>( MultipleItemDropDownMenu<Site, SiteProvider>(
context: context, context: context,
title: context.translation.bySite, title: context.translation.bySite,
@ -142,9 +141,9 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
}); });
} }
}, },
).paddingOnly(start: 16, end: 16), ),
16.height, 16.height,
context.translation.pmDateRange.heading5(context).paddingOnly(start: 16, end: 16), context.translation.pmDateRange.heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
Row( Row(
children: [ children: [
@ -170,13 +169,11 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
}, },
).expanded, ).expanded,
], ],
).paddingOnly(start: 16, end: 16),
],
), ),
],
).expanded, ).expanded,
AppFilledButton(onPressed: _search, label: context.translation.applyFilter).paddingOnly(start: 16, end: 16), FooterActionButton.footerContainer(context: context, child: AppFilledButton(onPressed: _search, label: context.translation.applyFilter)),
], ],
).paddingOnly(top: 16, bottom: 16),
), ),
); );
} }
@ -184,6 +181,7 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
void _search() async { void _search() async {
filter.sites = _selectedSites.map((site) => site.name ?? '').where((name) => name.isNotEmpty).toList(); filter.sites = _selectedSites.map((site) => site.name ?? '').where((name) => name.isNotEmpty).toList();
filter.departments = _selectedDepartments.map((dept) => dept.name ?? '').where((name) => name.isNotEmpty).toList(); filter.departments = _selectedDepartments.map((dept) => dept.name ?? '').where((name) => name.isNotEmpty).toList();
filter.assetStatus = _commissioningStatus;
filter.supplyDateFrom = startDate; filter.supplyDateFrom = startDate;
filter.supplyDateTo = endDate; filter.supplyDateTo = endDate;
final deviceProvider = Provider.of<AssetProvider>(context, listen: false); final deviceProvider = Provider.of<AssetProvider>(context, listen: false);
@ -195,6 +193,6 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
} }
bool _showResetButton() { bool _showResetButton() {
return (_selectedDepartments.isNotEmpty) || (_selectedSites.isNotEmpty) || (startDate != null) || (endDate != null); return (_selectedDepartments.isNotEmpty) || (_selectedSites.isNotEmpty) || (_commissioningStatus != null) || (startDate != null) || (endDate != null);
} }
} }

@ -5,6 +5,8 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart';
@ -62,13 +64,8 @@ class _DeviceSearchScreenState extends State<DeviceSearchScreen> {
title: context.translation.search, title: context.translation.search,
actions: [ actions: [
if (_showResetButton()) if (_showResetButton())
Row( TextButton(
crossAxisAlignment: CrossAxisAlignment.center, onPressed: () {
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() {
setState(() { setState(() {
_assetNameController.text = ""; _assetNameController.text = "";
_assetNumberController.text = ""; _assetNumberController.text = "";
@ -79,22 +76,26 @@ class _DeviceSearchScreenState extends State<DeviceSearchScreen> {
_manufactureController.text = ""; _manufactureController.text = "";
_mdController.text = ""; _mdController.text = "";
}); });
}), },
], style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap),
) child: Text(
'Clear Filters',
style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10),
),
).paddingOnly(start: 16, end: 16),
], ],
), ),
body: Form( body: Form(
key: _formKey, key: _formKey,
child: SafeArea(
child: Column( child: Column(
children: [ children: [
SingleChildScrollView( ListView(
child: Column( padding: const EdgeInsets.all(16),
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
context.translation.searchBy.heading5(context), context.translation.searchBy.heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 4.height,
context.translation.searchByDesc.bodyText(context), context.translation.searchByDesc.bodyText2(context).custom(color: AppColor.lightTextColor(context)),
16.height, 16.height,
AppTextFormField( AppTextFormField(
controller: _assetNameController, controller: _assetNameController,
@ -215,11 +216,11 @@ class _DeviceSearchScreenState extends State<DeviceSearchScreen> {
), ),
8.height, 8.height,
], ],
),
).expanded, ).expanded,
AppFilledButton(onPressed: _search, label: context.translation.search), FooterActionButton.footerContainer(context: context, child: AppFilledButton(onPressed: _search, label: context.translation.search)),
], ],
).paddingAll(16), ),
),
), ),
); );
} }

@ -252,7 +252,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
], ],
), ),
8.height, 8.height,
context.translation.workOrderDetails.heading5(context), context.translation.workOrderDetails.heading5(context).custom(color: AppColor.textStyleColor(context)),
infoText(label: context.translation.destinationSite, value: _model?.senderSiteName), infoText(label: context.translation.destinationSite, value: _model?.senderSiteName),
// infoText(label: "Sender Building".addTranslation, value: _model?.senderBuildingName), // infoText(label: "Sender Building".addTranslation, value: _model?.senderBuildingName),
// infoText(label: "Sender Floor".addTranslation, value: _model?.senderFloorName), // infoText(label: "Sender Floor".addTranslation, value: _model?.senderFloorName),
@ -332,7 +332,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
children: [ children: [
statusLabel ?? Container(), statusLabel ?? Container(),
if (statusLabel != null) 8.height, if (statusLabel != null) 8.height,
isSender ? context.translation.senderDetails.heading5(context) : context.translation.receiverDetails.heading5(context), isSender ? context.translation.senderDetails.heading5(context) : context.translation.receiverDetails.heading5(context).custom(color: AppColor.textStyleColor(context)),
], ],
).expanded, ).expanded,
if (context.userProvider.isEngineer || context.userProvider.isNurse) if (context.userProvider.isEngineer || context.userProvider.isNurse)

@ -15,6 +15,7 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; import 'package:test_sa/views/widgets/e_signature/e_signature.dart';
@ -242,7 +243,7 @@ class _RequestGasRefillState extends State<CreateGasRefillRequest> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
context.translation.gasRefill.heading5(context), context.translation.gasRefill.heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
'${context.translation.gasRequest}: ${widget.gasRefillModel!.gasRefillDetails![0].gasType!.name}'.bodyText(context), '${context.translation.gasRequest}: ${widget.gasRefillModel!.gasRefillDetails![0].gasType!.name}'.bodyText(context),
'${context.translation.cylinderType}: ${widget.gasRefillModel!.gasRefillDetails![0].cylinderType!.name}'.bodyText(context), '${context.translation.cylinderType}: ${widget.gasRefillModel!.gasRefillDetails![0].cylinderType!.name}'.bodyText(context),

@ -300,7 +300,7 @@ class _GasRefillRequestFormState extends State<GasRefillRequestForm> {
// Column( // Column(
// crossAxisAlignment: CrossAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.start,
// children: [ // children: [
// (_gasModel.gasRefillDetails![index].gasType?.name ?? "").heading5(context), // (_gasModel.gasRefillDetails![index].gasType?.name ?? "").heading5(context).custom(color: AppColor.textStyleColor(context)),
// 8.height, // 8.height,
// ("${context.translation.quantity}: ${_gasModel.gasRefillDetails![index].requestedQty}").bodyText(context), // ("${context.translation.quantity}: ${_gasModel.gasRefillDetails![index].requestedQty}").bodyText(context),
// ("${context.translation.cylinderSize}: ${_gasModel.gasRefillDetails![index].cylinderSize?.name}").bodyText(context), // ("${context.translation.cylinderSize}: ${_gasModel.gasRefillDetails![index].cylinderSize?.name}").bodyText(context),
@ -655,7 +655,7 @@ class _GasRefillRequestFormState extends State<GasRefillRequestForm> {
// // Column( // // Column(
// // crossAxisAlignment: CrossAxisAlignment.start, // // crossAxisAlignment: CrossAxisAlignment.start,
// // children: [ // // children: [
// // (_gasModel.gasRefillDetails![index].gasType?.name ?? "").heading5(context), // // (_gasModel.gasRefillDetails![index].gasType?.name ?? "").heading5(context).custom(color: AppColor.textStyleColor(context)),
// // 8.height, // // 8.height,
// // ("${context.translation.quantity}: ${_gasModel.gasRefillDetails![index].requestedQty}").bodyText(context), // // ("${context.translation.quantity}: ${_gasModel.gasRefillDetails![index].requestedQty}").bodyText(context),
// // ("${context.translation.cylinderSize}: ${_gasModel.gasRefillDetails![index].cylinderSize?.name}").bodyText(context), // // ("${context.translation.cylinderSize}: ${_gasModel.gasRefillDetails![index].cylinderSize?.name}").bodyText(context),

@ -308,7 +308,7 @@ class _CreateTRAFRequestPageState extends State<CreateTRAFRequestPage> {
title: Text("Name: ${userBasedOnSearch[index].userName ?? ""}"), title: Text("Name: ${userBasedOnSearch[index].userName ?? ""}"),
subtitle: Text( subtitle: Text(
"Position: ${userBasedOnSearch[index].position ?? "-"}\nEmail: ${userBasedOnSearch[index].email ?? ""}\nPhone: ${userBasedOnSearch[index].phoneNumber ?? ""}"), "Position: ${userBasedOnSearch[index].position ?? "-"}\nEmail: ${userBasedOnSearch[index].email ?? ""}\nPhone: ${userBasedOnSearch[index].phoneNumber ?? ""}"),
trailing: const Icon(Icons.delete_rounded, color: Color(0xffF63939), size: 20).onPress(() { trailing: "delete".toSvgAsset().onPress(() {
userBasedOnSearch.removeAt(index); userBasedOnSearch.removeAt(index);
setState(() {}); setState(() {});
}), }),

@ -90,6 +90,8 @@ class AppColor {
static const Color orange60 = Color(0xff886400); static const Color orange60 = Color(0xff886400);
static const Color orange70 = Color(0xffFFC945); static const Color orange70 = Color(0xffFFC945);
static const Color orange80 = Color(0xff65531B); static const Color orange80 = Color(0xff65531B);
static const Color yellowBgColor = Color(0xffF4DC92);
static const Color yellowTextColor = Color(0xff65531B);
// new UI colors // new UI colors

@ -3,6 +3,7 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../models/device/asset.dart'; import '../../models/device/asset.dart';
@ -16,7 +17,7 @@ class AssetInfoCard extends StatelessWidget {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
(asset.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "").heading5(context), (asset.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "").heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
"${context.translation.assetNo}: ${asset.assetNumber}".bodyText(context), "${context.translation.assetNo}: ${asset.assetNumber}".bodyText(context),
"${context.translation.manufacture}: ${asset.modelDefinition?.manufacturerName}".bodyText(context), "${context.translation.manufacture}: ${asset.modelDefinition?.manufacturerName}".bodyText(context),

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../common_widgets/default_app_bar.dart'; import '../common_widgets/default_app_bar.dart';
@ -41,7 +42,7 @@ class HelpCenterPage extends StatelessWidget {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
title.heading5(context), title.heading5(context).custom(color: AppColor.textStyleColor(context)),
"arrow_right".toSvgAsset(width: 17), "arrow_right".toSvgAsset(width: 17),
], ],
); );

@ -19,7 +19,7 @@ class CalendarHeader extends StatelessWidget {
children: [ children: [
Row( Row(
children: [ children: [
dateFormat.format(dateTime).heading5(context), dateFormat.format(dateTime).heading5(context).custom(color: AppColor.textStyleColor(context)),
6.width, 6.width,
Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: context.isDark ? AppColor.neutral10 : AppColor.neutral60, size: 24)), Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: context.isDark ? AppColor.neutral10 : AppColor.neutral60, size: 24)),
const Spacer(), const Spacer(),

@ -115,26 +115,26 @@ class CreateRequestModel {
// } // }
// }); // });
if (context.userProvider.isQualityUser && context.settingProvider.isUserFlowMedical) { if (context.userProvider.isQualityUser && context.settingProvider.isUserFlowMedical) {
list.add(CreateRequestModel("Equipment Internal Audit Checklist".addTranslation, "add_icon", CreateEquipmentInternalAuditForm.id)); list.add(CreateRequestModel("Equipment Internal Audit Checklist".addTranslation, "wo/equipment_audit_wo", CreateEquipmentInternalAuditForm.id));
list.add(CreateRequestModel("System Internal Audit Checklist".addTranslation, "add_icon", CreateSystemInternalAuditForm.id)); list.add(CreateRequestModel("System Internal Audit Checklist".addTranslation, "wo/system_audit_wo", CreateSystemInternalAuditForm.id));
} else if (context.userProvider.isAssessor && context.settingProvider.isUserFlowMedical) { } else if (context.userProvider.isAssessor && context.settingProvider.isUserFlowMedical) {
list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id)); list.add(CreateRequestModel("TRAF".addTranslation, "wo/traf_wo", CreateTRAFRequestPage.id));
} else if (context.userProvider.isEngineer) { } else if (context.userProvider.isEngineer) {
if (Provider.of<SettingProvider>(context, listen: false).engineerCanCreateCM) { if (Provider.of<SettingProvider>(context, listen: false).engineerCanCreateCM) {
list.add(CreateRequestModel(context.translation.correctiveMaintenance, "wo/cm_wo", CreateCMRequest.id)); list.add(CreateRequestModel(context.translation.correctiveMaintenance, "wo/cm_wo", CreateCMRequest.id));
} }
//TODO uncommit this to enable task. //TODO uncommit this to enable task.
list.add(CreateRequestModel(context.translation.task, "add_icon", CreateTaskView.id)); list.add(CreateRequestModel(context.translation.task, "wo/task_wo", CreateTaskView.id));
//Need to add check from permission Api. //Need to add check from permission Api.
if ((context.settingProvider.isUserFlowMedical)) { if ((context.settingProvider.isUserFlowMedical)) {
list.add(CreateRequestModel('Medical Gas'.addTranslation, "add_icon", CreateMedicalGasRequestPage.id)); list.add(CreateRequestModel('Medical Gas'.addTranslation, "wo/gas_refill_wo", CreateMedicalGasRequestPage.id));
} }
} else { } else {
list.add(CreateRequestModel(context.translation.correctiveMaintenance, "wo/cm_wo", CreateCMRequest.id)); list.add(CreateRequestModel(context.translation.correctiveMaintenance, "wo/cm_wo", CreateCMRequest.id));
list.add(CreateRequestModel(context.translation.gasRefill, "wo/gas_refill_wo", GasRefillRequestForm.routeName)); list.add(CreateRequestModel(context.translation.gasRefill, "wo/gas_refill_wo", GasRefillRequestForm.routeName));
list.add(CreateRequestModel(context.translation.transferAsset, "wo/device_transfer_wo", CreateDeviceTransferRequest.id)); list.add(CreateRequestModel(context.translation.transferAsset, "wo/device_transfer_wo", CreateDeviceTransferRequest.id));
list.add(CreateRequestModel(context.translation.task, "add_icon", CreateTaskView.id)); list.add(CreateRequestModel(context.translation.task, "wo/task_wo", CreateTaskView.id));
// context.userProvider.modulesPermissionsList.forEach((module) { // context.userProvider.modulesPermissionsList.forEach((module) {
// if (module.module!.value! == 9) { // if (module.module!.value! == 9) {
// list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id)); // list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id));
@ -149,14 +149,14 @@ class CreateRequestModel {
context.userProvider.modulesPermissionsList.forEach((module) { context.userProvider.modulesPermissionsList.forEach((module) {
if (module.module!.value! == 9 && (module.canAdd ?? false)) { if (module.module!.value! == 9 && (module.canAdd ?? false)) {
list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id)); list.add(CreateRequestModel("TRAF".addTranslation, "wo/traf_wo", CreateTRAFRequestPage.id));
} }
if (module.module!.value! == 15 && (module.canAdd ?? false)) { if (module.module!.value! == 15 && (module.canAdd ?? false)) {
list.add(CreateRequestModel('Demo Request'.addTranslation, "wo/demo_wo", CreateDemoRequestPage.id)); list.add(CreateRequestModel('Demo Request'.addTranslation, "wo/demo_wo", CreateDemoRequestPage.id));
} }
}); });
if (!context.userProvider.isNurse && context.settingProvider.isUserFlowMedical) { if (!context.userProvider.isNurse && context.settingProvider.isUserFlowMedical) {
list.add(CreateRequestModel("Incident Management", "add_icon", CreateIncidentRequestPage.id)); list.add(CreateRequestModel("Incident Management", "wo/incident_wo", CreateIncidentRequestPage.id));
} }
return list; return list;
} }

@ -22,7 +22,7 @@ import 'package:test_sa/new_views/pages/land_page/my_request/my_requests_page.da
import 'package:test_sa/new_views/pages/login_page.dart'; import 'package:test_sa/new_views/pages/login_page.dart';
import 'package:test_sa/new_views/pages/settings_page.dart'; import 'package:test_sa/new_views/pages/settings_page.dart';
import 'package:test_sa/providers/work_order/vendor_provider.dart'; import 'package:test_sa/providers/work_order/vendor_provider.dart';
import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; import 'package:test_sa/views/widgets/equipment/my_assets_page.dart';
import '../../../controllers/providers/settings/setting_provider.dart'; import '../../../controllers/providers/settings/setting_provider.dart';
import '../../../views/widgets/dialogs/dialog.dart'; import '../../../views/widgets/dialogs/dialog.dart';

@ -141,14 +141,8 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
title: context.translation.filter, title: context.translation.filter,
actions: [ actions: [
if (_showResetButton()) if (_showResetButton())
Row( TextButton(
crossAxisAlignment: CrossAxisAlignment.center, onPressed: () {
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.loadingColor(context)),
).paddingAll(8).onPress(() {
Provider.of<AllRequestsProvider>(context, listen: false).searchedModel = null;
setState(() { setState(() {
search?.statuses?.clear(); search?.statuses?.clear();
search?.typeTransaction?.clear(); search?.typeTransaction?.clear();
@ -156,9 +150,13 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
search?.endDate = null; search?.endDate = null;
search?.isArchived = false; search?.isArchived = false;
}); });
}), },
], style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap),
) child: Text(
'Clear Filters',
style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10),
),
).paddingOnly(start: 16, end: 16)
], ],
), ),
body: Column( body: Column(
@ -168,7 +166,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
"WO Status".heading5(context), "WO Status".heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
RequestsTypeFilter( RequestsTypeFilter(
initialValues: search?.statuses ?? [], initialValues: search?.statuses ?? [],
@ -185,7 +183,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
}, },
), ),
16.height, 16.height,
"Type of WO".heading5(context), "Type of WO".heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
RequestsTypeFilter( RequestsTypeFilter(
initialValues: search?.typeTransaction ?? [], initialValues: search?.typeTransaction ?? [],
@ -196,7 +194,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
}, },
), ),
16.height, 16.height,
context.translation.pickDate.heading5(context), context.translation.pickDate.heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
Row( Row(
children: [ children: [
@ -228,7 +226,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
], ],
), ),
16.height, 16.height,
// "Archived WO".heading5(context), // "Archived WO".heading5(context).custom(color: AppColor.textStyleColor(context)),
// // 8.height, // // 8.height,
// Row( // Row(
// children: [ // children: [

@ -186,6 +186,7 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
body: Consumer<AllRequestsProvider>(builder: (context, snapshot, _) { body: Consumer<AllRequestsProvider>(builder: (context, snapshot, _) {
return Column( return Column(
children: [ children: [
if (!_filterIsEmpty()) _buildActiveFiltersChips(),
if (_filterIsEmpty()) if (_filterIsEmpty())
SizedBox( SizedBox(
height: 50.toScreenHeight, height: 50.toScreenHeight,
@ -254,12 +255,333 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
(_search!.manufacture?.value?.isNotEmpty ?? false) || (_search!.manufacture?.value?.isNotEmpty ?? false) ||
(_search!.sn?.value?.isNotEmpty ?? false) || (_search!.sn?.value?.isNotEmpty ?? false) ||
(_search!.statuses?.isNotEmpty ?? false) || (_search!.statuses?.isNotEmpty ?? false) ||
(_search!.typeTransaction?.isNotEmpty ?? false) ||
(_search!.startDate != null) || (_search!.startDate != null) ||
(_search!.endDate != null)) { (_search!.endDate != null) ||
(_search!.selectedSortOption?.isNotEmpty ?? false)) {
return false; return false;
} }
return true; return true;
} }
Widget _buildActiveFiltersChips() {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
decoration: BoxDecoration(
color: AppColor.background(context),
border: Border(
bottom: BorderSide(color: AppColor.borderColor(context), width: 1),
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Active Filters',
style: AppTextStyles.tinyFont2.copyWith(color: AppColor.labelTextStyleColor(context), fontWeight: FontWeight.w600),
),
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
spacing: 16,
children: [
SizedBox(
height: 40.toScreenHeight,
child: ListView.separated(
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.only(top: 8, right: 0, left: 0, bottom: 0),
itemBuilder: (cxt, index) => _getActiveFilterChips()[index],
separatorBuilder: (cxt, index) => 8.width,
itemCount: _getActiveFilterChips().length),
).expanded,
TextButton(
onPressed: _clearAllFilters,
style: TextButton.styleFrom(padding: EdgeInsets.zero, tapTargetSize: MaterialTapTargetSize.shrinkWrap),
child: Text(
'Clear Filters',
style: AppTextStyles.tinyFont.copyWith(color: AppColor.primary10, fontWeight: FontWeight.w500),
),
),
],
)
],
),
);
}
List<Widget> _getActiveFilterChips() {
List<Widget> chips = [];
// Request Number
if (_search?.requestNumber?.value?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.woNumber}: ${_search!.requestNumber!.value}',
onDelete: () {
setState(() {
_search!.requestNumber!.value = null;
_search!.requestNumber!.controller?.clear();
_refreshWithFilters();
});
},
));
}
// Asset Name
if (_search?.assetName?.value?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.assetName}: ${_search!.assetName!.value}',
onDelete: () {
setState(() {
_search!.assetName!.value = null;
_search!.assetName!.controller?.clear();
_refreshWithFilters();
});
},
));
}
// Asset Number
if (_search?.assetNo?.value?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.assetNo}: ${_search!.assetNo!.value}',
onDelete: () {
setState(() {
_search!.assetNo!.value = null;
_search!.assetNo!.controller?.clear();
_refreshWithFilters();
});
},
));
}
// Manufacturer
if (_search?.manufacture?.value?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.manufacture}: ${_search!.manufacture!.value}',
onDelete: () {
setState(() {
_search!.manufacture!.value = null;
_search!.manufacture!.controller?.clear();
_refreshWithFilters();
});
},
));
}
// Serial Number
if (_search?.sn?.value?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.sn}: ${_search!.sn!.value}',
onDelete: () {
setState(() {
_search!.sn!.value = null;
_search!.sn!.controller?.clear();
_refreshWithFilters();
});
},
));
}
// Model
if (_search?.model?.value?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.model}: ${_search!.model!.value}',
onDelete: () {
setState(() {
_search!.model!.value = null;
_search!.model!.controller?.clear();
_refreshWithFilters();
});
},
));
}
// Statuses
if (_search?.statuses?.isNotEmpty ?? false) {
for (var statusId in _search!.statuses!) {
String statusName = _getStatusName(statusId);
chips.add(_buildFilterChip(
label: 'Status: $statusName',
onDelete: () {
setState(() {
_search!.statuses!.remove(statusId);
_refreshWithFilters();
});
},
));
}
}
// Type Transactions
if (_search?.typeTransaction?.isNotEmpty ?? false) {
for (var typeId in _search!.typeTransaction!) {
String typeName = _getTypeName(typeId);
chips.add(_buildFilterChip(
label: 'Type: $typeName',
onDelete: () {
setState(() {
_search!.typeTransaction!.remove(typeId);
_refreshWithFilters();
});
},
));
}
}
// Date Range
if (_search?.startDate != null || _search?.endDate != null) {
String dateLabel = 'Date: ';
if (_search!.startDate != null && _search!.endDate != null) {
dateLabel += '${_formatDate(_search!.startDate!)} - ${_formatDate(_search!.endDate!)}';
} else if (_search!.startDate != null) {
dateLabel += 'From ${_formatDate(_search!.startDate!)}';
} else if (_search!.endDate != null) {
dateLabel += 'To ${_formatDate(_search!.endDate!)}';
}
chips.add(_buildFilterChip(
label: dateLabel,
onDelete: () {
setState(() {
_search!.startDate = null;
_search!.endDate = null;
_refreshWithFilters();
});
},
));
}
// Sort Option
if (_search?.selectedSortOption?.isNotEmpty ?? false) {
String sortLabel = 'Sort: ${_getSortLabel(_search!.selectedSortOption!)}';
chips.add(_buildFilterChip(
label: sortLabel,
showDelete: false,
));
}
return chips;
}
Widget _buildFilterChip({required String label, VoidCallback? onDelete, bool showDelete = true}) {
return Theme(
data: Theme.of(context).copyWith(splashColor: Colors.transparent, highlightColor: Colors.transparent),
child: Chip(
backgroundColor: AppColor.backgroundTabBarColor(context),
side: BorderSide(color: AppColor.border2Color(context)),
label: Text(label),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),
labelStyle: AppTextStyles.tinyFont2.copyWith(color: AppColor.labelTextStyleColor(context)),
deleteIconColor: showDelete ? AppColor.icon2Color(context) : null,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
onDeleted: showDelete ? onDelete : null,
),
);
}
String _getStatusName(int statusId) {
switch (statusId) {
case 0:
return "All WO";
case 1:
return context.translation.open;
case 2:
return context.translation.inProgress;
case 3:
return context.translation.closed;
case 4:
return context.translation.completed;
case 5:
return "Canceled";
default:
return "Status $statusId";
}
}
String _getTypeName(int typeId) {
switch (typeId) {
case 1:
return context.translation.correctiveMaintenance;
case 2:
return context.translation.gasRefill;
case 3:
return context.translation.transferAsset;
case 4:
return context.translation.preventiveMaintenance;
case 5:
return context.translation.recurrentWo;
case 6:
return context.translation.taskRequest;
case 7:
return 'Recall and Alert';
case 8:
return 'Asset Inventory';
case 9:
return 'TRAF';
case 10:
return 'Equipment Internal Audit';
case 11:
return 'System Internal Audit';
case 12:
return 'Loan Equipment';
case 13:
return 'Asset Delivery';
case 14:
return 'Medical Gas Inspection';
case 15:
return 'Demo';
case 16:
return 'Incidents';
default:
return "Type $typeId";
}
}
String _formatDate(DateTime date) {
return '${date.day}/${date.month}/${date.year}';
}
String _getSortLabel(String sortOption) {
switch (sortOption.toLowerCase()) {
case 'ascending':
return 'Ascending';
case 'descending':
return 'Descending';
default:
return sortOption;
}
}
void _clearAllFilters() {
setState(() {
_search?.requestNumber?.value = null;
_search?.requestNumber?.controller?.clear();
_search?.assetName?.value = null;
_search?.assetName?.controller?.clear();
_search?.assetNo?.value = null;
_search?.assetNo?.controller?.clear();
_search?.manufacture?.value = null;
_search?.manufacture?.controller?.clear();
_search?.sn?.value = null;
_search?.sn?.controller?.clear();
_search?.model?.value = null;
_search?.model?.controller?.clear();
_search?.statuses?.clear();
_search?.typeTransaction?.clear();
_search?.startDate = null;
_search?.endDate = null;
_search?.isArchived = false;
_search?.selectedSortOption = null;
_search = null; // Clear the entire search object
_provider?.searchedModel = null;
_refreshWithFilters();
});
}
void _refreshWithFilters() {
_provider?.reset();
_provider?.getAllRequests(context, typeTransaction: requestsList[selectedRequest].id, search: _search);
}
} }
class Request { class Request {

@ -6,6 +6,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import '../../controllers/providers/api/user_provider.dart'; import '../../controllers/providers/api/user_provider.dart';
@ -31,7 +32,7 @@ class ReportBugPage extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
user.clientName!.heading5(context), user.clientName!.heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
"Call ID: ${0}".bodyText(context), "Call ID: ${0}".bodyText(context),
"Date of Survey: ${DateFormat("dd MMM, yyyy").format(DateTime.now())}".bodyText(context), "Date of Survey: ${DateFormat("dd MMM, yyyy").format(DateTime.now())}".bodyText(context),

@ -105,7 +105,7 @@ class _SettingsPageState extends State<SettingsPage> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
context.translation.arabic.heading5(context), context.translation.arabic.heading5(context).custom(color: AppColor.textStyleColor(context)),
AdvancedSwitch( AdvancedSwitch(
controller: langController, controller: langController,
activeColor: AppColor.green50.withOpacity(0.5), activeColor: AppColor.green50.withOpacity(0.5),
@ -127,7 +127,7 @@ class _SettingsPageState extends State<SettingsPage> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
context.translation.lightTheme.heading5(context), context.translation.lightTheme.heading5(context).custom(color: AppColor.textStyleColor(context)),
AdvancedSwitch( AdvancedSwitch(
controller: themeController, controller: themeController,
activeColor: AppColor.green50.withOpacity(0.5), activeColor: AppColor.green50.withOpacity(0.5),
@ -158,7 +158,7 @@ class _SettingsPageState extends State<SettingsPage> {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"Fingerprint/Face ID".heading5(context), "Fingerprint/Face ID".heading5(context).custom(color: AppColor.textStyleColor(context)),
customSwitch(localAuth).onPress(() { customSwitch(localAuth).onPress(() {
checkForLocalAuth(localAuth); checkForLocalAuth(localAuth);
}), }),

@ -32,7 +32,7 @@ class _UnsafeDeviceScreenState extends State<UnsafeDeviceScreen> {
// Center(child: Image.asset("assets/images/logos/main_mohemm_logo.png", width: 200, height: 50)), // Center(child: Image.asset("assets/images/logos/main_mohemm_logo.png", width: 200, height: 50)),
"logo".toSvgAsset(height: 64), "logo".toSvgAsset(height: 64),
50.height, 50.height,
"Sorry".heading5(context), "Sorry".heading5(context).custom(color: AppColor.textStyleColor(context)),
21.height, 21.height,
"You are using Atoms app on an unsafe device. To be able to use the app with all it's features, Please make sure that the below points are considered: " "You are using Atoms app on an unsafe device. To be able to use the app with all it's features, Please make sure that the below points are considered: "
.heading5(context).paddingOnly(start: 20, end: 20), .heading5(context).paddingOnly(start: 20, end: 20),

@ -144,7 +144,7 @@
// mainAxisSize: MainAxisSize.min, // mainAxisSize: MainAxisSize.min,
// children: [ // children: [
// 20.height, // 20.height,
// 'click me '.heading5(context), // 'click me '.heading5(context).custom(color: AppColor.textStyleColor(context)),
// // LocaleKeys.markAttendance.tr().toSectionHeading(), // // LocaleKeys.markAttendance.tr().toSectionHeading(),
// // LocaleKeys.selectMethodOfAttendance.tr().toText11(color: const Color(0xff535353)), // // LocaleKeys.selectMethodOfAttendance.tr().toText11(color: const Color(0xff535353)),
// GridView( // GridView(

@ -29,7 +29,7 @@ class NotificationsList extends StatelessWidget {
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
itemCount: notifications.length, itemCount: notifications.length,
separatorBuilder: (context, itemIndex) => const Divider().defaultStyle(context).paddingOnly(top: 16, bottom: 16), separatorBuilder: (context, itemIndex) => const Divider().defaultStyle(context).paddingOnly(top: 4, bottom: 4),
itemBuilder: (context, itemIndex) { itemBuilder: (context, itemIndex) {
return NotificationItem( return NotificationItem(
notification: notifications[itemIndex], notification: notifications[itemIndex],

@ -163,13 +163,13 @@ class _ProfilePageState extends State<ProfilePage> {
// if ((_user.phoneNumber ?? "").isNotEmpty) ...[ // if ((_user.phoneNumber ?? "").isNotEmpty) ...[
// const Divider().defaultStyle(context), // const Divider().defaultStyle(context),
// 8.height, // 8.height,
// (_user.phoneNumber??"").heading5(context), // (_user.phoneNumber??"").heading5(context).custom(color: AppColor.textStyleColor(context)),
// 8.height, // 8.height,
// ], // ],
// if ((_user.extensionNo ?? "").isNotEmpty) ...[ // if ((_user.extensionNo ?? "").isNotEmpty) ...[
// const Divider().defaultStyle(context), // const Divider().defaultStyle(context),
// 8.height, // 8.height,
// _user.extensionNo!.heading5(context), // _user.extensionNo!.heading5(context).custom(color: AppColor.textStyleColor(context)),
// 8.height, // 8.height,
// ], // ],
if ((_user.departmentName?.length ?? 0) > 0) const Divider().defaultStyle(context), if ((_user.departmentName?.length ?? 0) > 0) const Divider().defaultStyle(context),

@ -291,7 +291,7 @@
// //
// // Align( // // Align(
// // alignment: AlignmentDirectional.centerStart, // // alignment: AlignmentDirectional.centerStart,
// // child: context.translation.callComments.heading5(context), // // child: context.translation.callComments.heading5(context).custom(color: AppColor.textStyleColor(context)),
// // ), // // ),
// 8.height, // 8.height,
// // SpeechToTextButton( // // SpeechToTextButton(

@ -23,7 +23,7 @@ class AssetDetailBottomSheet extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
(asset?.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-").heading5(context), (asset?.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-").heading5(context).custom(color: AppColor.textStyleColor(context)),
16.height, 16.height,
AspectRatio( AspectRatio(
aspectRatio: 358 / 136, aspectRatio: 358 / 136,

@ -96,7 +96,7 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
backgroundColor: AppColor.getRequestStatusColorByName(context, assetModel.commissioningStatus!.name!), backgroundColor: AppColor.getRequestStatusColorByName(context, assetModel.commissioningStatus!.name!),
), ),
if (assetModel.commissioningStatus != null) 8.height, if (assetModel.commissioningStatus != null) 8.height,
(assetModel.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-").heading5(context), (assetModel.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? "-").heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,

@ -5,6 +5,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
import '../../../new_views/app_style/app_color.dart'; import '../../../new_views/app_style/app_color.dart';
@ -41,20 +42,23 @@ class AssetItemGridView extends StatelessWidget {
device.modelDefinition!.assetName!.cleanupWhitespace.capitalizeFirstOfEach, device.modelDefinition!.assetName!.cleanupWhitespace.capitalizeFirstOfEach,
maxLines: 2, maxLines: 2,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), style: AppTextStyles.bodyText.copyWith(color: AppColor.textStyleColor(context)),
), ),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
"${context.translation.assetNumber} : ${device.assetNumber}".bodyText2(context), // "${context.translation.assetNumber} : ${device.assetNumber}".bodyText2(context),
"${context.translation.modelName} : ${device.modelDefinition!.modelName}".cleanupWhitespace.capitalizeFirstOfEach.bodyText2(context), // "${context.translation.modelName} : ${device.modelDefinition!.modelName}".cleanupWhitespace.capitalizeFirstOfEach.bodyText2(context),
Text( // Text(
"${context.translation.serialNo} : ${device.assetSerialNo}", // "${context.translation.serialNo} : ${device.assetSerialNo}",
maxLines: 2, // maxLines: 2,
overflow: TextOverflow.ellipsis, // overflow: TextOverflow.ellipsis,
style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), // style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
).expanded, // ).expanded,
InfoTextWidget(label: context.translation.assetNumber, value: device.assetNumber),
InfoTextWidget(label: context.translation.modelName, value: device.modelDefinition!.modelName),
InfoTextWidget(label: context.translation.serialNo, value: device.assetSerialNo),
], ],
).expanded, ).expanded,
Row( Row(
@ -62,15 +66,15 @@ class AssetItemGridView extends StatelessWidget {
children: [ children: [
Text( Text(
'View Details', 'View Details',
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)), style: AppTextStyles.bodyText2.copyWith(color: AppColor.primary10),
), ),
4.width, 4.width,
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) const Icon(Icons.arrow_forward, color: AppColor.primary10, size: 14)
], ],
), ),
], ],
).expanded ).expanded
], ],
).onPress(() => onPressed(device)).toShadowContainer(context,padding: 12); ).onPress(() => onPressed(device)).toShadowContainer(context);
} }
} }

@ -6,6 +6,8 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/widgets/item_views/info_header_widget.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
class AssetItemListView extends StatelessWidget { class AssetItemListView extends StatelessWidget {
final Asset device; final Asset device;
@ -24,14 +26,14 @@ class AssetItemListView extends StatelessWidget {
width: 95, width: 95,
height: 95, height: 95,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30, color: AppColor.dropDownBackground(context),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10), side: BorderSide(color: AppColor.border2Color(context))),
image: DecorationImage( image: DecorationImage(
fit: BoxFit.cover, fit: BoxFit.cover,
image: NetworkImage(device.assetPhoto != null ? URLs.getFileUrl(device.assetPhoto!)! : "https://www.lasteelcraft.com/images/no-image-available.png"), image: NetworkImage(device.assetPhoto != null ? URLs.getFileUrl(device.assetPhoto!)! : "https://www.lasteelcraft.com/images/no-image-available.png"),
)), )),
), ),
15.width, 12.width,
Column( Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -40,38 +42,33 @@ class AssetItemListView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
device.modelDefinition!.assetName!.cleanupWhitespace.capitalizeFirstOfEach.heading6(context), InfoHeaderWidget(device.modelDefinition!.assetName!.cleanupWhitespace),
8.height, // device.modelDefinition!.assetName!.cleanupWhitespace.capitalizeFirstOfEach.heading6(context),
"${context.translation.assetNumber} : ${device.assetNumber}".bodyText(context), 4.height,
"${context.translation.modelName} : ${device.modelDefinition!.modelName}".cleanupWhitespace.capitalizeFirstOfEach.bodyText(context), InfoTextWidget(label: context.translation.assetNumber, value: device.assetNumber),
InfoTextWidget(label: context.translation.modelName, value: device.modelDefinition!.modelName),
InfoTextWidget(label: context.translation.serialNo, value: device.assetSerialNo),
// "${context.translation.assetNumber} : ${device.assetNumber}".bodyText(context),
// "${context.translation.modelName} : ${device.modelDefinition!.modelName}".cleanupWhitespace.capitalizeFirstOfEach.bodyText(context),
], ],
), ),
Row( Align(
crossAxisAlignment: CrossAxisAlignment.end, alignment: Alignment.bottomRight,
children: [ child: selectButton ??
"${context.translation.serialNo} : ${device.assetSerialNo}".bodyText(context).expanded,
4.width,
selectButton ??
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(
context.translation.viewDetails, context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
), ),
4.width, 4.width,
Icon( const Icon(Icons.arrow_forward, color: AppColor.primary10, size: 14)
Icons.arrow_forward,
color: AppColor.blueStatus(context),
size: 14,
)
],
),
], ],
) ))
], ],
).expanded ).expanded
], ],
).toShadowContainer(context, padding: 12, borderColor: isSelected ? AppColor.blueStatus(context) : Colors.transparent).onPress(() => onPressed(device)); ).toShadowContainer(context, borderColor: isSelected ? AppColor.primary10 : Colors.transparent).onPress(() => onPressed(device));
} }
} }

@ -199,11 +199,7 @@ class AssetPicker extends StatelessWidget {
}), }),
if (multiSelection) ...[ if (multiSelection) ...[
4.width, 4.width,
const Icon( "delete".toSvgAsset().onPress(() {
Icons.delete_rounded,
color: Color(0xffF63939),
size: 20,
).onPress(() {
onAssetRemove!(device.id!.toInt()); onAssetRemove!(device.id!.toInt());
}), }),
] ]

@ -10,17 +10,17 @@ import '../../../models/lookup.dart';
import '../../../new_views/app_style/app_color.dart'; import '../../../new_views/app_style/app_color.dart';
import '../../../providers/service_request_providers/commissioning_status_provider.dart'; import '../../../providers/service_request_providers/commissioning_status_provider.dart';
class CommissioningStatusButtons extends StatefulWidget { class AssetStatusButtons extends StatefulWidget {
final Function(Lookup?)? onSelect; final Function(Lookup?)? onSelect;
final Lookup? initialValue; final Lookup? initialValue;
const CommissioningStatusButtons({Key? key, this.onSelect, this.initialValue}) : super(key: key); const AssetStatusButtons({Key? key, this.onSelect, this.initialValue}) : super(key: key);
@override @override
State<CommissioningStatusButtons> createState() => _CommissioningStatusButtonsState(); State<AssetStatusButtons> createState() => _AssetStatusButtonsState();
} }
class _CommissioningStatusButtonsState extends State<CommissioningStatusButtons> { class _AssetStatusButtonsState extends State<AssetStatusButtons> {
int _selectedIndex = 0; int _selectedIndex = 0;
@override @override
@ -36,7 +36,7 @@ class _CommissioningStatusButtonsState extends State<CommissioningStatusButtons>
} }
@override @override
void didUpdateWidget(covariant CommissioningStatusButtons oldWidget) { void didUpdateWidget(covariant AssetStatusButtons oldWidget) {
if (widget.initialValue != oldWidget.initialValue) { if (widget.initialValue != oldWidget.initialValue) {
final provider = Provider.of<CommissioningStatusProvider>(context, listen: false); final provider = Provider.of<CommissioningStatusProvider>(context, listen: false);
if (widget.initialValue != null) { if (widget.initialValue != null) {
@ -54,7 +54,7 @@ class _CommissioningStatusButtonsState extends State<CommissioningStatusButtons>
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
context.translation.assetStatus.heading5(context).paddingOnly(start: 16, end: 16), context.translation.assetStatus.heading5(context).custom(color: AppColor.textStyleColor(context)),
8.height, 8.height,
Consumer<CommissioningStatusProvider>( Consumer<CommissioningStatusProvider>(
builder: (context, snapshot, _) { builder: (context, snapshot, _) {
@ -69,17 +69,18 @@ class _CommissioningStatusButtonsState extends State<CommissioningStatusButtons>
8.width, 8.width,
const _Skelton().expanded, const _Skelton().expanded,
], ],
).paddingOnly(start: 16, end: 16), ),
) )
: SizedBox( : SizedBox(
height: 36.toScreenHeight, height: 36.toScreenHeight,
child: ListView.builder( child: ListView.separated(
itemCount: snapshot.items.length + 1, itemCount: snapshot.items.length + 1,
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
shrinkWrap: true, shrinkWrap: true,
padding: EdgeInsetsDirectional.only(start: 16.toScreenWidth), padding: EdgeInsetsDirectional.only(start: 0.toScreenWidth),
separatorBuilder: (cxt, index) => 8.width,
itemBuilder: (context, index) => Container( itemBuilder: (context, index) => Container(
margin: EdgeInsets.symmetric(horizontal: 4.toScreenWidth), margin: EdgeInsets.symmetric(horizontal: 0.toScreenWidth),
padding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: 12.toScreenWidth), padding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: 12.toScreenWidth),
alignment: Alignment.center, alignment: Alignment.center,
// foregroundDecoration: _selectedIndex != index // foregroundDecoration: _selectedIndex != index
@ -104,8 +105,7 @@ class _CommissioningStatusButtonsState extends State<CommissioningStatusButtons>
// color: AppColor.filterButtonTextColor(context) // color: AppColor.filterButtonTextColor(context)
color: _selectedIndex == index ? AppColor.primary10 : AppColor.filterButtonTextColor(context) color: _selectedIndex == index ? AppColor.primary10 : AppColor.filterButtonTextColor(context)),
),
).onPress(() { ).onPress(() {
setState(() { setState(() {
_selectedIndex = index; _selectedIndex = index;

@ -94,7 +94,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
Navigator.of(context).pop(); Navigator.of(context).pop();
}), }),
Container( Container(
height: 40, height: 40.toScreenHeight,
padding: const EdgeInsets.only(left: 16, right: 8), padding: const EdgeInsets.only(left: 16, right: 8),
alignment: Alignment.center, alignment: Alignment.center,
decoration: ShapeDecoration( decoration: ShapeDecoration(
@ -169,6 +169,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
}, },
child: Column( child: Column(
children: [ children: [
if (!_filterIsEmpty()) _buildActiveFiltersChips(),
Expanded( Expanded(
child: _searchableList.isEmpty child: _searchableList.isEmpty
? NoDataFound(message: context.translation.noDeviceFound).center ? NoDataFound(message: context.translation.noDeviceFound).center
@ -192,7 +193,7 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
? ListView.separated( ? ListView.separated(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
itemCount: _searchableList.length, itemCount: _searchableList.length,
separatorBuilder: (listContext, itemIndex) => 8.height, separatorBuilder: (listContext, itemIndex) => 12.height,
itemBuilder: (listContext, itemIndex) { itemBuilder: (listContext, itemIndex) {
return AssetItemListView( return AssetItemListView(
device: _searchableList[itemIndex], device: _searchableList[itemIndex],
@ -237,4 +238,314 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
), ),
); );
} }
bool _filterIsEmpty() {
if (_searchAsset == null) return true;
if ((_searchAsset!.assetName?.isNotEmpty ?? false) ||
(_searchAsset!.assetNo?.isNotEmpty ?? false) ||
(_searchAsset!.assetSerialNumber?.isNotEmpty ?? false) ||
(_searchAsset!.model?.isNotEmpty ?? false) ||
(_searchAsset!.supplier?.isNotEmpty ?? false) ||
(_searchAsset!.site?.isNotEmpty ?? false) ||
(_searchAsset!.manufacturer?.isNotEmpty ?? false) ||
(_searchAsset!.modelDefinition?.isNotEmpty ?? false) ||
(_searchAsset!.departments?.isNotEmpty ?? false) ||
(_searchAsset!.sites?.isNotEmpty ?? false) ||
(_searchAsset!.assetStatus != null) ||
(_searchAsset!.supplyDateFrom != null) ||
(_searchAsset!.supplyDateTo != null)) {
return false;
}
return true;
}
Widget _buildActiveFiltersChips() {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
decoration: BoxDecoration(
color: AppColor.background(context),
border: Border(
bottom: BorderSide(color: AppColor.borderColor(context), width: 1),
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Active Filters',
style: AppTextStyles.tinyFont2.copyWith(
color: AppColor.labelTextStyleColor(context),
fontWeight: FontWeight.w600,
),
),
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
spacing: 16,
children: [
SizedBox(
height: 40.toScreenHeight,
child: ListView.separated(
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.only(top: 8, right: 0, left: 0, bottom: 0),
itemBuilder: (cxt, index) => _getActiveFilterChips()[index],
separatorBuilder: (cxt, index) => 8.width,
itemCount: _getActiveFilterChips().length,
),
).expanded,
TextButton(
onPressed: _clearAllFilters,
style: TextButton.styleFrom(
padding: EdgeInsets.zero,
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
),
child: Text(
'Clear Filters',
style: AppTextStyles.tinyFont.copyWith(
color: AppColor.primary10,
fontWeight: FontWeight.w500,
),
),
),
],
)
],
),
);
}
List<Widget> _getActiveFilterChips() {
List<Widget> chips = [];
// Asset Name
if (_searchAsset?.assetName?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.assetName}: ${_searchAsset!.assetName}',
onDelete: () {
setState(() {
_searchAsset!.assetName = null;
_refreshWithFilters();
});
},
));
}
// Asset Number
if (_searchAsset?.assetNo?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.assetNumber}: ${_searchAsset!.assetNo}',
onDelete: () {
setState(() {
_searchAsset!.assetNo = null;
_refreshWithFilters();
});
},
));
}
// Serial Number
if (_searchAsset?.assetSerialNumber?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.snNumber}: ${_searchAsset!.assetSerialNumber}',
onDelete: () {
setState(() {
_searchAsset!.assetSerialNumber = null;
_refreshWithFilters();
});
},
));
}
// Model
if (_searchAsset?.model?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.model}: ${_searchAsset!.model}',
onDelete: () {
setState(() {
_searchAsset!.model = null;
_refreshWithFilters();
});
},
));
}
// Supplier
if (_searchAsset?.supplier?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.supplier}: ${_searchAsset!.supplier}',
onDelete: () {
setState(() {
_searchAsset!.supplier = null;
_refreshWithFilters();
});
},
));
}
// Site (single)
if (_searchAsset?.site?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.site}: ${_searchAsset!.site}',
onDelete: () {
setState(() {
_searchAsset!.site = null;
_refreshWithFilters();
});
},
));
}
// Manufacturer
if (_searchAsset?.manufacturer?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.manufacture}: ${_searchAsset!.manufacturer}',
onDelete: () {
setState(() {
_searchAsset!.manufacturer = null;
_refreshWithFilters();
});
},
));
}
// Model Definition
if (_searchAsset?.modelDefinition?.isNotEmpty ?? false) {
chips.add(_buildFilterChip(
label: '${context.translation.md}: ${_searchAsset!.modelDefinition}',
onDelete: () {
setState(() {
_searchAsset!.modelDefinition = null;
_refreshWithFilters();
});
},
));
}
// Asset Status (Commissioning Status)
if (_searchAsset?.assetStatus != null) {
chips.add(_buildFilterChip(
label: 'Status: ${_searchAsset!.assetStatus!.name ?? 'Unknown'}',
onDelete: () {
setState(() {
_searchAsset!.assetStatus = null;
_refreshWithFilters();
});
},
));
}
// Departments (multiple)
if (_searchAsset?.departments?.isNotEmpty ?? false) {
for (var dept in _searchAsset!.departments!) {
chips.add(_buildFilterChip(
label: '${context.translation.byDepartment}: $dept',
onDelete: () {
setState(() {
_searchAsset!.departments!.remove(dept);
_refreshWithFilters();
});
},
));
}
}
// Sites (multiple)
if (_searchAsset?.sites?.isNotEmpty ?? false) {
for (var site in _searchAsset!.sites!) {
chips.add(_buildFilterChip(
label: '${context.translation.bySite}: $site',
onDelete: () {
setState(() {
_searchAsset!.sites!.remove(site);
_refreshWithFilters();
});
},
));
}
}
// Date Range
if (_searchAsset?.supplyDateFrom != null || _searchAsset?.supplyDateTo != null) {
String dateLabel = 'Supply Date: ';
if (_searchAsset!.supplyDateFrom != null && _searchAsset!.supplyDateTo != null) {
dateLabel += '${_formatDate(_searchAsset!.supplyDateFrom!)} - ${_formatDate(_searchAsset!.supplyDateTo!)}';
} else if (_searchAsset!.supplyDateFrom != null) {
dateLabel += 'From ${_formatDate(_searchAsset!.supplyDateFrom!)}';
} else if (_searchAsset!.supplyDateTo != null) {
dateLabel += 'To ${_formatDate(_searchAsset!.supplyDateTo!)}';
}
chips.add(_buildFilterChip(
label: dateLabel,
onDelete: () {
setState(() {
_searchAsset!.supplyDateFrom = null;
_searchAsset!.supplyDateTo = null;
_refreshWithFilters();
});
},
));
}
return chips;
}
Widget _buildFilterChip({required String label, required VoidCallback onDelete}) {
return Theme(
data: Theme.of(context).copyWith(
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
),
child: Chip(
backgroundColor: AppColor.backgroundTabBarColor(context),
side: BorderSide(color: AppColor.border2Color(context)),
label: Text(label),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30.0),
),
labelStyle: AppTextStyles.tinyFont2.copyWith(
color: AppColor.labelTextStyleColor(context),
),
deleteIconColor: AppColor.icon2Color(context),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
onDeleted: onDelete,
),
);
}
String _formatDate(String dateString) {
try {
final date = DateTime.parse(dateString);
return '${date.day}/${date.month}/${date.year}';
} catch (e) {
return dateString;
}
}
void _clearAllFilters() {
setState(() {
_searchAsset?.assetName = null;
_searchAsset?.assetNo = null;
_searchAsset?.assetSerialNumber = null;
_searchAsset?.model = null;
_searchAsset?.supplier = null;
_searchAsset?.site = null;
_searchAsset?.manufacturer = null;
_searchAsset?.modelDefinition = null;
_searchAsset?.assetStatus = null;
_searchAsset?.departments?.clear();
_searchAsset?.sites?.clear();
_searchAsset?.supplyDateFrom = null;
_searchAsset?.supplyDateTo = null;
_searchAsset = null;
_refreshWithFilters();
});
}
void _refreshWithFilters() {
_devicesProvider.reset();
_devicesProvider.getAssets(search: _searchAsset);
_searchableList.clear();
_searchableList.addAll(_devicesProvider.devices);
}
} }

@ -3,7 +3,7 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; import 'package:test_sa/views/widgets/equipment/my_assets_page.dart';
import '../../../models/device/asset.dart'; import '../../../models/device/asset.dart';
import '../../../new_views/app_style/app_color.dart'; import '../../../new_views/app_style/app_color.dart';

@ -54,7 +54,7 @@ class _SelectionBottomSheetState<T extends Base> extends State<MultipleSelection
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: widget.title.heading5(context), title: widget.title.heading5(context).custom(color: AppColor.textStyleColor(context)),
actions: [ actions: [
if (widget.showCancel) if (widget.showCancel)
AnimatedContainer( AnimatedContainer(
@ -133,23 +133,16 @@ class _SelectionBottomSheetState<T extends Base> extends State<MultipleSelection
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
itemBuilder: (cxt, index) { itemBuilder: (cxt, index) {
bool isDisabledItem = widget.disableItem != null && widget.disableItem?.identifier == filteredList![index].identifier; bool isDisabledItem = widget.disableItem != null && widget.disableItem?.identifier == filteredList![index].identifier;
return Theme( return CheckboxListTile(
data: Theme.of(context).copyWith(
checkboxTheme: CheckboxThemeData(
fillColor: MaterialStateColor.resolveWith((states) {
if (states.contains(MaterialState.selected)) {
return AppColor.iconColor(context); // Active color
}
return Colors.grey; // Inactive color
}),
),
),
child: CheckboxListTile(
value: checkItContains(filteredList![index]), value: checkItContains(filteredList![index]),
dense: true, dense: true,
controlAffinity: ListTileControlAffinity.leading, controlAffinity: ListTileControlAffinity.leading,
activeColor: AppColor.iconColor(context), activeColor: AppColor.primary10,
checkColor: AppColor.white10,
// fillColor: WidgetStateProperty.all(AppColor.background(context)),
contentPadding: const EdgeInsets.only(left: 16, right: 16), contentPadding: const EdgeInsets.only(left: 16, right: 16),
// activeColor: AppColor.blueStatus(context),
side: BorderSide(color: AppColor.icon2Color(context).withValues(alpha: .3), width: 1.0),
onChanged: (value) { onChanged: (value) {
// if (checkItContains(filteredList![index]) ?? false) { // if (checkItContains(filteredList![index]) ?? false) {
// _selectedValue.remove(filteredList![index]); // _selectedValue.remove(filteredList![index]);
@ -168,7 +161,6 @@ class _SelectionBottomSheetState<T extends Base> extends State<MultipleSelection
widget.builderString(filteredList![index]).cleanupWhitespace.capitalizeFirstOfEach ?? "", widget.builderString(filteredList![index]).cleanupWhitespace.capitalizeFirstOfEach ?? "",
style: Theme.of(context).textTheme.bodyLarge, style: Theme.of(context).textTheme.bodyLarge,
), ),
),
); );
}), }),
), ),

@ -51,7 +51,7 @@ class _SelectionBottomSheetState<T extends Base> extends State<SelectionFullScre
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: widget.title.heading5(context), title: widget.title.heading5(context).custom(color: AppColor.textStyleColor(context)),
actions: [ actions: [
if (widget.showCancel) if (widget.showCancel)
AnimatedContainer( AnimatedContainer(
@ -135,9 +135,9 @@ class _SelectionBottomSheetState<T extends Base> extends State<SelectionFullScre
radioTheme: RadioThemeData( radioTheme: RadioThemeData(
fillColor: MaterialStateColor.resolveWith((states) { fillColor: MaterialStateColor.resolveWith((states) {
if (states.contains(MaterialState.selected)) { if (states.contains(MaterialState.selected)) {
return AppColor.iconColor(context); // Active color return AppColor.primary10; // Active color
} }
return Colors.grey; // Inactive color return AppColor.icon2Color(context).withValues(alpha: .5);
}), }),
), ),
), ),
@ -147,7 +147,10 @@ class _SelectionBottomSheetState<T extends Base> extends State<SelectionFullScre
dense: true, dense: true,
contentPadding: const EdgeInsets.only(left: 16, right: 16), contentPadding: const EdgeInsets.only(left: 16, right: 16),
groupValue: _selectedValue, groupValue: _selectedValue,
activeColor: AppColor.iconColor(context), // activeColor: AppColor.iconColor(context),
// activeColor: AppColor.primary10,colo
// checkColor: AppColor.white10,
hoverColor: Colors.transparent, hoverColor: Colors.transparent,
onChanged: isDisabledItem onChanged: isDisabledItem
? null ? null

@ -8,16 +8,18 @@ class InfoTextWidget extends StatelessWidget {
final String label; final String label;
final bool showEmptyValue; final bool showEmptyValue;
final bool showArrow; final bool showArrow;
final bool isMsg;
InfoTextWidget({required this.label, this.value, this.showEmptyValue = false, this.showArrow = false, Key? key}) : super(key: key); InfoTextWidget({required this.label, this.value, this.showEmptyValue = false, this.showArrow = false, this.isMsg = false, Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Widget text; Widget text;
String aLabel = label + (isMsg ? "" : ":");
if (showEmptyValue) { if (showEmptyValue) {
text = Text('$label: ${value ?? ""}', style: AppTextStyles.bodyText2.copyWith(color: AppColor.lightTextColor(context))); text = Text('$aLabel ${value ?? ""}', style: AppTextStyles.bodyText2.copyWith(color: AppColor.lightTextColor(context)));
} else if (value?.isNotEmpty ?? false) { } else if (value?.isNotEmpty ?? false) {
text = Text('$label: $value', style: AppTextStyles.bodyText2.copyWith(color: AppColor.lightTextColor(context))); text = Text('$aLabel $value', style: AppTextStyles.bodyText2.copyWith(color: AppColor.lightTextColor(context)));
} else { } else {
text = const SizedBox(); text = const SizedBox();
} }

@ -6,15 +6,18 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/system_notification_model.dart'; import 'package:test_sa/models/system_notification_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/widgets/item_views/info_date_widget.dart';
import 'package:test_sa/views/widgets/item_views/info_header_widget.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
class NotificationItem extends StatelessWidget { class NotificationItem extends StatelessWidget {
final SystemNotificationModel notification; final SystemNotificationModel notification;
final Function(SystemNotificationModel) onPressed; final Function(SystemNotificationModel) onPressed;
final bool isLoading; bool isLoading;
const NotificationItem({Key? key, required this.notification, required this.onPressed, this.isLoading = false}) : super(key: key); NotificationItem({Key? key, required this.notification, required this.onPressed, this.isLoading = false}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -42,28 +45,12 @@ class NotificationItem extends StatelessWidget {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( InfoHeaderWidget(notification.title ?? "").toShimmer(isShow: isLoading, context: context).expanded,
notification.title ?? "",
style: AppTextStyles.heading6.copyWith(
color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,
),
).toShimmer(isShow: isLoading, context: context).expanded,
8.width, 8.width,
Text( if (notification.createdOn?.isNotEmpty ?? false) InfoDateWidget(notification.createdOn!).toShimmer(isShow: isLoading, context: context),
notification.createdOn?.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.right,
style: AppTextStyles.tinyFont.copyWith(
color: context.isDark ? AppColor.neutral20 : AppColor.neutral50,
),
).toShimmer(isShow: isLoading, context: context),
], ],
), ),
Text( InfoTextWidget(label: notification.text ?? "", isMsg: true, showEmptyValue: true).toShimmer(isShow: isLoading, context: context),
notification.text ?? "",
style: AppTextStyles.bodyText2.copyWith(
color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575),
),
).toShimmer(isShow: isLoading, context: context),
], ],
).onPress(() { ).onPress(() {
onPressed(notification); onPressed(notification);

@ -278,7 +278,7 @@ class _AppTimerState extends State<AppTimer> {
], ],
).expanded, ).expanded,
8.width, 8.width,
const Icon(Icons.delete_rounded, size: 20, color: Color(0xffF63939)).onPress(() { "delete".toSvgAsset().onPress(() {
deletePickerTime(); deletePickerTime();
}) })
], ],

Loading…
Cancel
Save