Feat: complete logic get data for features information users and slicing UI for change password screen

This commit is contained in:
orangdeso 2025-05-12 17:47:54 +07:00
parent 624c008499
commit e8ce225010
16 changed files with 850 additions and 143 deletions

View File

@ -680,7 +680,7 @@
"languageVersion": "3.4" "languageVersion": "3.4"
} }
], ],
"generated": "2025-05-10T18:42:15.590215Z", "generated": "2025-05-12T05:36:15.239350Z",
"generator": "pub", "generator": "pub",
"generatorVersion": "3.5.0", "generatorVersion": "3.5.0",
"flutterRoot": "file:///D:/Flutter/flutter_sdk/flutter_3.24.0", "flutterRoot": "file:///D:/Flutter/flutter_sdk/flutter_3.24.0",

View File

@ -2,10 +2,24 @@
<library name="Dart Packages" type="DartPackagesLibraryType"> <library name="Dart Packages" type="DartPackagesLibraryType">
<properties> <properties>
<option name="packageNameToDirsMap"> <option name="packageNameToDirsMap">
<entry key="_flutterfire_internals">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.54/lib" />
</list>
</value>
</entry>
<entry key="archive">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/archive-4.0.7/lib" />
</list>
</value>
</entry>
<entry key="args"> <entry key="args">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.7.0/lib" />
</list> </list>
</value> </value>
</entry> </entry>
@ -16,6 +30,27 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="barcode">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/barcode-2.2.9/lib" />
</list>
</value>
</entry>
<entry key="barcode_widget">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/barcode_widget-2.0.4/lib" />
</list>
</value>
</entry>
<entry key="bidi">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/bidi-2.0.13/lib" />
</list>
</value>
</entry>
<entry key="boolean_selector"> <entry key="boolean_selector">
<value> <value>
<list> <list>
@ -23,6 +58,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="carousel_slider">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/carousel_slider-5.0.0/lib" />
</list>
</value>
</entry>
<entry key="characters"> <entry key="characters">
<value> <value>
<list> <list>
@ -37,6 +79,27 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="cloud_firestore">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.6/lib" />
</list>
</value>
</entry>
<entry key="cloud_firestore_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.6/lib" />
</list>
</value>
</entry>
<entry key="cloud_firestore_web">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.6/lib" />
</list>
</value>
</entry>
<entry key="collection"> <entry key="collection">
<value> <value>
<list> <list>
@ -44,6 +107,20 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="cross_file">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2/lib" />
</list>
</value>
</entry>
<entry key="crypto">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/crypto-3.0.6/lib" />
</list>
</value>
</entry>
<entry key="cupertino_icons"> <entry key="cupertino_icons">
<value> <value>
<list> <list>
@ -51,17 +128,31 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="dio"> <entry key="device_info_plus">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dio-5.8.0+1/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus-11.3.0/lib" />
</list> </list>
</value> </value>
</entry> </entry>
<entry key="dio_web_adapter"> <entry key="device_info_plus_platform_interface">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dio_web_adapter-2.1.0/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus_platform_interface-7.0.2/lib" />
</list>
</value>
</entry>
<entry key="dotted_dashed_line">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dotted_dashed_line-0.0.3/lib" />
</list>
</value>
</entry>
<entry key="dropdown_button2">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dropdown_button2-2.3.9/lib" />
</list> </list>
</value> </value>
</entry> </entry>
@ -72,10 +163,52 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="ffi">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/ffi-2.1.3/lib" />
</list>
</value>
</entry>
<entry key="file">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/file-7.0.1/lib" />
</list>
</value>
</entry>
<entry key="file_picker">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-10.0.0/lib" />
</list>
</value>
</entry>
<entry key="firebase_auth">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.2/lib" />
</list>
</value>
</entry>
<entry key="firebase_auth_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.2/lib" />
</list>
</value>
</entry>
<entry key="firebase_auth_web">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.2/lib" />
</list>
</value>
</entry>
<entry key="firebase_core"> <entry key="firebase_core">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.11.0/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.13.0/lib" />
</list> </list>
</value> </value>
</entry> </entry>
@ -89,7 +222,56 @@
<entry key="firebase_core_web"> <entry key="firebase_core_web">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.20.0/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.22.0/lib" />
</list>
</value>
</entry>
<entry key="firebase_database">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database-11.3.5/lib" />
</list>
</value>
</entry>
<entry key="firebase_database_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database_platform_interface-0.2.6+5/lib" />
</list>
</value>
</entry>
<entry key="firebase_database_web">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database_web-0.2.6+11/lib" />
</list>
</value>
</entry>
<entry key="firebase_storage">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.5/lib" />
</list>
</value>
</entry>
<entry key="firebase_storage_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.5/lib" />
</list>
</value>
</entry>
<entry key="firebase_storage_web">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.12/lib" />
</list>
</value>
</entry>
<entry key="fixnum">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/fixnum-1.1.1/lib" />
</list> </list>
</value> </value>
</entry> </entry>
@ -100,6 +282,20 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="flutter_picker">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_picker-2.1.0/lib" />
</list>
</value>
</entry>
<entry key="flutter_plugin_android_lifecycle">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.26/lib" />
</list>
</value>
</entry>
<entry key="flutter_screenutil"> <entry key="flutter_screenutil">
<value> <value>
<list> <list>
@ -114,6 +310,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="flutter_switch">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_switch-0.3.2/lib" />
</list>
</value>
</entry>
<entry key="flutter_test"> <entry key="flutter_test">
<value> <value>
<list> <list>
@ -131,7 +334,14 @@
<entry key="get"> <entry key="get">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.7.2/lib" />
</list>
</value>
</entry>
<entry key="google_fonts">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/google_fonts-6.2.1/lib" />
</list> </list>
</value> </value>
</entry> </entry>
@ -149,6 +359,20 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="image">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/image-4.5.4/lib" />
</list>
</value>
</entry>
<entry key="intl">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.2/lib" />
</list>
</value>
</entry>
<entry key="leak_tracker"> <entry key="leak_tracker">
<value> <value>
<list> <list>
@ -170,6 +394,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="logger">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/logger-2.5.0/lib" />
</list>
</value>
</entry>
<entry key="matcher"> <entry key="matcher">
<value> <value>
<list> <list>
@ -191,6 +422,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="mobile_scanner">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/mobile_scanner-6.0.10/lib" />
</list>
</value>
</entry>
<entry key="path"> <entry key="path">
<value> <value>
<list> <list>
@ -205,6 +443,104 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="path_provider">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider-2.1.5/lib" />
</list>
</value>
</entry>
<entry key="path_provider_android">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_android-2.2.15/lib" />
</list>
</value>
</entry>
<entry key="path_provider_foundation">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_foundation-2.4.1/lib" />
</list>
</value>
</entry>
<entry key="path_provider_linux">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_linux-2.2.1/lib" />
</list>
</value>
</entry>
<entry key="path_provider_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_platform_interface-2.1.2/lib" />
</list>
</value>
</entry>
<entry key="path_provider_windows">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0/lib" />
</list>
</value>
</entry>
<entry key="pdf">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/pdf-3.11.3/lib" />
</list>
</value>
</entry>
<entry key="pdf_widget_wrapper">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/pdf_widget_wrapper-1.0.4/lib" />
</list>
</value>
</entry>
<entry key="permission_handler">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler-11.4.0/lib" />
</list>
</value>
</entry>
<entry key="permission_handler_android">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_android-12.1.0/lib" />
</list>
</value>
</entry>
<entry key="permission_handler_apple">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_apple-9.4.6/lib" />
</list>
</value>
</entry>
<entry key="permission_handler_html">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_html-0.1.3+5/lib" />
</list>
</value>
</entry>
<entry key="permission_handler_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_platform_interface-4.3.0/lib" />
</list>
</value>
</entry>
<entry key="permission_handler_windows">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_windows-0.2.1/lib" />
</list>
</value>
</entry>
<entry key="petitparser"> <entry key="petitparser">
<value> <value>
<list> <list>
@ -212,10 +548,10 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="pin_code_fields"> <entry key="platform">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/pin_code_fields-8.0.1/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/platform-3.1.6/lib" />
</list> </list>
</value> </value>
</entry> </entry>
@ -226,6 +562,83 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="posix">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/posix-6.0.2/lib" />
</list>
</value>
</entry>
<entry key="printing">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/printing-5.14.2/lib" />
</list>
</value>
</entry>
<entry key="qr">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/qr-3.0.2/lib" />
</list>
</value>
</entry>
<entry key="shared_preferences">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.3/lib" />
</list>
</value>
</entry>
<entry key="shared_preferences_android">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.7/lib" />
</list>
</value>
</entry>
<entry key="shared_preferences_foundation">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/lib" />
</list>
</value>
</entry>
<entry key="shared_preferences_linux">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_linux-2.4.1/lib" />
</list>
</value>
</entry>
<entry key="shared_preferences_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_platform_interface-2.4.1/lib" />
</list>
</value>
</entry>
<entry key="shared_preferences_web">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_web-2.4.3/lib" />
</list>
</value>
</entry>
<entry key="shared_preferences_windows">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_windows-2.4.1/lib" />
</list>
</value>
</entry>
<entry key="shimmer">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shimmer-3.0.0/lib" />
</list>
</value>
</entry>
<entry key="sky_engine"> <entry key="sky_engine">
<value> <value>
<list> <list>
@ -240,6 +653,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="sprintf">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/sprintf-7.0.0/lib" />
</list>
</value>
</entry>
<entry key="stack_trace"> <entry key="stack_trace">
<value> <value>
<list> <list>
@ -282,6 +702,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="uuid">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/uuid-4.5.1/lib" />
</list>
</value>
</entry>
<entry key="vector_graphics"> <entry key="vector_graphics">
<value> <value>
<list> <list>
@ -320,7 +747,28 @@
<entry key="web"> <entry key="web">
<value> <value>
<list> <list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/lib" /> <option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.1/lib" />
</list>
</value>
</entry>
<entry key="win32">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1/lib" />
</list>
</value>
</entry>
<entry key="win32_registry">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/win32_registry-1.1.5/lib" />
</list>
</value>
</entry>
<entry key="xdg_directories">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/xdg_directories-1.1.0/lib" />
</list> </list>
</value> </value>
</entry> </entry>
@ -341,48 +789,112 @@
</option> </option>
</properties> </properties>
<CLASSES> <CLASSES>
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/_flutterfire_internals-1.3.54/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/archive-4.0.7/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.7.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/barcode-2.2.9/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/barcode_widget-2.0.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/bidi-2.0.13/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/boolean_selector-2.1.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/boolean_selector-2.1.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/carousel_slider-5.0.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/characters-1.3.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/characters-1.3.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/clock-1.1.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/clock-1.1.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_platform_interface-6.6.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/collection-1.18.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/collection-1.18.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cross_file-0.3.4+2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/crypto-3.0.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cupertino_icons-1.0.8/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cupertino_icons-1.0.8/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dio-5.8.0+1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus-11.3.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dio_web_adapter-2.1.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus_platform_interface-7.0.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dotted_dashed_line-0.0.3/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/dropdown_button2-2.3.9/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/fake_async-1.3.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/fake_async-1.3.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.11.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/ffi-2.1.3/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/file-7.0.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-10.0.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_platform_interface-7.6.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.13.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_platform_interface-5.4.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_platform_interface-5.4.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.20.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.22.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database-11.3.5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database_platform_interface-0.2.6+5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database_web-0.2.6+11/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_platform_interface-5.2.5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.12/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/fixnum-1.1.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_picker-2.1.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.26/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_svg-2.0.17/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_svg-2.0.17/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_switch-0.3.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.7.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/google_fonts-6.2.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/image-4.5.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.5/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.5/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_flutter_testing-3.0.5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_testing-3.0.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker_testing-3.0.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/logger-2.5.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/matcher-0.12.16+1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/matcher-0.12.16+1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/material_color_utilities-0.11.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/material_color_utilities-0.11.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/meta-1.15.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/meta-1.15.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/mobile_scanner-6.0.10/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_parsing-1.1.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_parsing-1.1.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider-2.1.5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_android-2.2.15/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_foundation-2.4.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_linux-2.2.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_platform_interface-2.1.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/pdf-3.11.3/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/pdf_widget_wrapper-1.0.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler-11.4.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_android-12.1.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_apple-9.4.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_html-0.1.3+5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_platform_interface-4.3.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_windows-0.2.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/pin_code_fields-8.0.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/platform-3.1.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/posix-6.0.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/printing-5.14.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/qr-3.0.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.3/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.7/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_linux-2.4.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_platform_interface-2.4.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_web-2.4.3/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_windows-2.4.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shimmer-3.0.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/source_span-1.10.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/source_span-1.10.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/sprintf-7.0.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/stack_trace-1.11.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/stack_trace-1.11.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/stream_channel-2.1.2/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/stream_channel-2.1.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/string_scanner-1.2.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/string_scanner-1.2.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/term_glyph-1.2.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/term_glyph-1.2.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/test_api-0.7.2/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/test_api-0.7.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/uuid-4.5.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics-1.1.18/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics-1.1.18/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_codec-1.1.13/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_codec-1.1.13/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_compiler-1.1.16/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_compiler-1.1.16/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vm_service-14.2.4/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vm_service-14.2.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.10.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/win32_registry-1.1.5/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/xdg_directories-1.1.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/xml-6.5.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/xml-6.5.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/zoom_tap_animation-1.1.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/zoom_tap_animation-1.1.0/lib" />
<root url="file://$PROJECT_DIR$/../../flutter_sdk/flutter_3.24.0/bin/cache/pkg/sky_engine/lib" /> <root url="file://$PROJECT_DIR$/../../flutter_sdk/flutter_3.24.0/bin/cache/pkg/sky_engine/lib" />

