Merge branch 'master' of http://34.17.52.180/Haroon6138/HMG_Patient_App_New into dev_sultan
# Conflicts: # lib/presentation/insurance/insurance_home_page.dartpull/14/head
						commit
						7919d40f65
					
				| @ -0,0 +1,4 @@ | ||||
| <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
| <path d="M8.26704 17.0625C7.11121 17.0625 5.9391 17.0625 5.2024 16.9854C4.44534 16.9062 3.79943 16.7389 3.24085 16.3439C2.94808 16.1369 2.68667 15.8903 2.46528 15.6109C2.03791 15.0716 1.85547 14.4432 1.76989 13.7132C1.68747 13.0102 1.68748 12.1307 1.6875 11.0446L1.6875 9.10701C1.6875 8.04332 1.6875 7.20881 1.73189 6.53328C1.77708 5.84565 1.87048 5.27212 2.08131 4.73815C2.71386 3.1361 4.04416 1.88905 5.70916 1.30241C6.74599 0.937106 8.01098 0.937263 10.1407 0.937534C11.3069 0.937127 12.411 0.936836 13.0551 1.16377C14.0875 1.52753 14.9188 2.30323 15.3154 3.30771C15.4529 3.65583 15.5096 4.02009 15.5365 4.42856C15.5625 4.82499 15.5625 5.31066 15.5625 5.91003V8.26973C15.5625 8.67305 15.2355 9 14.8322 9C14.4289 9 14.102 8.67305 14.102 8.26973V5.93492C14.102 5.30472 14.1016 4.86751 14.0791 4.52501C14.057 4.18904 14.0159 3.99523 13.9576 3.84775C13.7251 3.25872 13.2258 2.77749 12.5713 2.5469C12.1938 2.41389 11.6935 2.40342 10.3179 2.40342C10.0943 2.40342 9.82675 2.4043 9.57313 2.40544C9.31951 2.40659 8.90446 2.40846 8.55785 2.61013C8.3293 2.74312 8.16373 2.89454 8.06871 3.05998C7.9057 3.34379 7.81241 3.64914 7.81241 3.9999L7.83978 4.78018C7.8457 5.06525 7.83669 5.3979 7.75065 5.71901C7.58306 6.34449 7.0945 6.83305 6.46902 7.00064C6.14791 7.08669 5.81526 7.09569 5.53018 7.08977L4.74991 7.0624C4.41491 7.0624 4.09976 7.14742 3.82488 7.29707C3.65429 7.38993 3.48823 7.57226 3.35853 7.79049C3.14807 8.14462 3.14794 8.62354 3.14795 8.82381L3.14802 10.9989C3.14802 12.1415 3.1492 12.9345 3.22039 13.5419C3.28957 14.1319 3.41665 14.4565 3.60832 14.6984C3.74167 14.8667 3.90095 15.0175 4.08204 15.1456C4.35042 15.3353 4.71336 15.4604 5.3538 15.5274C6.00588 15.5956 7.06057 15.5966 8.26704 15.5966C8.67184 15.5966 9 15.9247 9 16.3296C9 16.7344 8.67184 17.0625 8.26704 17.0625Z" fill="#8F9AA3"/> | ||||
| <path d="M12.3737 9.18753C11.7129 9.18753 11.181 9.40076 10.7414 9.61709C10.5956 9.6889 10.4675 9.75603 10.35 9.81766C10.0849 9.95665 9.87309 10.0677 9.6297 10.1415C9.47677 10.1878 9.32171 10.2348 9.21338 10.2752C9.11899 10.3103 8.94856 10.3771 8.81729 10.5157C8.7011 10.6383 8.64553 10.7732 8.61318 10.8809C8.58617 10.9708 8.56326 11.0918 8.54641 11.1808C8.08141 13.6308 9.10597 15.9887 11.6102 16.8995C11.8405 16.9834 12.0578 17.0625 12.3748 17.0625C12.6919 17.0625 12.9092 16.9834 13.1395 16.8995C15.6437 15.9886 16.6672 13.6306 16.2021 11.1808C16.1852 11.0918 16.1623 10.9707 16.1353 10.8808C16.103 10.7732 16.0474 10.6383 15.9311 10.5156C15.7999 10.377 15.6294 10.3102 15.535 10.2751C15.4267 10.2348 15.2716 10.1878 15.1187 10.1415C14.8752 10.0677 14.6631 9.9566 14.3978 9.81757C14.2802 9.75594 14.1522 9.68884 14.0063 9.61706C13.5665 9.40075 13.0344 9.18753 12.3737 9.18753Z" fill="#8F9AA3"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.7 KiB | 
| @ -0,0 +1,4 @@ | ||||
| <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
| <path d="M7.51704 17.0625C6.36121 17.0625 5.9391 17.0625 5.2024 16.9854C4.44534 16.9062 3.79943 16.7389 3.24085 16.3439C2.94808 16.1369 2.68667 15.8903 2.46528 15.6109C2.03791 15.0716 1.85547 14.4432 1.76989 13.7132C1.68747 13.0102 1.68748 12.1307 1.6875 11.0446L1.6875 9.10701C1.6875 8.04332 1.6875 7.20881 1.73189 6.53328C1.77708 5.84565 1.87048 5.27212 2.08131 4.73815C2.71386 3.1361 4.04416 1.88905 5.70916 1.30241C6.74599 0.937106 8.01098 0.937263 10.1407 0.937534C11.3069 0.937127 12.411 0.936836 13.0551 1.16377C14.0875 1.52753 14.9188 2.30323 15.3154 3.30771C15.4529 3.65583 15.5096 4.02009 15.5365 4.42856C15.5625 4.82499 15.5625 5.31066 15.5625 5.91003V8.26973C15.5625 8.67305 15.2355 9 14.8322 9C14.4289 9 14.102 8.67305 14.102 8.26973V5.93492C14.102 5.30472 14.1016 4.86751 14.0791 4.52501C14.057 4.18904 14.0159 3.99523 13.9576 3.84775C13.7251 3.25872 13.2258 2.77749 12.5713 2.5469C12.1938 2.41389 11.6935 2.40342 10.3179 2.40342C10.0943 2.40342 9.82675 2.4043 9.57313 2.40544C9.31951 2.40659 8.90446 2.40846 8.55785 2.61013C8.3293 2.74312 8.16373 2.89454 8.06871 3.05998C7.9057 3.34379 7.81241 3.64914 7.81241 3.9999L7.83978 4.78018C7.8457 5.06525 7.83669 5.3979 7.75065 5.71901C7.58306 6.34449 7.0945 6.83305 6.46902 7.00064C6.14791 7.08669 5.81526 7.09569 5.53018 7.08977L4.74991 7.0624C4.41491 7.0624 4.09976 7.14742 3.82488 7.29707C3.65429 7.38993 3.48823 7.57226 3.35853 7.79049C3.14807 8.14462 3.14794 8.62354 3.14795 8.82381L3.14802 10.9989C3.14802 12.1415 3.1492 12.9345 3.22039 13.5419C3.28957 14.1319 3.41665 14.4565 3.60832 14.6984C3.74167 14.8667 3.90095 15.0175 4.08204 15.1456C4.35042 15.3353 4.71336 15.4604 5.3538 15.5274C6.00588 15.5956 6.31057 15.5966 7.51704 15.5966C7.92184 15.5966 8.25 15.9247 8.25 16.3296C8.25 16.7344 7.92184 17.0625 7.51704 17.0625Z" fill="#8F9AA3"/> | ||||
| <path d="M13.4633 9.98792C13.2634 9.58309 12.9024 9.18753 12.375 9.18753C11.8482 9.18753 11.4863 9.58226 11.2848 9.98649L10.6925 11.1809C10.6722 11.2217 10.6319 11.237 10.6143 11.2395L9.54899 11.418C9.10502 11.4926 8.64096 11.7274 8.48559 12.218C8.3309 12.7064 8.5719 13.1659 8.88821 13.4849L9.71995 14.3235C9.73567 14.3342 9.76362 14.3708 9.7497 14.4315L9.51213 15.4672C9.40639 15.928 9.40686 16.5325 9.87131 16.8742C10.3385 17.2179 10.9155 17.0328 11.3208 16.7904L12.3212 16.1933C12.3668 16.1661 12.4113 16.1813 12.4279 16.1923L13.4302 16.7905C13.8344 17.0313 14.4127 17.2194 14.8805 16.8756C15.346 16.5335 15.3437 15.9272 15.2387 15.4677L15.001 14.4315C14.9884 14.3763 15.0156 14.3365 15.0308 14.3235L15.8612 13.4862L15.8619 13.4855C16.1802 13.1664 16.4221 12.7063 16.2661 12.217C16.1099 11.7269 15.6454 11.4925 15.202 11.418L14.1337 11.239C14.0902 11.2318 14.063 11.1972 14.0549 11.1808L13.4633 9.98792Z" fill="#8F9AA3"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.8 KiB | 
| @ -0,0 +1,5 @@ | ||||
| <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
| <path d="M12.7493 12.75C12.7493 13.1643 12.4135 13.5 11.9993 13.5H6.74927C6.33505 13.5 5.99927 13.1643 5.99927 12.75C5.99927 12.3358 6.33505 12 6.74927 12L11.9993 12C12.4135 12 12.7493 12.3358 12.7493 12.75Z" fill="#8F9AA3"/> | ||||
| <path d="M11.9993 10.5C12.4135 10.5 12.7493 10.1643 12.7493 9.75005C12.7493 9.33583 12.4135 9.00005 11.9993 9.00005H9.74927C9.33506 9.00005 8.99927 9.33583 8.99927 9.75004C8.99927 10.1643 9.33506 10.5 9.74927 10.5H11.9993Z" fill="#8F9AA3"/> | ||||
| <path fill-rule="evenodd" clip-rule="evenodd" d="M5.57667 16.9854C6.31336 17.0625 7.23796 17.0625 8.39379 17.0625H9.05029C10.47 17.0625 11.6054 17.0625 12.4965 16.9493C13.4148 16.8327 14.1838 16.5847 14.798 16.0046C15.4184 15.4185 15.6894 14.6746 15.8158 13.7866C15.9368 12.9363 15.9368 11.8564 15.9368 10.5224V5.91003C15.9368 5.31066 15.9368 4.82499 15.9107 4.42856C15.8839 4.02009 15.8272 3.65583 15.6897 3.30771C15.2931 2.30323 14.4618 1.52753 13.4294 1.16377C12.7853 0.936835 11.6812 0.937127 10.515 0.937534C8.38525 0.937264 7.12025 0.937105 6.08343 1.30241C4.41843 1.88904 3.08813 3.1361 2.45558 4.73815C2.24475 5.27212 2.15135 5.84565 2.10616 6.53328C2.06176 7.20882 2.06177 8.04328 2.06177 9.10699L2.06177 11.0446C2.06175 12.1307 2.06174 13.0102 2.14415 13.7132C2.22974 14.4432 2.41218 15.0716 2.83955 15.6109C3.06094 15.8903 3.32235 16.1369 3.61512 16.3439C4.17369 16.7389 4.81961 16.9062 5.57667 16.9854ZM13.797 14.9371C13.5021 15.2156 13.085 15.397 12.3131 15.495C11.5245 15.5952 10.4818 15.5965 8.99926 15.5965H8.43496C7.2285 15.5965 6.38015 15.5956 5.72807 15.5274C5.08762 15.4604 4.72468 15.3353 4.45631 15.1456C4.27522 15.0175 4.11594 14.8667 3.98259 14.6984C3.79092 14.4565 3.66384 14.1319 3.59466 13.5418C3.52346 12.9345 3.52228 12.1415 3.52228 10.9989L3.52222 8.82381C3.52221 8.62354 3.52234 8.14462 3.7328 7.79049C3.8625 7.57226 4.02856 7.38993 4.19915 7.29707C4.47403 7.14742 4.78918 7.0624 5.12418 7.0624L5.90445 7.08977C6.18952 7.09569 6.52218 7.08668 6.84329 7.00064C7.46877 6.83305 7.95732 6.34449 8.12492 5.71901C8.21096 5.3979 8.21996 5.06525 8.21405 4.78018L8.18668 3.9999C8.18668 3.64913 8.27997 3.34379 8.44298 3.05998C8.538 2.89454 8.70357 2.74312 8.93212 2.61014C9.27873 2.40845 9.69378 2.40658 9.9474 2.40544C10.201 2.4043 10.4686 2.40342 10.6921 2.40342C12.0677 2.40342 12.5681 2.41389 12.9456 2.5469C13.6001 2.77749 14.0993 3.25872 14.3319 3.84775C14.3901 3.99523 14.4313 4.18904 14.4534 4.52501C14.4759 4.86751 14.4762 5.30472 14.4762 5.93492V10.4659C14.4762 11.8699 14.4745 12.8447 14.3699 13.5792C14.2691 14.2879 14.0856 14.6644 13.797 14.9371Z" fill="#8F9AA3"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.6 KiB | 
| @ -1,457 +0,0 @@ | ||||
| PODS: | ||||
|   - audio_session (0.0.1): | ||||
|     - Flutter | ||||
|   - connectivity_plus (0.0.1): | ||||
|     - Flutter | ||||
|   - device_calendar (0.0.1): | ||||
|     - Flutter | ||||
|   - device_info_plus (0.0.1): | ||||
|     - Flutter | ||||
|   - DKImagePickerController/Core (4.3.9): | ||||
|     - DKImagePickerController/ImageDataManager | ||||
|     - DKImagePickerController/Resource | ||||
|   - DKImagePickerController/ImageDataManager (4.3.9) | ||||
|   - DKImagePickerController/PhotoGallery (4.3.9): | ||||
|     - DKImagePickerController/Core | ||||
|     - DKPhotoGallery | ||||
|   - DKImagePickerController/Resource (4.3.9) | ||||
|   - DKPhotoGallery (0.0.19): | ||||
|     - DKPhotoGallery/Core (= 0.0.19) | ||||
|     - DKPhotoGallery/Model (= 0.0.19) | ||||
|     - DKPhotoGallery/Preview (= 0.0.19) | ||||
|     - DKPhotoGallery/Resource (= 0.0.19) | ||||
|     - SDWebImage | ||||
|     - SwiftyGif | ||||
|   - DKPhotoGallery/Core (0.0.19): | ||||
|     - DKPhotoGallery/Model | ||||
|     - DKPhotoGallery/Preview | ||||
|     - SDWebImage | ||||
|     - SwiftyGif | ||||
|   - DKPhotoGallery/Model (0.0.19): | ||||
|     - SDWebImage | ||||
|     - SwiftyGif | ||||
|   - DKPhotoGallery/Preview (0.0.19): | ||||
|     - DKPhotoGallery/Model | ||||
|     - DKPhotoGallery/Resource | ||||
|     - SDWebImage | ||||
|     - SwiftyGif | ||||
|   - DKPhotoGallery/Resource (0.0.19): | ||||
|     - SDWebImage | ||||
|     - SwiftyGif | ||||
|   - file_picker (0.0.1): | ||||
|     - DKImagePickerController/PhotoGallery | ||||
|     - Flutter | ||||
|   - Firebase/Analytics (11.15.0): | ||||
|     - Firebase/Core | ||||
|   - Firebase/Core (11.15.0): | ||||
|     - Firebase/CoreOnly | ||||
|     - FirebaseAnalytics (~> 11.15.0) | ||||
|   - Firebase/CoreOnly (11.15.0): | ||||
|     - FirebaseCore (~> 11.15.0) | ||||
|   - Firebase/Messaging (11.15.0): | ||||
|     - Firebase/CoreOnly | ||||
|     - FirebaseMessaging (~> 11.15.0) | ||||
|   - firebase_analytics (11.6.0): | ||||
|     - Firebase/Analytics (= 11.15.0) | ||||
|     - firebase_core | ||||
|     - Flutter | ||||
|   - firebase_core (3.15.2): | ||||
|     - Firebase/CoreOnly (= 11.15.0) | ||||
|     - Flutter | ||||
|   - firebase_messaging (15.2.10): | ||||
|     - Firebase/Messaging (= 11.15.0) | ||||
|     - firebase_core | ||||
|     - Flutter | ||||
|   - FirebaseAnalytics (11.15.0): | ||||
|     - FirebaseAnalytics/Default (= 11.15.0) | ||||
|     - FirebaseCore (~> 11.15.0) | ||||
|     - FirebaseInstallations (~> 11.0) | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/MethodSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - FirebaseAnalytics/Default (11.15.0): | ||||
|     - FirebaseCore (~> 11.15.0) | ||||
|     - FirebaseInstallations (~> 11.0) | ||||
|     - GoogleAppMeasurement/Default (= 11.15.0) | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/MethodSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - FirebaseCore (11.15.0): | ||||
|     - FirebaseCoreInternal (~> 11.15.0) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/Logger (~> 8.1) | ||||
|   - FirebaseCoreInternal (11.15.0): | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|   - FirebaseInstallations (11.15.0): | ||||
|     - FirebaseCore (~> 11.15.0) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/UserDefaults (~> 8.1) | ||||
|     - PromisesObjC (~> 2.4) | ||||
|   - FirebaseMessaging (11.15.0): | ||||
|     - FirebaseCore (~> 11.15.0) | ||||
|     - FirebaseInstallations (~> 11.0) | ||||
|     - GoogleDataTransport (~> 10.0) | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/Reachability (~> 8.1) | ||||
|     - GoogleUtilities/UserDefaults (~> 8.1) | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - FLAnimatedImage (1.0.17) | ||||
|   - Flutter (1.0.0) | ||||
|   - flutter_inappwebview_ios (0.0.1): | ||||
|     - Flutter | ||||
|     - flutter_inappwebview_ios/Core (= 0.0.1) | ||||
|     - OrderedSet (~> 6.0.3) | ||||
|   - flutter_inappwebview_ios/Core (0.0.1): | ||||
|     - Flutter | ||||
|     - OrderedSet (~> 6.0.3) | ||||
|   - flutter_ios_voip_kit_karmm (0.8.0): | ||||
|     - Flutter | ||||
|   - flutter_local_notifications (0.0.1): | ||||
|     - Flutter | ||||
|   - flutter_zoom_videosdk (0.0.1): | ||||
|     - Flutter | ||||
|     - ZoomVideoSDK/CptShare (= 2.1.10) | ||||
|     - ZoomVideoSDK/zm_annoter_dynamic (= 2.1.10) | ||||
|     - ZoomVideoSDK/zoomcml (= 2.1.10) | ||||
|     - ZoomVideoSDK/ZoomVideoSDK (= 2.1.10) | ||||
|   - fluttertoast (0.0.2): | ||||
|     - Flutter | ||||
|   - geolocator_apple (1.2.0): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - Google-Maps-iOS-Utils (5.0.0): | ||||
|     - GoogleMaps (~> 8.0) | ||||
|   - google_maps_flutter_ios (0.0.1): | ||||
|     - Flutter | ||||
|     - Google-Maps-iOS-Utils (< 7.0, >= 5.0) | ||||
|     - GoogleMaps (< 10.0, >= 8.4) | ||||
|   - GoogleAdsOnDeviceConversion (2.1.0): | ||||
|     - GoogleUtilities/Logger (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - GoogleAppMeasurement/Core (11.15.0): | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/MethodSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - GoogleAppMeasurement/Default (11.15.0): | ||||
|     - GoogleAdsOnDeviceConversion (= 2.1.0) | ||||
|     - GoogleAppMeasurement/Core (= 11.15.0) | ||||
|     - GoogleAppMeasurement/IdentitySupport (= 11.15.0) | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/MethodSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - GoogleAppMeasurement/IdentitySupport (11.15.0): | ||||
|     - GoogleAppMeasurement/Core (= 11.15.0) | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/MethodSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - GoogleDataTransport (10.1.0): | ||||
|     - nanopb (~> 3.30910.0) | ||||
|     - PromisesObjC (~> 2.4) | ||||
|   - GoogleMaps (8.4.0): | ||||
|     - GoogleMaps/Maps (= 8.4.0) | ||||
|   - GoogleMaps/Base (8.4.0) | ||||
|   - GoogleMaps/Maps (8.4.0): | ||||
|     - GoogleMaps/Base | ||||
|   - GoogleUtilities/AppDelegateSwizzler (8.1.0): | ||||
|     - GoogleUtilities/Environment | ||||
|     - GoogleUtilities/Logger | ||||
|     - GoogleUtilities/Network | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/Environment (8.1.0): | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/Logger (8.1.0): | ||||
|     - GoogleUtilities/Environment | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/MethodSwizzler (8.1.0): | ||||
|     - GoogleUtilities/Logger | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/Network (8.1.0): | ||||
|     - GoogleUtilities/Logger | ||||
|     - "GoogleUtilities/NSData+zlib" | ||||
|     - GoogleUtilities/Privacy | ||||
|     - GoogleUtilities/Reachability | ||||
|   - "GoogleUtilities/NSData+zlib (8.1.0)": | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/Privacy (8.1.0) | ||||
|   - GoogleUtilities/Reachability (8.1.0): | ||||
|     - GoogleUtilities/Logger | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/UserDefaults (8.1.0): | ||||
|     - GoogleUtilities/Logger | ||||
|     - GoogleUtilities/Privacy | ||||
|   - health (13.1.3): | ||||
|     - Flutter | ||||
|   - image_picker_ios (0.0.1): | ||||
|     - Flutter | ||||
|   - just_audio (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - local_auth_darwin (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - manage_calendar_events (0.0.1): | ||||
|     - Flutter | ||||
|   - MapboxCommon (23.11.0) | ||||
|   - MapboxCoreMaps (10.19.1): | ||||
|     - MapboxCommon (~> 23.11) | ||||
|   - MapboxCoreNavigation (2.19.0): | ||||
|     - MapboxDirections (~> 2.14) | ||||
|     - MapboxNavigationNative (< 207.0.0, >= 206.0.1) | ||||
|   - MapboxDirections (2.14.2): | ||||
|     - Polyline (~> 5.0) | ||||
|     - Turf (~> 2.8.0) | ||||
|   - MapboxMaps (10.19.0): | ||||
|     - MapboxCommon (= 23.11.0) | ||||
|     - MapboxCoreMaps (= 10.19.1) | ||||
|     - MapboxMobileEvents (= 2.0.0) | ||||
|     - Turf (= 2.8.0) | ||||
|   - MapboxMobileEvents (2.0.0) | ||||
|   - MapboxNavigation (2.19.0): | ||||
|     - MapboxCoreNavigation (= 2.19.0) | ||||
|     - MapboxMaps (~> 10.18) | ||||
|     - MapboxSpeech (~> 2.0) | ||||
|     - Solar-dev (~> 3.0) | ||||
|   - MapboxNavigationNative (206.2.2): | ||||
|     - MapboxCommon (~> 23.10) | ||||
|   - MapboxSpeech (2.1.1) | ||||
|   - nanopb (3.30910.0): | ||||
|     - nanopb/decode (= 3.30910.0) | ||||
|     - nanopb/encode (= 3.30910.0) | ||||
|   - nanopb/decode (3.30910.0) | ||||
|   - nanopb/encode (3.30910.0) | ||||
|   - OrderedSet (6.0.3) | ||||
|   - package_info_plus (0.4.5): | ||||
|     - Flutter | ||||
|   - path_provider_foundation (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - permission_handler_apple (9.3.0): | ||||
|     - Flutter | ||||
|   - Polyline (5.1.0) | ||||
|   - PromisesObjC (2.4.0) | ||||
|   - SDWebImage (5.21.2): | ||||
|     - SDWebImage/Core (= 5.21.2) | ||||
|   - SDWebImage/Core (5.21.2) | ||||
|   - share_plus (0.0.1): | ||||
|     - Flutter | ||||
|   - shared_preferences_foundation (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - Solar-dev (3.0.1) | ||||
|   - sqflite_darwin (0.0.4): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - SwiftyGif (5.4.5) | ||||
|   - Turf (2.8.0) | ||||
|   - url_launcher_ios (0.0.1): | ||||
|     - Flutter | ||||
|   - ZoomVideoSDK/CptShare (2.1.10) | ||||
|   - ZoomVideoSDK/zm_annoter_dynamic (2.1.10) | ||||
|   - ZoomVideoSDK/zoomcml (2.1.10) | ||||
|   - ZoomVideoSDK/ZoomVideoSDK (2.1.10) | ||||
| 
 | ||||
| DEPENDENCIES: | ||||
|   - audio_session (from `.symlinks/plugins/audio_session/ios`) | ||||
|   - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) | ||||
|   - device_calendar (from `.symlinks/plugins/device_calendar/ios`) | ||||
|   - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) | ||||
|   - file_picker (from `.symlinks/plugins/file_picker/ios`) | ||||
|   - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) | ||||
|   - firebase_core (from `.symlinks/plugins/firebase_core/ios`) | ||||
|   - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) | ||||
|   - FLAnimatedImage | ||||
|   - Flutter (from `Flutter`) | ||||
|   - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) | ||||
|   - flutter_ios_voip_kit_karmm (from `.symlinks/plugins/flutter_ios_voip_kit_karmm/ios`) | ||||
|   - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) | ||||
|   - flutter_zoom_videosdk (from `.symlinks/plugins/flutter_zoom_videosdk/ios`) | ||||
|   - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) | ||||
|   - geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`) | ||||
|   - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) | ||||
|   - health (from `.symlinks/plugins/health/ios`) | ||||
|   - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) | ||||
|   - just_audio (from `.symlinks/plugins/just_audio/darwin`) | ||||
|   - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) | ||||
|   - manage_calendar_events (from `.symlinks/plugins/manage_calendar_events/ios`) | ||||
|   - MapboxMaps (= 10.19.0) | ||||
|   - MapboxNavigation (= 2.19.0) | ||||
|   - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) | ||||
|   - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) | ||||
|   - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) | ||||
|   - share_plus (from `.symlinks/plugins/share_plus/ios`) | ||||
|   - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) | ||||
|   - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) | ||||
|   - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) | ||||
| 
 | ||||
| SPEC REPOS: | ||||
|   trunk: | ||||
|     - DKImagePickerController | ||||
|     - DKPhotoGallery | ||||
|     - Firebase | ||||
|     - FirebaseAnalytics | ||||
|     - FirebaseCore | ||||
|     - FirebaseCoreInternal | ||||
|     - FirebaseInstallations | ||||
|     - FirebaseMessaging | ||||
|     - FLAnimatedImage | ||||
|     - Google-Maps-iOS-Utils | ||||
|     - GoogleAdsOnDeviceConversion | ||||
|     - GoogleAppMeasurement | ||||
|     - GoogleDataTransport | ||||
|     - GoogleMaps | ||||
|     - GoogleUtilities | ||||
|     - MapboxCommon | ||||
|     - MapboxCoreMaps | ||||
|     - MapboxCoreNavigation | ||||
|     - MapboxDirections | ||||
|     - MapboxMaps | ||||
|     - MapboxMobileEvents | ||||
|     - MapboxNavigation | ||||
|     - MapboxNavigationNative | ||||
|     - MapboxSpeech | ||||
|     - nanopb | ||||
|     - OrderedSet | ||||
|     - Polyline | ||||
|     - PromisesObjC | ||||
|     - SDWebImage | ||||
|     - Solar-dev | ||||
|     - SwiftyGif | ||||
|     - Turf | ||||
|     - ZoomVideoSDK | ||||
| 
 | ||||
| EXTERNAL SOURCES: | ||||
|   audio_session: | ||||
|     :path: ".symlinks/plugins/audio_session/ios" | ||||
|   connectivity_plus: | ||||
|     :path: ".symlinks/plugins/connectivity_plus/ios" | ||||
|   device_calendar: | ||||
|     :path: ".symlinks/plugins/device_calendar/ios" | ||||
|   device_info_plus: | ||||
|     :path: ".symlinks/plugins/device_info_plus/ios" | ||||
|   file_picker: | ||||
|     :path: ".symlinks/plugins/file_picker/ios" | ||||
|   firebase_analytics: | ||||
|     :path: ".symlinks/plugins/firebase_analytics/ios" | ||||
|   firebase_core: | ||||
|     :path: ".symlinks/plugins/firebase_core/ios" | ||||
|   firebase_messaging: | ||||
|     :path: ".symlinks/plugins/firebase_messaging/ios" | ||||
|   Flutter: | ||||
|     :path: Flutter | ||||
|   flutter_inappwebview_ios: | ||||
|     :path: ".symlinks/plugins/flutter_inappwebview_ios/ios" | ||||
|   flutter_ios_voip_kit_karmm: | ||||
|     :path: ".symlinks/plugins/flutter_ios_voip_kit_karmm/ios" | ||||
|   flutter_local_notifications: | ||||
|     :path: ".symlinks/plugins/flutter_local_notifications/ios" | ||||
|   flutter_zoom_videosdk: | ||||
|     :path: ".symlinks/plugins/flutter_zoom_videosdk/ios" | ||||
|   fluttertoast: | ||||
|     :path: ".symlinks/plugins/fluttertoast/ios" | ||||
|   geolocator_apple: | ||||
|     :path: ".symlinks/plugins/geolocator_apple/darwin" | ||||
|   google_maps_flutter_ios: | ||||
|     :path: ".symlinks/plugins/google_maps_flutter_ios/ios" | ||||
|   health: | ||||
|     :path: ".symlinks/plugins/health/ios" | ||||
|   image_picker_ios: | ||||
|     :path: ".symlinks/plugins/image_picker_ios/ios" | ||||
|   just_audio: | ||||
|     :path: ".symlinks/plugins/just_audio/darwin" | ||||
|   local_auth_darwin: | ||||
|     :path: ".symlinks/plugins/local_auth_darwin/darwin" | ||||
|   manage_calendar_events: | ||||
|     :path: ".symlinks/plugins/manage_calendar_events/ios" | ||||
|   package_info_plus: | ||||
|     :path: ".symlinks/plugins/package_info_plus/ios" | ||||
|   path_provider_foundation: | ||||
|     :path: ".symlinks/plugins/path_provider_foundation/darwin" | ||||
|   permission_handler_apple: | ||||
|     :path: ".symlinks/plugins/permission_handler_apple/ios" | ||||
|   share_plus: | ||||
|     :path: ".symlinks/plugins/share_plus/ios" | ||||
|   shared_preferences_foundation: | ||||
|     :path: ".symlinks/plugins/shared_preferences_foundation/darwin" | ||||
|   sqflite_darwin: | ||||
|     :path: ".symlinks/plugins/sqflite_darwin/darwin" | ||||
|   url_launcher_ios: | ||||
|     :path: ".symlinks/plugins/url_launcher_ios/ios" | ||||
| 
 | ||||
| SPEC CHECKSUMS: | ||||
|   audio_session: 19e9480dbdd4e5f6c4543826b2e8b0e4ab6145fe | ||||
|   connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d | ||||
|   device_calendar: 9cb33f88a02e19652ec7b8b122ca778f751b1f7b | ||||
|   device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 | ||||
|   DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c | ||||
|   DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 | ||||
|   file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49 | ||||
|   Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e | ||||
|   firebase_analytics: bf93e20703c95030404d6ddbb1adf05bf5c3885b | ||||
|   firebase_core: 99a37263b3c27536063a7b601d9e2a49400a433c | ||||
|   firebase_messaging: bf6697c61f31c7cc0f654131212ff04c0115c2c7 | ||||
|   FirebaseAnalytics: 6433dfd311ba78084fc93bdfc145e8cb75740eae | ||||
|   FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e | ||||
|   FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4 | ||||
|   FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843 | ||||
|   FirebaseMessaging: 3b26e2cee503815e01c3701236b020aa9b576f09 | ||||
|   FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b | ||||
|   Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 | ||||
|   flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 | ||||
|   flutter_ios_voip_kit_karmm: 7ea37381a8841c92d186edf1f4604df5cc437579 | ||||
|   flutter_local_notifications: ff50f8405aaa0ccdc7dcfb9022ca192e8ad9688f | ||||
|   flutter_zoom_videosdk: 7ddc97d617b85aeace252165d2b5fc5638678c38 | ||||
|   fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f | ||||
|   geolocator_apple: 66b711889fd333205763b83c9dcf0a57a28c7afd | ||||
|   Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321 | ||||
|   google_maps_flutter_ios: e31555a04d1986ab130f2b9f24b6cdc861acc6d3 | ||||
|   GoogleAdsOnDeviceConversion: 2be6297a4f048459e0ae17fad9bfd2844e10cf64 | ||||
|   GoogleAppMeasurement: 700dce7541804bec33db590a5c496b663fbe2539 | ||||
|   GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 | ||||
|   GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d | ||||
|   GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 | ||||
|   health: f1207cccb625fc2e8af263b09c29661bde7b0b7e | ||||
|   image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 | ||||
|   just_audio: a42c63806f16995daf5b219ae1d679deb76e6a79 | ||||
|   local_auth_darwin: fa4b06454df7df8e97c18d7ee55151c57e7af0de | ||||
|   manage_calendar_events: 9b2889799340398027b3e3f5c4891d41599ec257 | ||||
|   MapboxCommon: 119f3759f7dc9457f0695848108ab323eb643cb4 | ||||
|   MapboxCoreMaps: ca17f67baced23f8c952166ac6314c35bad3f66c | ||||
|   MapboxCoreNavigation: 3be9990fae3ed732a101001746d0e3b4234ec023 | ||||
|   MapboxDirections: d4fe7d43cff82aa0c15955d1b4563a5a01e2d4de | ||||
|   MapboxMaps: b7f29ec7c33f7dc6d2947c1148edce6db81db9a7 | ||||
|   MapboxMobileEvents: d044b9edbe0ec7df60f6c2c9634fe9a7f449266b | ||||
|   MapboxNavigation: da9cf3d773ed5b0fa0fb388fccdaa117ee681f31 | ||||
|   MapboxNavigationNative: 629e359f3d2590acd1ebbacaaf99e1a80ee57e42 | ||||
|   MapboxSpeech: cd25ef99c3a3d2e0da72620ff558276ea5991a77 | ||||
|   nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 | ||||
|   OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 | ||||
|   package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 | ||||
|   path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 | ||||
|   permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 | ||||
|   Polyline: 2a1f29f87f8d9b7de868940f4f76deb8c678a5b1 | ||||
|   PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 | ||||
|   SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a | ||||
|   share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f | ||||
|   shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 | ||||
|   Solar-dev: 4612dc9878b9fed2667d23b327f1d4e54e16e8d0 | ||||
|   sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d | ||||
|   SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 | ||||
|   Turf: aa2ede4298009639d10db36aba1a7ebaad072a5e | ||||
|   url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe | ||||
|   ZoomVideoSDK: 94e939820e57a075c5e712559f927017da0de06a | ||||
| 
 | ||||
| PODFILE CHECKSUM: 5df9d8aa8f2c105eacd5ad7a310503d93c68c86b | ||||
| 
 | ||||
| COCOAPODS: 1.16.2 | ||||
| @ -1,59 +1,64 @@ | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:hmg_patient_app_new/core/post_params_model.dart'; | ||||
| import 'package:hmg_patient_app_new/features/authentication/models/resp_models/authenticated_user_resp_model.dart'; | ||||
| import 'package:hmg_patient_app_new/features/authentication/models/resp_models/select_device_by_imei.dart'; | ||||
| import 'package:hmg_patient_app_new/services/navigation_service.dart'; | ||||
| 
 | ||||
| import 'api_consts.dart' as ApiConsts; | ||||
| 
 | ||||
| class AppState { | ||||
|   NavigationService navigationService; | ||||
| 
 | ||||
|   AppState({required this.navigationService}); | ||||
| 
 | ||||
|   bool isAuthenticated = true; | ||||
|   double userLat = 0.0; | ||||
| 
 | ||||
|   set setIsAuthenticated(v) => isAuthenticated = v; | ||||
|   set setUserLat(v) => userLat = v; | ||||
| 
 | ||||
|   set setAppAuthToken(v) => appAuthToken = v; | ||||
|   double userLong = 0.0; | ||||
| 
 | ||||
|   String appAuthToken = ""; | ||||
|   set setUserLong(v) => userLong = v; | ||||
| 
 | ||||
|   set setUserLat(v) => userLat = v; | ||||
|   bool isArabic() => EasyLocalization.of(navigationService.navigatorKey.currentContext!)?.locale.languageCode == "ar"; | ||||
| 
 | ||||
|   set setUserLong(v) => userLong = v; | ||||
|   int getLanguageID() => EasyLocalization.of(navigationService.navigatorKey.currentContext!)?.locale.languageCode == "ar" ? 1 : 2; | ||||
| 
 | ||||
|   final PostParamsModel _postParamsInitConfig = | ||||
|       PostParamsModel(channel: 3, versionID: ApiConsts.VERSION_ID, ipAddress: '10.20.10.20', generalId: 'Cs2020@2016\$2958', deviceTypeID: "2", sessionID: 'TMRhVmkGhOsvamErw'); | ||||
|   String? getLanguageCode() => EasyLocalization.of(navigationService.navigatorKey.currentContext!)?.locale.languageCode; | ||||
| 
 | ||||
|   void setPostParamsInitConfig() { | ||||
|     isAuthenticated = false; | ||||
|     _postParams = _postParamsInitConfig; | ||||
|   } | ||||
|   AuthenticatedUser? _authenticatedUser; | ||||
| 
 | ||||
|   PostParamsModel? _postParams; | ||||
|   void setAuthenticatedUser(AuthenticatedUser authenticatedUser) { | ||||
|     _authenticatedUser = authenticatedUser; | ||||
|   } | ||||
| 
 | ||||
|   PostParamsModel? get postParamsObject => _postParams; | ||||
|   AuthenticatedUser? get getAuthenticatedUser => _authenticatedUser; | ||||
| 
 | ||||
|   Map<String, dynamic> get postParamsJson => isAuthenticated ? (_postParams?.toJsonAfterLogin() ?? {}) : (_postParams?.toJson() ?? {}); | ||||
|   SelectDeviceByImeiRespModelElement? _selectDeviceByImeiRespModelElement; | ||||
| 
 | ||||
|   void setPostParamsModel(PostParamsModel _postParams) { | ||||
|     this._postParams = _postParams; | ||||
|   void setSelectDeviceByImeiRespModelElement(SelectDeviceByImeiRespModelElement value) { | ||||
|     _selectDeviceByImeiRespModelElement = value; | ||||
|   } | ||||
| 
 | ||||
|   double userLat = 0.0; | ||||
|   double userLong = 0.0; | ||||
|   SelectDeviceByImeiRespModelElement? get getSelectDeviceByImeiRespModelElement => _selectDeviceByImeiRespModelElement; | ||||
| 
 | ||||
|   bool isArabic() => EasyLocalization.of(navigationService.navigatorKey.currentContext!)?.locale.languageCode == "ar"; | ||||
|   String appLoginTokenID = ""; | ||||
| 
 | ||||
|   int getLanguageID() => EasyLocalization.of(navigationService.navigatorKey.currentContext!)?.locale.languageCode == "ar" ? 1 : 2; | ||||
|   set setAppLoginTokenID(v) => appLoginTokenID = v; | ||||
| 
 | ||||
|   String? getLanguageCode() => EasyLocalization.of(navigationService.navigatorKey.currentContext!)?.locale.languageCode; | ||||
|   String deviceToken = ""; | ||||
| 
 | ||||
|   AuthenticatedUser? _authenticatedUser; | ||||
|   set setDeviceToken(v) => deviceToken = v; | ||||
| 
 | ||||
|   void setAuthenticatedUser(AuthenticatedUser authenticatedUser) { | ||||
|     _authenticatedUser = authenticatedUser; | ||||
|   } | ||||
|   String appAuthToken = ""; | ||||
| 
 | ||||
|   AuthenticatedUser? get getAuthenticatedUser => _authenticatedUser; | ||||
|   set setAppAuthToken(v) => appAuthToken = v; | ||||
| 
 | ||||
|   String sessionId = ""; | ||||
| 
 | ||||
|   set setSessionId(v) => sessionId = v; | ||||
| 
 | ||||
|   bool isAuthenticated = true; | ||||
| 
 | ||||
|   set setIsAuthenticated(v) => isAuthenticated = v; | ||||
| 
 | ||||
|   String deviceTypeID = ""; | ||||
| 
 | ||||
|   set setDeviceTypeID(v) => deviceTypeID = v; | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,75 @@ | ||||
| class CacheConst { | ||||
|   static const String isRememberMe = "remember_me"; | ||||
|   static const String username = "doctorId"; | ||||
|   static const String password = "password"; | ||||
|   static const String logInTokenId = "logInTokenID"; | ||||
|   static const String vidaAuthTokenId = "vidaAuthTokenID"; | ||||
|   static const String vidaRefreshTokenId = "vidaRefreshTokenID"; | ||||
|   static const String authenticationTokenId = "authenticationTokenID"; | ||||
|   static const String projectId = "projectID"; | ||||
|   static const String clinicId = "clinicId"; | ||||
|   static const String lastLoginDate = "lastLoginDate"; | ||||
|   static const String lastLoginTime = "lastLoginTime"; | ||||
|   static const String memberModel = "memberModel"; | ||||
| 
 | ||||
|   static const String isShowOnboarding = "is_show_onboarding"; | ||||
|   static const String appAuthToken = "app_auth_token"; | ||||
|   static const String appUserId = "app_user_id"; | ||||
|   static const String loggedInUserObj = "logged_in_user_obj"; | ||||
| 
 | ||||
|   static const String pushToken = "push_token"; | ||||
|   static const String apnsToken = "apns_token"; | ||||
|   static const String voipToken = "voip_token"; | ||||
|   static const String patientMrn = "patient_mrn"; | ||||
| 
 | ||||
|   static const String loggedInUserId = "logged_in_user_id"; | ||||
|   static const String loggedInUserPassword = "logged_in_user_password"; | ||||
| 
 | ||||
|   static const String userLat = 'user-lat'; | ||||
|   static const String userLong = 'user-long'; | ||||
| 
 | ||||
|   static const String token = 'token'; | ||||
|   static const String appLanguage = 'language'; | ||||
|   static const String userProfile = 'user-profile'; | ||||
|   static const String oneSignalApnsToken = 'onesignal-apns-token'; | ||||
|   static const String registerDataForRegister = 'register-data-for-register'; | ||||
|   static const String loginTokenIdDuplicate = 'register-data-for-register'; | ||||
|   static const String registerDataForLogin = 'register-data-for-login'; | ||||
|   static const String lastLogin = 'last-login'; | ||||
|   static const String erCheckinRiskScore = 'er-checkin-risk-score'; | ||||
|   static const String onlySms = 'only-sms'; | ||||
|   static const String authData = 'auth-data'; | ||||
|   static const String imeiUserData = 'imei-user-data'; | ||||
|   static const String nhicData = 'nhic-data'; | ||||
|   static const String familyFile = 'family-file'; | ||||
|   static const String isGoToParking = 'IS_GO_TO_PARKING'; | ||||
|   static const String isSearchAppo = 'is-search-appo'; | ||||
|   static const String isLivecareAppointment = 'is_livecare_appointment'; | ||||
|   static const String isVibration = 'is_vibration'; | ||||
|   static const String themeValue = 'is_vibration'; | ||||
|   static const String mainUser = 'main-user'; | ||||
|   static const String pharmacyLastVisitedProducts = 'last-visited'; | ||||
|   static const String pharmacyCustomerId = 'costumer-id'; | ||||
|   static const String pharmacyCustomerGuid = 'customer-guid'; | ||||
|   static const String pharmacyCustomerObject = 'pharmacy-customer-object'; | ||||
|   static const String isRobotVisible = 'robot-visible'; | ||||
|   static const String isRobotInit = 'robot-init'; | ||||
|   static const String hmgGeofences = 'hmg-geo-fences'; | ||||
|   static const String weather = 'weather'; | ||||
|   static const String bloodType = 'blood-type'; | ||||
|   static const String notificationCount = 'notification-count'; | ||||
|   static const String pharmacySelectedAddress = 'selected-address'; | ||||
|   static const String pharmacyAutorzieToken = 'PHARMACY_AUTORZIE_TOKEN'; | ||||
|   static const String h2oUnit = 'H2O_UNIT'; | ||||
|   static const String h2oReminder = 'H2O_REMINDER'; | ||||
|   static const String livecareClinicData = 'LIVECARE_CLINIC_DATA'; | ||||
|   static const String doctorScheduleDateSel = 'DOCTOR_SCHEDULE_DATE_SEL'; | ||||
|   static const String appointmentHistoryMedical = 'APPOINTMENT_HISTORY_MEDICAL'; | ||||
|   static const String clinicsList = 'CLINICS_LIST'; | ||||
|   static const String covidQaList = 'COVID_QA_LIST'; | ||||
|   static const String isCovidConsentShown = 'IS_COVID_CONSENT_SHOWN'; | ||||
|   static const String registerInfoDubai = 'register-info-dubai'; | ||||
|   static const String isLastAppointmentRateShown = 'is-last-appointment-rate-shown'; | ||||
|   static const String patientOccupationList = 'patient-occupation-list'; | ||||
|   static const String hasEnabledQuickLogin = 'has-enabled-quick-login'; | ||||
| } | ||||
| @ -1,32 +0,0 @@ | ||||
| 
 | ||||
| 
 | ||||
| class SharedPrefsConsts { | ||||
|   static String isRememberMe = "remember_me"; | ||||
|   static String username = "doctorId"; | ||||
|   static String password = "password"; | ||||
|   static String logInTokenID = "logInTokenID"; | ||||
|   static String vidaAuthTokenID = "vidaAuthTokenID"; | ||||
|   static String vidaRefreshTokenID = "vidaRefreshTokenID"; | ||||
|   static String authenticationTokenID = "authenticationTokenID"; | ||||
|   static String projectID = "projectID"; | ||||
|   static String clinicId = "clinicId"; | ||||
|   static String lastLoginDate = "lastLoginDate"; | ||||
|   static String lastLoginTime = "lastLoginTime"; | ||||
|   static String memberModel = "memberModel"; | ||||
| 
 | ||||
|   static String isShowOnboarding = "is_show_onboarding"; | ||||
|   static String appAuthToken = "app_auth_token"; | ||||
|   static String appUserID = "app_user_id"; | ||||
|   static String loggedInUserObj = "logged_in_user_obj"; | ||||
| 
 | ||||
|   static String PUSH_TOKEN = "push_token"; | ||||
|   static String APNS_TOKEN = "apns_token"; | ||||
|   static String VOIP_TOKEN = "voip_token"; | ||||
|   static String PATIENT_MRN = "patient_mrn"; | ||||
| 
 | ||||
|   static String loggedInUserID = "logged_in_user_id"; | ||||
|   static String loggedInUserPassword = "logged_in_user_password"; | ||||
| 
 | ||||
|   static String user_lat = 'user-lat'; | ||||
|   static String user_long = 'user-long'; | ||||
| } | ||||
| @ -0,0 +1,48 @@ | ||||
| import 'dart:developer'; | ||||
| 
 | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:hmg_patient_app_new/core/dependencies.dart'; | ||||
| import 'package:hmg_patient_app_new/services/navigation_service.dart'; | ||||
| import 'package:hmg_patient_app_new/theme/colors.dart'; | ||||
| 
 | ||||
| class LoadingUtils { | ||||
|   static final NavigationService _navigationService = getIt.get<NavigationService>(); | ||||
| 
 | ||||
|   static bool _isLoadingVisible = false; | ||||
| 
 | ||||
|   static bool get isLoading => _isLoadingVisible; | ||||
| 
 | ||||
|   static showFullScreenLoader({bool barrierDismissible = true}) { | ||||
|     if (!_isLoadingVisible) { | ||||
|       _isLoadingVisible = true; | ||||
|       final context = _navigationService.navigatorKey.currentContext; | ||||
|       log("got the context in showFullScreenLoading"); | ||||
|       if (context == null) return; | ||||
| 
 | ||||
|       showDialog( | ||||
|         barrierDismissible: barrierDismissible, | ||||
|         context: context, | ||||
|         barrierColor: AppColors.blackColor.withOpacity(0.5), | ||||
|         useRootNavigator: false, | ||||
|         builder: (BuildContext context) => Center( | ||||
|             child: CircularProgressIndicator( | ||||
|           color: AppColors.primaryRedColor, | ||||
|         )), | ||||
|       ).then((value) { | ||||
|         _isLoadingVisible = false; | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   static hideFullScreenLoader() { | ||||
|     if (!_isLoadingVisible) return; | ||||
| 
 | ||||
|     final context = _navigationService.navigatorKey.currentContext; | ||||
|     if (context != null) { | ||||
|       try { | ||||
|         Navigator.of(context).pop(); | ||||
|       } catch (_) {} | ||||
|     } | ||||
|     _isLoadingVisible = false; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,23 @@ | ||||
| import 'dart:developer'; | ||||
| 
 | ||||
| import 'package:hmg_patient_app_new/core/dependencies.dart'; | ||||
| import 'package:hmg_patient_app_new/services/dialog_service.dart'; | ||||
| 
 | ||||
| class ValidationUtils { | ||||
|   static final DialogService _dialogService = getIt.get<DialogService>(); | ||||
| 
 | ||||
|   static bool isValidatePhoneAndId({String? nationalId, String? phoneNumber}) { | ||||
|     log("phoneNumber: $phoneNumber"); | ||||
|     log("nationalId: $nationalId"); | ||||
|     if (nationalId == null || nationalId.isEmpty) { | ||||
|       _dialogService.showErrorBottomSheet(message: "Please enter a valid national ID or file number", onOkPressed: () {}); | ||||
|       return false; | ||||
|     } | ||||
| 
 | ||||
|     if (phoneNumber == null || phoneNumber.isEmpty) { | ||||
|       _dialogService.showErrorBottomSheet(message: "Please enter a valid phone number", onOkPressed: () {}); | ||||
|       return false; | ||||
|     } | ||||
|     return true; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,121 @@ | ||||
| class CheckActivationCodeRegisterReq { | ||||
|   int? patientMobileNumber; | ||||
|   String? mobileNo; | ||||
|   String? deviceToken; | ||||
|   bool? projectOutSA; | ||||
|   int? loginType; | ||||
|   String? zipCode; | ||||
|   bool? isRegister; | ||||
|   String? logInTokenID; | ||||
|   int? searchType; | ||||
|   int? patientID; | ||||
|   String? nationalID; | ||||
|   String? patientIdentificationID; | ||||
|   String? activationCode; | ||||
|   bool? isSilentLogin; | ||||
|   double? versionID; | ||||
|   int? channel; | ||||
|   int? languageID; | ||||
|   String? iPAdress; | ||||
|   String? generalid; | ||||
|   int? patientOutSA; | ||||
|   dynamic sessionID; | ||||
|   bool? isDentalAllowedBackend; | ||||
|   int? deviceTypeID; | ||||
|   bool? forRegisteration; | ||||
|   String? dob; | ||||
|   int? isHijri; | ||||
|   String? healthId; | ||||
| 
 | ||||
|   CheckActivationCodeRegisterReq({ | ||||
|     this.patientMobileNumber, | ||||
|     this.mobileNo, | ||||
|     this.deviceToken, | ||||
|     this.projectOutSA, | ||||
|     this.loginType, | ||||
|     this.zipCode, | ||||
|     this.isRegister, | ||||
|     this.logInTokenID, | ||||
|     this.searchType, | ||||
|     this.patientID, | ||||
|     this.nationalID, | ||||
|     this.patientIdentificationID, | ||||
|     this.activationCode, | ||||
|     this.isSilentLogin, | ||||
|     this.versionID, | ||||
|     this.channel, | ||||
|     this.languageID, | ||||
|     this.iPAdress, | ||||
|     this.generalid, | ||||
|     this.patientOutSA, | ||||
|     this.sessionID, | ||||
|     this.isDentalAllowedBackend, | ||||
|     this.deviceTypeID, | ||||
|     this.forRegisteration, | ||||
|     this.dob, | ||||
|     this.isHijri, | ||||
|     this.healthId, | ||||
|   }); | ||||
| 
 | ||||
|   CheckActivationCodeRegisterReq.fromJson(Map<String, dynamic> json) { | ||||
|     patientMobileNumber = json['PatientMobileNumber']; | ||||
|     mobileNo = json['MobileNo']; | ||||
|     deviceToken = json['DeviceToken']; | ||||
|     projectOutSA = json['ProjectOutSA']; | ||||
|     loginType = json['LoginType']; | ||||
|     zipCode = json['ZipCode']; | ||||
|     isRegister = json['isRegister']; | ||||
|     logInTokenID = json['LogInTokenID']; | ||||
|     searchType = json['SearchType']; | ||||
|     patientID = json['PatientID']; | ||||
|     nationalID = json['NationalID']; | ||||
|     patientIdentificationID = json['PatientIdentificationID']; | ||||
|     activationCode = json['activationCode']; | ||||
|     isSilentLogin = json['IsSilentLogin']; | ||||
|     versionID = json['VersionID']; | ||||
|     channel = json['Channel']; | ||||
|     languageID = json['LanguageID']; | ||||
|     iPAdress = json['IPAdress']; | ||||
|     generalid = json['generalid']; | ||||
|     patientOutSA = json['PatientOutSA']; | ||||
|     sessionID = json['SessionID']; | ||||
|     isDentalAllowedBackend = json['isDentalAllowedBackend']; | ||||
|     deviceTypeID = json['DeviceTypeID']; | ||||
|     forRegisteration = json['ForRegisteration']; | ||||
|     dob = json['DOB']; | ||||
|     isHijri = json['IsHijri']; | ||||
|     healthId = json['HealthId']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = <String, dynamic>{}; | ||||
|     data['PatientMobileNumber'] = patientMobileNumber; | ||||
|     data['MobileNo'] = mobileNo; | ||||
|     data['DeviceToken'] = deviceToken; | ||||
|     data['ProjectOutSA'] = projectOutSA; | ||||
|     data['LoginType'] = loginType; | ||||
|     data['ZipCode'] = zipCode; | ||||
|     data['isRegister'] = isRegister; | ||||
|     data['LogInTokenID'] = logInTokenID; | ||||
|     data['SearchType'] = searchType; | ||||
|     data['PatientID'] = patientID; | ||||
|     data['NationalID'] = nationalID; | ||||
|     data['PatientIdentificationID'] = patientIdentificationID; | ||||
|     data['activationCode'] = activationCode; | ||||
|     data['IsSilentLogin'] = isSilentLogin; | ||||
|     data['VersionID'] = versionID; | ||||
|     data['Channel'] = channel; | ||||
|     data['LanguageID'] = languageID; | ||||
|     data['IPAdress'] = iPAdress; | ||||
|     data['generalid'] = generalid; | ||||
|     data['PatientOutSA'] = patientOutSA; | ||||
|     data['SessionID'] = sessionID; | ||||
|     data['isDentalAllowedBackend'] = isDentalAllowedBackend; | ||||
|     data['DeviceTypeID'] = deviceTypeID; | ||||
|     data['ForRegisteration'] = forRegisteration; | ||||
|     data['DOB'] = dob; | ||||
|     data['IsHijri'] = isHijri; | ||||
|     data['HealthId'] = healthId; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,73 @@ | ||||
| class PatientInsuranceCardHistoryResponseModel { | ||||
|   int? createdBy; | ||||
|   String? createdOn; | ||||
|   int? editedBy; | ||||
|   String? editedOn; | ||||
|   String? insuranceCardImage; | ||||
|   String? mobileNumber; | ||||
|   int? patientID; | ||||
|   String? patientIdentificationNo; | ||||
|   String? patientInsuranceCardUpdateInfoID; | ||||
|   int? patientType; | ||||
|   int? projectID; | ||||
|   String? rejectionRemarks; | ||||
|   int? setupID; | ||||
|   int? status; | ||||
|   String? statusDescription; | ||||
| 
 | ||||
|   PatientInsuranceCardHistoryResponseModel( | ||||
|       {this.createdBy, | ||||
|         this.createdOn, | ||||
|         this.editedBy, | ||||
|         this.editedOn, | ||||
|         this.insuranceCardImage, | ||||
|         this.mobileNumber, | ||||
|         this.patientID, | ||||
|         this.patientIdentificationNo, | ||||
|         this.patientInsuranceCardUpdateInfoID, | ||||
|         this.patientType, | ||||
|         this.projectID, | ||||
|         this.rejectionRemarks, | ||||
|         this.setupID, | ||||
|         this.status, | ||||
|         this.statusDescription}); | ||||
| 
 | ||||
|   PatientInsuranceCardHistoryResponseModel.fromJson(Map<String, dynamic> json) { | ||||
|     createdBy = json['CreatedBy']; | ||||
|     createdOn = json['CreatedOn']; | ||||
|     editedBy = json['EditedBy']; | ||||
|     editedOn = json['EditedOn']; | ||||
|     insuranceCardImage = json['InsuranceCardImage']; | ||||
|     mobileNumber = json['MobileNumber']; | ||||
|     patientID = json['PatientID']; | ||||
|     patientIdentificationNo = json['PatientIdentificationNo']; | ||||
|     patientInsuranceCardUpdateInfoID = json['PatientInsuranceCardUpdateInfoID']; | ||||
|     patientType = json['PatientType']; | ||||
|     projectID = json['ProjectID']; | ||||
|     rejectionRemarks = json['RejectionRemarks']; | ||||
|     setupID = json['SetupID']; | ||||
|     status = json['Status']; | ||||
|     statusDescription = json['StatusDescription']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['CreatedBy'] = this.createdBy; | ||||
|     data['CreatedOn'] = this.createdOn; | ||||
|     data['EditedBy'] = this.editedBy; | ||||
|     data['EditedOn'] = this.editedOn; | ||||
|     data['InsuranceCardImage'] = this.insuranceCardImage; | ||||
|     data['MobileNumber'] = this.mobileNumber; | ||||
|     data['PatientID'] = this.patientID; | ||||
|     data['PatientIdentificationNo'] = this.patientIdentificationNo; | ||||
|     data['PatientInsuranceCardUpdateInfoID'] = | ||||
|         this.patientInsuranceCardUpdateInfoID; | ||||
|     data['PatientType'] = this.patientType; | ||||
|     data['ProjectID'] = this.projectID; | ||||
|     data['RejectionRemarks'] = this.rejectionRemarks; | ||||
|     data['SetupID'] = this.setupID; | ||||
|     data['Status'] = this.status; | ||||
|     data['StatusDescription'] = this.statusDescription; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,88 @@ | ||||
| class PatientInsuranceUpdateResponseModel { | ||||
|   dynamic approvalLimit; | ||||
|   int? companyGroupID; | ||||
|   String? companyName; | ||||
|   String? companyRemarks; | ||||
|   String? dOB; | ||||
|   dynamic deductible; | ||||
|   String? effectiveFrom; | ||||
|   String? effectiveTo; | ||||
|   String? eligabilityFailureReason; | ||||
|   bool? isMemberEligible; | ||||
|   String? memberID; | ||||
|   String? memberName; | ||||
|   String? memberStatus; | ||||
|   dynamic message; | ||||
|   String? nationalId; | ||||
|   String? policyNumber; | ||||
|   String? responseMessage; | ||||
|   dynamic room; | ||||
|   String? subCategory; | ||||
| 
 | ||||
|   PatientInsuranceUpdateResponseModel( | ||||
|       {this.approvalLimit, | ||||
|         this.companyGroupID, | ||||
|         this.companyName, | ||||
|         this.companyRemarks, | ||||
|         this.dOB, | ||||
|         this.deductible, | ||||
|         this.effectiveFrom, | ||||
|         this.effectiveTo, | ||||
|         this.eligabilityFailureReason, | ||||
|         this.isMemberEligible, | ||||
|         this.memberID, | ||||
|         this.memberName, | ||||
|         this.memberStatus, | ||||
|         this.message, | ||||
|         this.nationalId, | ||||
|         this.policyNumber, | ||||
|         this.responseMessage, | ||||
|         this.room, | ||||
|         this.subCategory}); | ||||
| 
 | ||||
|   PatientInsuranceUpdateResponseModel.fromJson(Map<String, dynamic> json) { | ||||
|     approvalLimit = json['ApprovalLimit']; | ||||
|     companyGroupID = json['CompanyGroupID']; | ||||
|     companyName = json['CompanyName']; | ||||
|     companyRemarks = json['CompanyRemarks']; | ||||
|     dOB = json['DOB']; | ||||
|     deductible = json['Deductible']; | ||||
|     effectiveFrom = json['EffectiveFrom']; | ||||
|     effectiveTo = json['EffectiveTo']; | ||||
|     eligabilityFailureReason = json['EligabilityFailureReason']; | ||||
|     isMemberEligible = json['IsMemberEligible']; | ||||
|     memberID = json['MemberID']; | ||||
|     memberName = json['MemberName']; | ||||
|     memberStatus = json['MemberStatus']; | ||||
|     message = json['Message']; | ||||
|     nationalId = json['NationalId']; | ||||
|     policyNumber = json['PolicyNumber']; | ||||
|     responseMessage = json['ResponseMessage']; | ||||
|     room = json['Room']; | ||||
|     subCategory = json['SubCategory']; | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|     final Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['ApprovalLimit'] = this.approvalLimit; | ||||
|     data['CompanyGroupID'] = this.companyGroupID; | ||||
|     data['CompanyName'] = this.companyName; | ||||
|     data['CompanyRemarks'] = this.companyRemarks; | ||||
|     data['DOB'] = this.dOB; | ||||
|     data['Deductible'] = this.deductible; | ||||
|     data['EffectiveFrom'] = this.effectiveFrom; | ||||
|     data['EffectiveTo'] = this.effectiveTo; | ||||
|     data['EligabilityFailureReason'] = this.eligabilityFailureReason; | ||||
|     data['IsMemberEligible'] = this.isMemberEligible; | ||||
|     data['MemberID'] = this.memberID; | ||||
|     data['MemberName'] = this.memberName; | ||||
|     data['MemberStatus'] = this.memberStatus; | ||||
|     data['Message'] = this.message; | ||||
|     data['NationalId'] = this.nationalId; | ||||
|     data['PolicyNumber'] = this.policyNumber; | ||||
|     data['ResponseMessage'] = this.responseMessage; | ||||
|     data['Room'] = this.room; | ||||
|     data['SubCategory'] = this.subCategory; | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,139 @@ | ||||
| import 'package:easy_localization/easy_localization.dart'; | ||||
| import 'package:flutter/cupertino.dart'; | ||||
| import 'package:hmg_patient_app_new/core/app_assets.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/date_util.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/utils.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; | ||||
| import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; | ||||
| import 'package:hmg_patient_app_new/theme/colors.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; | ||||
| import 'package:hmg_patient_app_new/widgets/shimmer/movies_shimmer_widget.dart'; | ||||
| import 'package:provider/provider.dart'; | ||||
| 
 | ||||
| class PatientInsuranceCardUpdateCard extends StatelessWidget { | ||||
|   PatientInsuranceCardUpdateCard({super.key}); | ||||
| 
 | ||||
|   late InsuranceViewModel insuranceViewModel; | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     insuranceViewModel = Provider.of<InsuranceViewModel>(context); | ||||
|     return Column( | ||||
|       children: [ | ||||
|         Row( | ||||
|           mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||||
|           children: [ | ||||
|             LocaleKeys.insuranceCards.tr(context: context).toText24(isBold: true), | ||||
|             Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon).onPress(() { | ||||
|               Navigator.of(context).pop(); | ||||
|             }), | ||||
|           ], | ||||
|         ).paddingSymmetrical(24.h, 24.h), | ||||
|         insuranceViewModel.isInsuranceUpdateDetailsLoading | ||||
|             ? const MoviesShimmerWidget().paddingSymmetrical(24.h, 24.h) | ||||
|             : Container( | ||||
|                 // height: 120.h, | ||||
|                 decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | ||||
|                   color: AppColors.whiteColor, | ||||
|                   borderRadius: 24, | ||||
|                 ), | ||||
|                 child: Column( | ||||
|                   crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                   children: [ | ||||
|                     "Haroon Amjad".toText16(weight: FontWeight.w600), | ||||
|                     "Policy: ${insuranceViewModel.patientInsuranceUpdateResponseModel!.policyNumber}".toText12(isBold: true, color: AppColors.lightGrayColor), | ||||
|                     SizedBox(height: 8.h), | ||||
|                     Row( | ||||
|                       children: [ | ||||
|                         insuranceViewModel.patientInsuranceUpdateResponseModel!.companyName!.toText12(isBold: true), | ||||
|                         SizedBox( | ||||
|                           width: 6.h, | ||||
|                         ), | ||||
|                         Container( | ||||
|                           padding: EdgeInsets.symmetric(horizontal: 6.h, vertical: 3.h), | ||||
|                           decoration: RoundedRectangleBorder().toSmoothCornerDecoration( | ||||
|                             color: AppColors.infoColor, | ||||
|                             borderRadius: 50, | ||||
|                           ), | ||||
|                           child: insuranceViewModel.patientInsuranceUpdateResponseModel!.subCategory!.toText8(isBold: true, color: AppColors.whiteColor), | ||||
|                         ), | ||||
|                       ], | ||||
|                     ), | ||||
|                     SizedBox(height: 8.h), | ||||
|                     Row( | ||||
|                       children: [ | ||||
|                         Wrap( | ||||
|                           direction: Axis.horizontal, | ||||
|                           spacing: 4.h, | ||||
|                           runSpacing: 4.h, | ||||
|                           children: [ | ||||
|                             Row( | ||||
|                               children: [ | ||||
|                                 CustomButton( | ||||
|                                   icon: AppAssets.doctor_calendar_icon, | ||||
|                                   iconColor: AppColors.blackColor, | ||||
|                                   iconSize: 13.h, | ||||
|                                   text: "${LocaleKeys.expiryOn.tr(context: context)} ${insuranceViewModel.patientInsuranceUpdateResponseModel!.effectiveTo}", | ||||
|                                   onPressed: () {}, | ||||
|                                   backgroundColor: AppColors.greyColor, | ||||
|                                   borderColor: AppColors.greyColor, | ||||
|                                   textColor: AppColors.blackColor, | ||||
|                                   fontSize: 10, | ||||
|                                   fontWeight: FontWeight.w500, | ||||
|                                   borderRadius: 12, | ||||
|                                   padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|                                   height: 30.h, | ||||
|                                 ), | ||||
|                               ], | ||||
|                             ), | ||||
|                             Row( | ||||
|                               children: [ | ||||
|                                 CustomButton( | ||||
|                                   text: "Member ID: ${insuranceViewModel.patientInsuranceUpdateResponseModel!.memberID!}", | ||||
|                                   onPressed: () {}, | ||||
|                                   backgroundColor: AppColors.greyColor, | ||||
|                                   borderColor: AppColors.greyColor, | ||||
|                                   textColor: AppColors.blackColor, | ||||
|                                   fontSize: 10, | ||||
|                                   fontWeight: FontWeight.w500, | ||||
|                                   borderRadius: 12, | ||||
|                                   padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|                                   height: 30.h, | ||||
|                                 ), | ||||
|                               ], | ||||
|                             ), | ||||
|                           ], | ||||
|                         ), | ||||
|                       ], | ||||
|                     ), | ||||
|                   ], | ||||
|                 ).paddingSymmetrical(16.h, 16.h), | ||||
|               ).paddingSymmetrical(24.h, 0.h), | ||||
|         SizedBox( | ||||
|           height: 24.h, | ||||
|         ), | ||||
|         CustomButton( | ||||
|           icon: AppAssets.insurance_active_icon, | ||||
|           iconColor: AppColors.whiteColor, | ||||
|           iconSize: 20.h, | ||||
|           text: "Update Insurance", | ||||
|           onPressed: () {}, | ||||
|           backgroundColor: AppColors.successColor, | ||||
|           borderColor: AppColors.successColor.withOpacity(0.01), | ||||
|           textColor: AppColors.whiteColor, | ||||
|           fontSize: 16, | ||||
|           fontWeight: FontWeight.w500, | ||||
|           borderRadius: 12, | ||||
|           padding: EdgeInsets.fromLTRB(10, 0, 10, 0), | ||||
|           height: 56.h, | ||||
|         ).paddingSymmetrical(24.h, 0.h), | ||||
|         SizedBox( | ||||
|           height: 24.h, | ||||
|         ), | ||||
|       ], | ||||
|     ); | ||||
|   } | ||||
| } | ||||
| @ -1,14 +1,116 @@ | ||||
| import 'dart:convert'; | ||||
| 
 | ||||
| import 'package:hmg_patient_app_new/services/logger_service.dart'; | ||||
| import 'package:shared_preferences/shared_preferences.dart'; | ||||
| 
 | ||||
| abstract class CacheService { | ||||
|   Future<void> saveString({required String key, required String value}); | ||||
| 
 | ||||
|   Future<void> saveInt({required String key, required int value}); | ||||
| 
 | ||||
|   Future<void> saveDouble({required String key, required double value}); | ||||
| 
 | ||||
|   Future<void> saveBool({required String key, required bool value}); | ||||
| 
 | ||||
|   Future<void> saveStringList({required String key, required List<String> value}); | ||||
| 
 | ||||
|   String? getString({required String key}); | ||||
| 
 | ||||
|   int? getInt({required String key}); | ||||
| 
 | ||||
|   double? getDouble({required String key}); | ||||
| 
 | ||||
|   bool? getBool({required String key}); | ||||
| 
 | ||||
|   List<String>? getStringList({required String key}); | ||||
| 
 | ||||
|   Future<dynamic> getObject({required String key}); | ||||
| 
 | ||||
|   Future<void> saveObject({required String key, required dynamic value}); | ||||
| 
 | ||||
|   Future<void> remove({required String key}); | ||||
| 
 | ||||
|   Future<void> clear(); | ||||
| } | ||||
| 
 | ||||
| class CacheServiceImp implements CacheService { | ||||
|   SharedPreferences sharedPreferences; | ||||
|   final SharedPreferences sharedPreferences; | ||||
|   final LoggerService loggerService; | ||||
| 
 | ||||
|   CacheServiceImp({ | ||||
|     required this.sharedPreferences, | ||||
|     required this.loggerService, | ||||
|   }); | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> saveString({required String key, required String value}) async { | ||||
|     await sharedPreferences.setString(key, value); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> saveInt({required String key, required int value}) async { | ||||
|     await sharedPreferences.setInt(key, value); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> saveDouble({required String key, required double value}) async { | ||||
|     await sharedPreferences.setDouble(key, value); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> saveBool({required String key, required bool value}) async { | ||||
|     await sharedPreferences.setBool(key, value); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> saveStringList({required String key, required List<String> value}) async { | ||||
|     await sharedPreferences.setStringList(key, value); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   String? getString({required String key}) => sharedPreferences.getString(key); | ||||
| 
 | ||||
|   @override | ||||
|   int? getInt({required String key}) => sharedPreferences.getInt(key); | ||||
| 
 | ||||
|   @override | ||||
|   double? getDouble({required String key}) => sharedPreferences.getDouble(key); | ||||
| 
 | ||||
|   @override | ||||
|   bool? getBool({required String key}) => sharedPreferences.getBool(key); | ||||
| 
 | ||||
|   @override | ||||
|   List<String>? getStringList({required String key}) => sharedPreferences.getStringList(key); | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> remove({required String key}) async { | ||||
|     await sharedPreferences.remove(key); | ||||
|   } | ||||
| 
 | ||||
|   CacheServiceImp({required this.sharedPreferences}); | ||||
|   @override | ||||
|   Future<dynamic> getObject({required String key}) async { | ||||
|     try { | ||||
|       await sharedPreferences.reload(); | ||||
|       var string = sharedPreferences.getString(key); | ||||
|       if (string == null) return null; | ||||
|       return json.decode(string); | ||||
|     } catch (ex) { | ||||
|       loggerService.errorLogs(ex.toString()); | ||||
|       return null; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> saveObject({required String key, required dynamic value}) async { | ||||
|     try { | ||||
|       await sharedPreferences.setString(key, json.encode(value)); | ||||
|     } catch (ex) { | ||||
|       loggerService.errorLogs(ex.toString()); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Future<void> clear() async { | ||||
|     await sharedPreferences.clear(); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,31 @@ | ||||
| import 'package:firebase_messaging/firebase_messaging.dart' show FirebaseMessaging; | ||||
| import 'package:hmg_patient_app_new/core/app_state.dart'; | ||||
| import 'package:hmg_patient_app_new/services/logger_service.dart'; | ||||
| 
 | ||||
| abstract class FirebaseService { | ||||
|   Future<String?> getDeviceToken(); | ||||
| } | ||||
| 
 | ||||
| class FirebaseServiceImpl implements FirebaseService { | ||||
|   final FirebaseMessaging firebaseMessaging; | ||||
|   final LoggerService loggerService; | ||||
|   final AppState appState; | ||||
| 
 | ||||
|   FirebaseServiceImpl({ | ||||
|     required this.firebaseMessaging, | ||||
|     required this.loggerService, | ||||
|     required this.appState, | ||||
|   }); | ||||
| 
 | ||||
|   @override | ||||
|   Future<String> getDeviceToken() async { | ||||
|     try { | ||||
|       String? deviceToken = await firebaseMessaging.getToken(); | ||||
|       appState.setDeviceToken = deviceToken; | ||||
|       return deviceToken ?? ""; | ||||
|     } catch (e) { | ||||
|       loggerService.logInfo(e.toString()); | ||||
|       return ""; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,92 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| 
 | ||||
| import 'package:permission_handler/permission_handler.dart'; | ||||
| 
 | ||||
| // import 'package:vibration/vibration.dart'; | ||||
| import 'package:geolocator/geolocator.dart' as geo; | ||||
| 
 | ||||
| class PermissionService { | ||||
|   // final LocalStorage storage = new LocalStorage("permission"); | ||||
|   geo.LocationPermission? locationPermission; | ||||
| 
 | ||||
|   // AppGlobal appGlobal = new AppGlobal(); | ||||
| 
 | ||||
|   // setVibrationPermission(flag) async { | ||||
|   //   storage.setItem('isVibration', flag); | ||||
|   // } | ||||
|   // | ||||
|   // isVibrationEnabled() { | ||||
|   //   return (storage.getItem('isVibration') == null) || | ||||
|   //           (storage.getItem('isVibration')) == false | ||||
|   //       ? false | ||||
|   //       : true; | ||||
|   // } | ||||
| 
 | ||||
|   // vibrate(callback, context) async { | ||||
|   //   if (callback == null) return null; | ||||
|   //   if (isVibrationEnabled() == true) { | ||||
|   //     // if (await Vibration.hasVibrator() !=null) { | ||||
|   //     //   Vibration.vibrate(duration: 100); | ||||
|   //     //   callback(); | ||||
|   //     // } | ||||
|   //   } else { | ||||
|   //     callback(); | ||||
|   //   } | ||||
|   // } | ||||
| 
 | ||||
|   // setTheme(flag) async { | ||||
|   //   storage.setItem('isTheme', flag); | ||||
|   // } | ||||
|   // | ||||
|   // isThemeEnabled() { | ||||
|   //   return storage.getItem('isTheme'); | ||||
|   // } | ||||
| 
 | ||||
|   cameraPermission() async { | ||||
|     Map<Permission, PermissionStatus> statuses = await [ | ||||
|       Permission.camera, | ||||
|     ].request(); | ||||
|   } | ||||
| 
 | ||||
|   static isCameraEnabled() async { | ||||
|     return await Permission.camera.isGranted; | ||||
|   } | ||||
| 
 | ||||
|   static isExternalStorageEnabled() async { | ||||
|     return await Permission.storage.isGranted; | ||||
|   } | ||||
| 
 | ||||
|   static isHealthDataPermissionEnabled() async { | ||||
|     return await Permission.sensors.isGranted; | ||||
|   } | ||||
| 
 | ||||
|   static isMicrophonePermissionEnabled() async { | ||||
|     return await Permission.microphone.isGranted; | ||||
|   } | ||||
| 
 | ||||
|   static isCalendarPermissionEnabled() async { | ||||
|     return await Permission.calendarFullAccess.isGranted; | ||||
|   } | ||||
| 
 | ||||
|   setCameraLocationPermission(context) async { | ||||
|     Navigator.pop(context); | ||||
|     openAppSettings(); | ||||
|   } | ||||
| 
 | ||||
|   static isLocationEnabled() async { | ||||
|     var permission = await geo.Geolocator.checkPermission(); | ||||
|     if (permission == geo.LocationPermission.denied) { | ||||
|       return false; | ||||
|     } else { | ||||
|       return true; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   openSettings() async { | ||||
|     openAppSettings(); | ||||
|   } | ||||
| 
 | ||||
|   openAccessbility() { | ||||
|     // OpenSettings.openAppSetting(); | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,113 @@ | ||||
| import 'package:flutter/material.dart'; | ||||
| import 'package:hmg_patient_app_new/core/app_assets.dart'; | ||||
| import 'package:hmg_patient_app_new/core/app_export.dart'; | ||||
| import 'package:hmg_patient_app_new/core/utils/utils.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; | ||||
| import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; | ||||
| 
 | ||||
| class CustomTabBarModel { | ||||
|   String? image; | ||||
|   String title; | ||||
| 
 | ||||
|   CustomTabBarModel(this.image, this.title); | ||||
| } | ||||
| 
 | ||||
| class CustomTabBar extends StatefulWidget { | ||||
|   final int initialIndex = 0; | ||||
|   final List<CustomTabBarModel> tabs; | ||||
|   final Color activeTextColor; | ||||
|   final Color activeBackgroundColor; | ||||
|   final Color inActiveTextColor; | ||||
|   final Color inActiveBackgroundColor; | ||||
|   final Function(int)? onTabChange; | ||||
| 
 | ||||
|   CustomTabBar( | ||||
|       {Key? key, | ||||
|       required this.tabs, | ||||
|       this.activeTextColor = const Color(0xff2E3039), | ||||
|       this.inActiveTextColor = const Color(0xff898A8D), | ||||
|       this.activeBackgroundColor = const Color(0x142E3039), | ||||
|       this.inActiveBackgroundColor = Colors.white, | ||||
|       this.onTabChange}) | ||||
|       : super(key: key); | ||||
| 
 | ||||
|   @override | ||||
|   _CustomTabBarState createState() { | ||||
|     return _CustomTabBarState(); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| class _CustomTabBarState extends State<CustomTabBar> { | ||||
|   int selectedIndex = 0; | ||||
| 
 | ||||
|   @override | ||||
|   void initState() { | ||||
|     super.initState(); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   void dispose() { | ||||
|     super.dispose(); | ||||
|   } | ||||
| 
 | ||||
|   void callBackCurrentIndex() { | ||||
|     if (widget.onTabChange != null) widget.onTabChange!(selectedIndex); | ||||
|   } | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     late Widget parentWidget; | ||||
| 
 | ||||
|     if (widget.tabs.length > 3) { | ||||
|       parentWidget = ListView.separated( | ||||
|         scrollDirection: Axis.horizontal, | ||||
|         padding: EdgeInsets.zero, | ||||
|         physics: const BouncingScrollPhysics(), | ||||
|         itemBuilder: (cxt, index) => myTab(widget.tabs[index], index), | ||||
|         separatorBuilder: (cxt, index) => 4.width, | ||||
|         itemCount: widget.tabs.length, | ||||
|       ); | ||||
|     } else { | ||||
|       parentWidget = Row( | ||||
|         spacing: 4, | ||||
|         children: [for (int i = 0; i < widget.tabs.length; i++) myTab(widget.tabs[i], i).expanded], | ||||
|       ); | ||||
|     } | ||||
| 
 | ||||
|     return Container( | ||||
|         height: 62.h, | ||||
|         padding: EdgeInsets.all(4), | ||||
|         decoration: BoxDecoration( | ||||
|           color: Colors.white, | ||||
|           borderRadius: BorderRadius.circular(11), | ||||
|         ), | ||||
|         child: parentWidget); | ||||
|   } | ||||
| 
 | ||||
|   Widget myTab(CustomTabBarModel tabBar, int currentIndex) { | ||||
|     bool isSelected = selectedIndex == currentIndex; | ||||
|     return Container( | ||||
|         height: 54.h, | ||||
|         padding: EdgeInsets.only(top: 4, bottom: 4, left: 16, right: 16), | ||||
|         alignment: Alignment.center, | ||||
|         decoration: BoxDecoration( | ||||
|           color: isSelected ? widget.activeBackgroundColor : widget.inActiveBackgroundColor, | ||||
|           borderRadius: BorderRadius.circular(7), | ||||
|         ), | ||||
|         child: Row( | ||||
|           mainAxisSize: MainAxisSize.min, | ||||
|           spacing: 4, | ||||
|           children: [ | ||||
|             if (tabBar.image != null) Utils.buildSvgWithAssets(icon: tabBar.image!, height: 18, width: 18, iconColor: isSelected ? widget.activeTextColor : widget.inActiveTextColor), | ||||
|             tabBar.title | ||||
|                 .toText16(weight: isSelected ? FontWeight.w600 : FontWeight.w500, color: isSelected ? widget.activeTextColor : widget.inActiveTextColor, letterSpacing: isSelected ? -0.3 : -0.1), | ||||
|           ], | ||||
|         )).onPress(() { | ||||
|       setState(() { | ||||
|         selectedIndex = currentIndex; | ||||
|       }); | ||||
|       callBackCurrentIndex(); | ||||
|     }); | ||||
|   } | ||||
| } | ||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
					Loading…
					
					
				
		Reference in New Issue