View File

@ -1,20 +1,33 @@
<component name="libraryTable"> <component name="libraryTable">
<library name="Flutter Plugins" type="FlutterPluginsLibraryType"> <library name="Flutter Plugins" type="FlutterPluginsLibraryType">
<CLASSES> <CLASSES>
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.6" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_windows-2.3.0" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/device_info_plus-11.3.0" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_foundation-2.5.4" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_foundation-2.5.4" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.1" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.6" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore-5.6.4" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.3" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_linux-2.4.1" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_windows-2.4.1" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences-2.5.2" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_web-2.4.3" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_web-2.4.3" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.21.1" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core_web-2.22.0" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/printing-5.14.2" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_linux-2.2.1" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_linux-2.2.1" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.12.1" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_android-2.2.15" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.1" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth-5.5.2" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.4" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage_web-3.10.12" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database_web-0.2.6+11" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_database-11.3.5" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_core-3.13.0" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_storage-12.4.5" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/mobile_scanner-6.0.10" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider-2.1.5" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/firebase_auth_web-5.14.2" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_linux-2.4.1" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler_html-0.1.3+5" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_windows-2.4.1" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/permission_handler-11.4.0" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/file_picker-10.0.0" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_provider_foundation-2.4.1" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/cloud_firestore_web-4.4.6" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/shared_preferences_android-2.4.7" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />

View File

@ -47,7 +47,7 @@ class TextFieldComponent extends StatelessWidget {
), ),
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r), borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide(width: 1.5.w, color: PrimaryColors.primary800), borderSide: BorderSide(width: 2.w, color: PrimaryColors.primary800),
), ),
contentPadding: EdgeInsets.symmetric(vertical: 16.h), contentPadding: EdgeInsets.symmetric(vertical: 16.h),
), ),

View File

@ -4,20 +4,17 @@ import '../../_core/service/logger_service.dart';
import '../../domain/models/user_entity.dart'; import '../../domain/models/user_entity.dart';
class ProfilRepositoryImpl implements ProfilRepository { class ProfilRepositoryImpl implements ProfilRepository {
final FirebaseFirestore _firestore = FirebaseFirestore.instance; final FirebaseFirestore _firestore = FirebaseFirestore.instance;
@override @override
Future<void> createPassenger({ Future<void> createPassenger({
required String userId, required String userId,
required PassengerModel passenger, required PassengerModel passenger,
}) async { }) async {
try { try {
DocumentReference docRef = await _firestore DocumentReference docRef =
.collection('users') await _firestore.collection('users').doc(userId).collection('passenger').add(passenger.toMap());
.doc(userId) logger.d("Passenger doc id: ${docRef.id}");
.collection('passenger')
.add(passenger.toMap());
logger.d("Passenger doc id: ${docRef.id}");
} catch (e) { } catch (e) {
rethrow; rethrow;
} }
@ -26,16 +23,23 @@ class ProfilRepositoryImpl implements ProfilRepository {
@override @override
Future<List<PassengerModel>> getPassengerById(String userId) async { Future<List<PassengerModel>> getPassengerById(String userId) async {
try { try {
QuerySnapshot querySnapshot = await _firestore QuerySnapshot querySnapshot = await _firestore.collection('users').doc(userId).collection('passenger').get();
.collection('users') return querySnapshot.docs.map((doc) => PassengerModel.fromMap(doc.data() as Map<String, dynamic>)).toList();
.doc(userId)
.collection('passenger')
.get();
return querySnapshot.docs
.map((doc) => PassengerModel.fromMap(doc.data() as Map<String, dynamic>))
.toList();
} catch (e) { } catch (e) {
rethrow; rethrow;
} }
} }
}
@override
Future<UserData> getUserById(String userId) async {
try {
final doc = await _firestore.collection('users').doc(userId).get();
if (!doc.exists) {
throw Exception("User with id $userId not found");
}
return UserData.fromMap(doc.data()!);
} catch (e) {
rethrow;
}
}
}

View File

@ -8,17 +8,18 @@ import '../usecases/profil_usecase.dart';
class ProfilBinding extends Bindings { class ProfilBinding extends Bindings {
@override @override
void dependencies() { void dependencies() {
// Injeksi repository
Get.lazyPut<ProfilRepository>(() => ProfilRepositoryImpl()); Get.lazyPut<ProfilRepository>(() => ProfilRepositoryImpl());
// Injeksi use case, menggunakan repository yang telah di-inject
Get.lazyPut(() => CreatePassengerUseCase(Get.find())); Get.lazyPut(() => CreatePassengerUseCase(Get.find()));
Get.lazyPut(() => GetPassengerByIdUseCase(Get.find())); Get.lazyPut(() => GetPassengerByIdUseCase(Get.find()));
Get.lazyPut(() => GetUserByIdUseCase(Get.find()));
// Injeksi controller, menggunakan use case yang sudah tersedia Get.lazyPut(
Get.lazyPut(() => ProfilController( () => ProfilController(
createPassengerUseCase: Get.find(), createPassengerUseCase: Get.find(),
getPassengerByIdUseCase: Get.find(), getPassengerByIdUseCase: Get.find(),
)); getUserByIdUseCase: Get.find(),
),
);
} }
} }

View File

@ -7,4 +7,5 @@ abstract class ProfilRepository {
}); });
Future<List<PassengerModel>> getPassengerById(String userId); Future<List<PassengerModel>> getPassengerById(String userId);
Future<UserData> getUserById(String userId);
} }

View File

@ -19,10 +19,17 @@ class CreatePassengerUseCase {
class GetPassengerByIdUseCase { class GetPassengerByIdUseCase {
final ProfilRepository profilRepository; final ProfilRepository profilRepository;
GetPassengerByIdUseCase(this.profilRepository); GetPassengerByIdUseCase(this.profilRepository);
Future<List<PassengerModel>> call(String userId) async { Future<List<PassengerModel>> call(String userId) async {
return await profilRepository.getPassengerById(userId); return await profilRepository.getPassengerById(userId);
} }
} }
class GetUserByIdUseCase {
final ProfilRepository profilRepository;
GetUserByIdUseCase(this.profilRepository);
Future<UserData> call(String userId) => profilRepository.getUserById(userId);
}

View File

@ -1,4 +1,8 @@
import 'dart:developer';
import 'package:e_porter/_core/service/logger_service.dart'; import 'package:e_porter/_core/service/logger_service.dart';
import 'package:e_porter/_core/service/preferences_service.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../domain/models/user_entity.dart'; import '../../domain/models/user_entity.dart';
@ -7,10 +11,45 @@ import '../../domain/usecases/profil_usecase.dart';
class ProfilController extends GetxController { class ProfilController extends GetxController {
final CreatePassengerUseCase createPassengerUseCase; final CreatePassengerUseCase createPassengerUseCase;
final GetPassengerByIdUseCase getPassengerByIdUseCase; final GetPassengerByIdUseCase getPassengerByIdUseCase;
final GetUserByIdUseCase getUserByIdUseCase;
var passengerList = <PassengerModel>[].obs; var passengerList = <PassengerModel>[].obs;
var userData = Rxn<UserData>();
var isLoading = false.obs;
ProfilController({required this.createPassengerUseCase, required this.getPassengerByIdUseCase}); ProfilController({
required this.createPassengerUseCase,
required this.getPassengerByIdUseCase,
required this.getUserByIdUseCase,
});
@override
void onInit() {
super.onInit();
_loadProfile();
}
Future<void> _loadProfile() async {
isLoading.value = true;
try {
final cached = await PreferencesService.getUserData();
String? uid = cached?.uid;
uid ??= FirebaseAuth.instance.currentUser?.uid;
if (uid == null) {
log("Tidak ditemukan user yang sedang login");
return;
}
final fresh = await getUserByIdUseCase(uid);
userData.value = fresh;
await PreferencesService.saveUserData(fresh);
} catch (e) {
log("Error fetching profile: $e");
} finally {
isLoading.value = false;
}
}
Future<void> addPassenger({ Future<void> addPassenger({
required String userId, required String userId,

View File

@ -40,10 +40,8 @@ class _InputFormState extends State<InputForm> {
controller: widget.controller, controller: widget.controller,
validator: widget.validator, validator: widget.validator,
keyboardType: widget.textInputType, keyboardType: widget.textInputType,
inputFormatters: widget.inputFormatters ?? inputFormatters:
<TextInputFormatter>[ widget.inputFormatters ?? <TextInputFormatter>[FilteringTextInputFormatter.singleLineFormatter],
FilteringTextInputFormatter.singleLineFormatter
],
decoration: InputDecoration( decoration: InputDecoration(
hintText: widget.hintText, hintText: widget.hintText,
hintStyle: TextStyle( hintStyle: TextStyle(
@ -69,8 +67,8 @@ class _InputFormState extends State<InputForm> {
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r), borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide( borderSide: BorderSide(
width: 1.w, width: 2.w,
color: GrayColors.gray200, color: PrimaryColors.primary800,
), ),
), ),
border: OutlineInputBorder( border: OutlineInputBorder(

View File

@ -55,24 +55,14 @@ class _InputPasswordState extends State<InputPassword> {
letterSpacing: 1.w, letterSpacing: 1.w,
), ),
prefixIcon: Padding( prefixIcon: Padding(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(vertical: 14.h, horizontal: 13.w),
vertical: 14.h, child: SvgPicture.asset(widget.svgIconPath, color: GrayColors.gray500),
horizontal: 13.w,
),
child: SvgPicture.asset(
widget.svgIconPath,
color: GrayColors.gray500,
),
), ),
suffixIcon: Padding( suffixIcon: Padding(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(horizontal: 16.w),
horizontal: 16.w,
),
child: IconButton( child: IconButton(
icon: Icon( icon: Icon(
_isObscure _isObscure ? Icons.visibility_off_outlined : Icons.visibility_outlined,
? Icons.visibility_off_outlined
: Icons.visibility_outlined,
color: GrayColors.gray500, color: GrayColors.gray500,
), ),
onPressed: () { onPressed: () {
@ -84,24 +74,15 @@ class _InputPasswordState extends State<InputPassword> {
), ),
enabledBorder: OutlineInputBorder( enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r), borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide( borderSide: BorderSide(width: 1.w, color: GrayColors.gray200),
width: 1.w,
color: GrayColors.gray200,
),
), ),
focusedBorder: OutlineInputBorder( focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r), borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide( borderSide: BorderSide(width: 2.w, color: PrimaryColors.primary800),
width: 1.w,
color: GrayColors.gray200,
),
), ),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r), borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide( borderSide: BorderSide(width: 1.w, color: GrayColors.gray200),
width: 1.w,
color: GrayColors.gray200,
),
), ),
), ),
), ),

View File

@ -0,0 +1,37 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:e_porter/_core/constants/typography.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class HeaderInformation extends StatelessWidget {
final String title;
const HeaderInformation({
Key? key,
required this.title,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
children: [
Icon(
Icons.info_outline_rounded,
color: GrayColors.gray500,
size: 24.sp,
),
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 16.w),
child: TypographyStyles.caption(
title,
color: GrayColors.gray500,
maxlines: 5,
fontWeight: FontWeight.w400,
),
),
)
],
);
}
}

View File

@ -0,0 +1,106 @@
import 'package:e_porter/_core/component/appbar/appbar_component.dart';
import 'package:e_porter/_core/component/button/button_fill.dart';
import 'package:e_porter/_core/component/card/custome_shadow_cotainner.dart';
import 'package:e_porter/_core/constants/colors.dart';
import 'package:e_porter/_core/constants/typography.dart';
import 'package:e_porter/_core/validators/validators.dart';
import 'package:e_porter/presentation/screens/auth/component/Input_password.dart';
import 'package:e_porter/presentation/screens/profile/component/header_information.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
class ChangePasswordScreen extends StatefulWidget {
const ChangePasswordScreen({super.key});
@override
State<ChangePasswordScreen> createState() => _ChangePasswordScreenState();
}
class _ChangePasswordScreenState extends State<ChangePasswordScreen> {
final _formKey = GlobalKey<FormState>();
final _oldPassword = TextEditingController();
final _newPassword = TextEditingController();
final _confirmPassword = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: GrayColors.gray50,
appBar: DefaultAppbarComponent(
title: 'Ganti Kata Sandi',
textColor: Colors.white,
backgroundColors: PrimaryColors.primary800,
onTab: () {
Get.back();
},
),
body: SafeArea(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
child: SingleChildScrollView(
child: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
HeaderInformation(
title:
'Apakah anda yakin ingin mengganti kata sandi? Silahkan masukkan kata sandi lama anda dan kata sandi baru anda',
),
SizedBox(height: 32.h),
textTitle(title: 'Password Lama'),
SizedBox(height: 16.h),
InputPassword(
controller: _oldPassword,
hintText: '••••••••••',
svgIconPath: 'assets/icons/ic_padlock.svg',
validator: Validators.validatorPassword,
),
SizedBox(height: 20.h),
textTitle(title: 'Password Baru'),
SizedBox(height: 16.h),
InputPassword(
controller: _newPassword,
hintText: '••••••••••',
svgIconPath: 'assets/icons/ic_padlock.svg',
validator: Validators.validatorPassword,
),
SizedBox(height: 20.h),
textTitle(title: 'Konfirmasi Password'),
SizedBox(height: 16.h),
InputPassword(
controller: _confirmPassword,
hintText: '••••••••••',
svgIconPath: 'assets/icons/ic_padlock.svg',
validator: Validators.validatorPassword,
),
],
),
),
),
),
),
bottomNavigationBar: CustomeShadowCotainner(
child: ButtonFill(
text: 'Simpan',
textColor: Colors.white,
onTap: () {
if (_formKey.currentState!.validate()) {}
},
),
),
);
}
Widget textTitle({required String title}) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: TypographyStyles.body(
title,
color: GrayColors.gray800,
fontWeight: FontWeight.w500,
),
);
}
}

View File

@ -3,6 +3,9 @@ import 'package:e_porter/_core/component/button/button_outline.dart';
import 'package:e_porter/_core/component/card/custome_shadow_cotainner.dart'; import 'package:e_porter/_core/component/card/custome_shadow_cotainner.dart';
import 'package:e_porter/_core/constants/colors.dart'; import 'package:e_porter/_core/constants/colors.dart';
import 'package:e_porter/_core/constants/typography.dart'; import 'package:e_porter/_core/constants/typography.dart';
import 'package:e_porter/domain/models/user_entity.dart';
import 'package:e_porter/presentation/controllers/profil_controller.dart';
import 'package:e_porter/presentation/screens/profile/component/header_information.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@ -15,6 +18,8 @@ class InformationUsersScreen extends StatefulWidget {
} }
class _InformationUsersScreenState extends State<InformationUsersScreen> { class _InformationUsersScreenState extends State<InformationUsersScreen> {
final ProfilController _profilController = Get.find<ProfilController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -27,22 +32,30 @@ class _InformationUsersScreenState extends State<InformationUsersScreen> {
Get.back(); Get.back();
}, },
), ),
body: SafeArea( body: Obx(() {
child: Padding( final fetchData = _profilController.userData.value;
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h), if (fetchData == null) {
child: SingleChildScrollView( return Center(child: CircularProgressIndicator(color: PrimaryColors.primary800));
child: Form( }
child: Column( return SafeArea(
children: [ child: Padding(
_buildHeaderInformation(), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
_buildCardMain(), child: SingleChildScrollView(
_buildCardSecondary(), child: Form(
], child: Column(
children: [
HeaderInformation(
title:
'Semua informasi mengenai data diri Anda, akan ditampilkan di halaman ini. Lengkapi data diri anda untuk menikmati semua layanan E-Porter'),
_buildCardMain(fetchData),
_buildCardSecondary(fetchData),
],
),
), ),
), ),
), ),
), );
), }),
bottomNavigationBar: CustomeShadowCotainner( bottomNavigationBar: CustomeShadowCotainner(
child: ButtonOutline( child: ButtonOutline(
text: 'Hapus Akun', text: 'Hapus Akun',
@ -54,68 +67,46 @@ class _InformationUsersScreenState extends State<InformationUsersScreen> {
); );
} }
Widget _buildHeaderInformation() { Widget _buildCardMain(UserData userData) {
return Row(
children: [
Icon(
Icons.info_outline_rounded,
color: GrayColors.gray500,
size: 24.sp,
),
Expanded(
child: Padding(
padding: EdgeInsets.only(left: 16.w),
child: TypographyStyles.caption(
'Semua informasi mengenai data diri Anda, akan ditampilkan di halaman ini. Lengkapi data diri anda untuk menikmati semua layanan E-Porter',
color: GrayColors.gray500,
maxlines: 5,
fontWeight: FontWeight.w400,
),
),
)
],
);
}
Widget _buildCardMain() {
return Padding( return Padding(
padding: EdgeInsets.only(top: 32.h), padding: EdgeInsets.only(top: 32.h),
child: CustomeShadowCotainner( child: CustomeShadowCotainner(
child: Column( child: Column(
children: [ children: [
itemWithButton(label: 'Nomor Telepon', value: 'value'), itemWithButton(label: 'Nomor Telepon', value: userData.phone ?? '-'),
SizedBox(height: 24.h), SizedBox(height: 24.h),
itemWithButton(label: 'Email', value: 'ahmadzaqi98mmmmmm@gmail.com'), itemWithButton(label: 'Email', value: userData.email ?? '-'),
SizedBox(height: 24.h), SizedBox(height: 24.h),
itemDoubleWithButton(label1: 'Tipe ID', value2: 'value', label2: 'No ID', value1: 'value'), itemDoubleWithButton(
label1: 'Tipe ID', value1: userData.tipeId ?? '-', label2: 'No ID', value2: userData.noId ?? '-'),
], ],
), ),
), ),
); );
} }
Widget _buildCardSecondary() { Widget _buildCardSecondary(UserData userData) {
return Padding( return Padding(
padding: EdgeInsets.only(top: 20.h), padding: EdgeInsets.only(top: 20.h),
child: CustomeShadowCotainner( child: CustomeShadowCotainner(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
itemWithButton(label: 'Nama Lengkap', value: 'Ahmad Zaqi', isDivider: false), itemWithButton(label: 'Nama Lengkap', value: userData.name ?? '-', isDivider: false),
SizedBox(height: 24.h), SizedBox(height: 24.h),
Row( Row(
children: [ children: [
infoDoubleItem(label: 'Jenis Kelamin', value: 'value'), infoDoubleItem(label: 'Jenis Kelamin', value: userData.gender ?? '-'),
SizedBox(width: 20.w), SizedBox(width: 20.w),
infoDoubleItem(label: 'Tanggal Lahir', value: 'value'), infoDoubleItem(label: 'Tanggal Lahir', value: userData.birthDate ?? '-'),
], ],
), ),
SizedBox(height: 24.h), SizedBox(height: 24.h),
infoDoubleItem(label: 'Alamat', value: 'value'), infoDoubleItem(label: 'Alamat', value: userData.address ?? '-'),
SizedBox(height: 24.h), SizedBox(height: 24.h),
infoDoubleItem(label: 'Kota / Kabupaten', value: 'value'), infoDoubleItem(label: 'Kota / Kabupaten', value: userData.city ?? '-'),
SizedBox(height: 24.h), SizedBox(height: 24.h),
infoDoubleItem(label: 'Pekerjaan', value: 'value') infoDoubleItem(label: 'Pekerjaan', value: userData.work ?? '-'),
], ],
), ),
), ),

View File

@ -96,7 +96,9 @@ class _ProfileScreenState extends State<ProfileScreen> {
ProfileMenu( ProfileMenu(
label: 'Ganti Kata Sandi', label: 'Ganti Kata Sandi',
svgIcon: 'assets/icons/ic_lock.svg', svgIcon: 'assets/icons/ic_lock.svg',
onTap: () {}, onTap: () {
Get.toNamed(Routes.CHANGEPASSWORD);
},
), ),
Padding( Padding(
padding: EdgeInsets.symmetric(vertical: 20.h), padding: EdgeInsets.symmetric(vertical: 20.h),

View File

@ -34,6 +34,7 @@ import 'package:e_porter/presentation/screens/home/pages/ticket_booking_step4_sc
import 'package:e_porter/presentation/screens/home/pages/upload_file_screen.dart'; import 'package:e_porter/presentation/screens/home/pages/upload_file_screen.dart';
import 'package:e_porter/presentation/screens/navigation/main_navigation.dart'; import 'package:e_porter/presentation/screens/navigation/main_navigation.dart';
import 'package:e_porter/presentation/screens/onboarding/onboarding_screen.dart'; import 'package:e_porter/presentation/screens/onboarding/onboarding_screen.dart';
import 'package:e_porter/presentation/screens/profile/pages/change_password_screen.dart';
import 'package:e_porter/presentation/screens/profile/pages/information_users_screen.dart'; import 'package:e_porter/presentation/screens/profile/pages/information_users_screen.dart';
import 'package:e_porter/presentation/screens/profile/pages/profile_screen.dart'; import 'package:e_porter/presentation/screens/profile/pages/profile_screen.dart';
import 'package:e_porter/presentation/screens/profile/pages/add_passenger_screen.dart'; import 'package:e_porter/presentation/screens/profile/pages/add_passenger_screen.dart';
@ -197,22 +198,30 @@ class AppRoutes {
GetPage( GetPage(
name: Routes.INFORMATIONS, name: Routes.INFORMATIONS,
page: () => InformationUsersScreen(), page: () => InformationUsersScreen(),
binding: ProfilBinding(),
),
GetPage(
name: Routes.CHANGEPASSWORD,
page: () => ChangePasswordScreen(),
), ),
]; ];
} }
class Routes { class Routes {
static const NAVBAR = '/navigation'; // Auth
static const SPLASH = '/splash'; static const SPLASH = '/splash';
static const ONBOARDING = '/onboarding'; static const ONBOARDING = '/onboarding';
static const LOGIN = '/login'; static const LOGIN = '/login';
static const VERIFICATION = '/verification';
static const HOME = '/home';
static const BOARDINGPASS = '/boarding_pass';
static const PROFILE = '/profile';
static const REGISTER = '/register'; static const REGISTER = '/register';
static const FORGETPASSWORD = '/forget_password'; static const FORGETPASSWORD = '/forget_password';
static const VERIFICATION = '/verification';
static const STATESUCCES = '/state_succes'; static const STATESUCCES = '/state_succes';
// Navbar
static const NAVBAR = '/navigation';
// Home
static const HOME = '/home';
static const OURSERVICE = '/our_service'; static const OURSERVICE = '/our_service';
static const BOOKINGTICKETS = '/booking_tickets'; static const BOOKINGTICKETS = '/booking_tickets';
static const SEARCHFLIGHT = '/search_flight'; static const SEARCHFLIGHT = '/search_flight';
@ -224,6 +233,9 @@ class Routes {
static const CHOOSECHAIR = '/choose_chair'; static const CHOOSECHAIR = '/choose_chair';
static const PAYMENT = '/payment'; static const PAYMENT = '/payment';
static const UPLOADFILE = '/upload_file'; static const UPLOADFILE = '/upload_file';
// Boarding Pass
static const BOARDINGPASS = '/boarding_pass';
static const TRANSACTIONHISTORY = '/transaction_history'; static const TRANSACTIONHISTORY = '/transaction_history';
static const DETAILTICKET = '/detail_ticket'; static const DETAILTICKET = '/detail_ticket';
static const PRINTBOARDINGPASS = '/print_boarding_pass'; static const PRINTBOARDINGPASS = '/print_boarding_pass';
@ -232,6 +244,9 @@ class Routes {
static const HISTORYPORTER = '/history_porter'; static const HISTORYPORTER = '/history_porter';
static const DETAILHISTORYPORTER = '/detail_history_porter'; static const DETAILHISTORYPORTER = '/detail_history_porter';
// Profile
static const PROFILE = '/profile';
static const ADDPASSENGER = '/add_passenger'; static const ADDPASSENGER = '/add_passenger';
static const INFORMATIONS = '/informations'; static const INFORMATIONS = '/informations';
static const CHANGEPASSWORD = '/change_password';
} }