Feat: add slicing login_screen

This commit is contained in:
orangdeso 2025-02-12 18:31:56 +07:00
parent 329530d382
commit ebc8bbc356
35 changed files with 991 additions and 109 deletions

View File

@ -1,6 +1,12 @@
{ {
"configVersion": 2, "configVersion": 2,
"packages": [ "packages": [
{
"name": "args",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{ {
"name": "async", "name": "async",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0", "rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0",
@ -85,6 +91,12 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "2.17" "languageVersion": "2.17"
}, },
{
"name": "flutter_svg",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_svg-2.0.17",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{ {
"name": "flutter_test", "name": "flutter_test",
"rootUri": "file:///D:/Flutter/flutter_sdk/flutter_3.24.0/packages/flutter_test", "rootUri": "file:///D:/Flutter/flutter_sdk/flutter_3.24.0/packages/flutter_test",
@ -103,6 +115,12 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "2.15" "languageVersion": "2.15"
}, },
{
"name": "http",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{ {
"name": "http_parser", "name": "http_parser",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2", "rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2",
@ -151,6 +169,24 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "3.0" "languageVersion": "3.0"
}, },
{
"name": "path_parsing",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path_parsing-1.1.0",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{
"name": "petitparser",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2",
"packageUri": "lib/",
"languageVersion": "3.2"
},
{
"name": "pin_code_fields",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/pin_code_fields-8.0.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{ {
"name": "plugin_platform_interface", "name": "plugin_platform_interface",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8", "rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8",
@ -205,6 +241,24 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "3.5" "languageVersion": "3.5"
}, },
{
"name": "vector_graphics",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics-1.1.18",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "vector_graphics_codec",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_codec-1.1.13",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{
"name": "vector_graphics_compiler",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_compiler-1.1.16",
"packageUri": "lib/",
"languageVersion": "3.4"
},
{ {
"name": "vector_math", "name": "vector_math",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4", "rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4",
@ -223,6 +277,18 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "3.4" "languageVersion": "3.4"
}, },
{
"name": "xml",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/xml-6.5.0",
"packageUri": "lib/",
"languageVersion": "3.2"
},
{
"name": "zoom_tap_animation",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/zoom_tap_animation-1.1.0",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{ {
"name": "e_porter", "name": "e_porter",
"rootUri": "../", "rootUri": "../",
@ -230,7 +296,7 @@
"languageVersion": "3.4" "languageVersion": "3.4"
} }
], ],
"generated": "2025-02-10T08:20:42.126262Z", "generated": "2025-02-11T13:49:26.295004Z",
"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

@ -1,3 +1,7 @@
args
3.3
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0/lib/
async async
2.18 2.18
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/async-2.11.0/
@ -50,10 +54,18 @@ flutter_screenutil
2.17 2.17
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3/lib/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_screenutil-5.9.3/lib/
flutter_svg
3.4
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_svg-2.0.17/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_svg-2.0.17/lib/
get get
2.15 2.15
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/lib/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/get-4.6.6/lib/
http
3.4
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0/lib/
http_parser http_parser
2.12 2.12
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2/
@ -86,6 +98,18 @@ path
3.0 3.0
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/lib/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path-1.9.0/lib/
path_parsing
3.3
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path_parsing-1.1.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/path_parsing-1.1.0/lib/
petitparser
3.2
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2/lib/
pin_code_fields
2.12
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/pin_code_fields-8.0.1/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/pin_code_fields-8.0.1/lib/
plugin_platform_interface plugin_platform_interface
3.0 3.0
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/
@ -118,6 +142,18 @@ typed_data
3.5 3.5
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/lib/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/typed_data-1.4.0/lib/
vector_graphics
3.4
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics-1.1.18/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics-1.1.18/lib/
vector_graphics_codec
3.4
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_codec-1.1.13/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_codec-1.1.13/lib/
vector_graphics_compiler
3.4
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_compiler-1.1.16/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_compiler-1.1.16/lib/
vector_math vector_math
2.14 2.14
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4/
@ -130,6 +166,14 @@ web
3.4 3.4
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/lib/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/web-1.1.0/lib/
xml
3.2
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/xml-6.5.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/xml-6.5.0/lib/
zoom_tap_animation
2.12
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/zoom_tap_animation-1.1.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/zoom_tap_animation-1.1.0/lib/
e_porter e_porter
3.4 3.4
file:///D:/Flutter/Flutter%20Project/e_porter/ file:///D:/Flutter/Flutter%20Project/e_porter/

View File

@ -2,6 +2,13 @@
<library name="Dart Packages" type="DartPackagesLibraryType"> <library name="Dart Packages" type="DartPackagesLibraryType">
<properties> <properties>
<option name="packageNameToDirsMap"> <option name="packageNameToDirsMap">
<entry key="args">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/args-2.6.0/lib" />
</list>
</value>
</entry>
<entry key="async"> <entry key="async">
<value> <value>
<list> <list>
@ -100,6 +107,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="flutter_svg">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_svg-2.0.17/lib" />
</list>
</value>
</entry>
<entry key="flutter_test"> <entry key="flutter_test">
<value> <value>
<list> <list>
@ -121,6 +135,13 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="http">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/http-1.3.0/lib" />
</list>
</value>
</entry>
<entry key="http_parser"> <entry key="http_parser">
<value> <value>
<list> <list>
@ -177,6 +198,27 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="path_parsing">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/path_parsing-1.1.0/lib" />
</list>
</value>
</entry>
<entry key="petitparser">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/petitparser-6.0.2/lib" />
</list>
</value>
</entry>
<entry key="pin_code_fields">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/pin_code_fields-8.0.1/lib" />
</list>
</value>
</entry>
<entry key="plugin_platform_interface"> <entry key="plugin_platform_interface">
<value> <value>
<list> <list>
@ -240,6 +282,27 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="vector_graphics">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics-1.1.18/lib" />
</list>
</value>
</entry>
<entry key="vector_graphics_codec">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_codec-1.1.13/lib" />
</list>
</value>
</entry>
<entry key="vector_graphics_compiler">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_compiler-1.1.16/lib" />
</list>
</value>
</entry>
<entry key="vector_math"> <entry key="vector_math">
<value> <value>
<list> <list>
@ -261,9 +324,24 @@
</list> </list>
</value> </value>
</entry> </entry>
<entry key="xml">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/xml-6.5.0/lib" />
</list>
</value>
</entry>
<entry key="zoom_tap_animation">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/zoom_tap_animation-1.1.0/lib" />
</list>
</value>
</entry>
</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/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/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/characters-1.3.0/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/characters-1.3.0/lib" />
@ -277,7 +355,9 @@
<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.20.0/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/get-4.6.6/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/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/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" />
@ -286,6 +366,9 @@
<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/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/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/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/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/stack_trace-1.11.1/lib" /> <root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/stack_trace-1.11.1/lib" />
@ -294,9 +377,14 @@
<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/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_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.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://$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" />
<root url="file://$PROJECT_DIR$/../../flutter_sdk/flutter_3.24.0/packages/flutter/lib" /> <root url="file://$PROJECT_DIR$/../../flutter_sdk/flutter_3.24.0/packages/flutter/lib" />
<root url="file://$PROJECT_DIR$/../../flutter_sdk/flutter_3.24.0/packages/flutter_test/lib" /> <root url="file://$PROJECT_DIR$/../../flutter_sdk/flutter_3.24.0/packages/flutter_test/lib" />

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"accessibility.signalOptions.volume": 0
}

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.25 4C3.46403 4 2 5.46403 2 7.25V16.75C2 18.536 3.46403 20 5.25 20H18.75C20.536 20 22 18.536 22 16.75V7.25C22 5.46403 20.536 4 18.75 4H5.25ZM5.25 5.5H18.75C19.725 5.5 20.5 6.27497 20.5 7.25V7.80273L12 12.3975L3.5 7.80273V7.25C3.5 6.27497 4.27497 5.5 5.25 5.5ZM3.5 9.50781L11.6436 13.9102C11.7531 13.9693 11.8755 14.0003 12 14.0003C12.1245 14.0003 12.2469 13.9693 12.3564 13.9102L20.5 9.50781V16.75C20.5 17.725 19.725 18.5 18.75 18.5H5.25C4.27497 18.5 3.5 17.725 3.5 16.75V9.50781Z" fill="#6B7280"/>
</svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2C9.79971 2 8 3.79971 8 6V8H6.25C5.01625 8 4 9.01625 4 10.25V19.75C4 20.9838 5.01625 22 6.25 22H17.75C18.9838 22 20 20.9838 20 19.75V10.25C20 9.01625 18.9838 8 17.75 8H9.5V6C9.5 4.61029 10.6103 3.5 12 3.5C13.3239 3.5 14.3905 4.5127 14.4893 5.80664C14.4967 5.90489 14.5234 6.00072 14.5678 6.08864C14.6123 6.17657 14.6736 6.25488 14.7484 6.3191C14.8231 6.38332 14.9097 6.43219 15.0033 6.46292C15.097 6.49365 15.1957 6.50564 15.294 6.4982C15.3922 6.49076 15.488 6.46404 15.5759 6.41957C15.6639 6.37509 15.7422 6.31373 15.8064 6.23899C15.8706 6.16426 15.9194 6.0776 15.9501 5.98398C15.9808 5.89036 15.9928 5.79161 15.9854 5.69336C15.8281 3.6323 14.0971 2 12 2ZM6.25 9.5H8.62695C8.70747 9.51323 8.7896 9.51323 8.87012 9.5H17.75C18.1732 9.5 18.5 9.82675 18.5 10.25V19.75C18.5 20.1733 18.1732 20.5 17.75 20.5H6.25C5.82675 20.5 5.5 20.1733 5.5 19.75V10.25C5.5 9.82675 5.82675 9.5 6.25 9.5ZM12 13.5C11.6022 13.5 11.2206 13.658 10.9393 13.9393C10.658 14.2206 10.5 14.6022 10.5 15C10.5 15.3978 10.658 15.7794 10.9393 16.0607C11.2206 16.342 11.6022 16.5 12 16.5C12.3978 16.5 12.7794 16.342 13.0607 16.0607C13.342 15.7794 13.5 15.3978 13.5 15C13.5 14.6022 13.342 14.2206 13.0607 13.9393C12.7794 13.658 12.3978 13.5 12 13.5Z" fill="#6B7280"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1 +1 @@
df71d99f2ae79f9e146eee08a8e7c0be e5a42601b737771ef8a4800cd9e66dbd

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
#Mon Feb 10 16:38:11 WIB 2025 #Wed Feb 12 14:53:15 WIB 2025
base.0=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\dex\\debug\\mergeExtDexDebug\\classes.dex base.0=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\dex\\debug\\mergeExtDexDebug\\classes.dex
base.1=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\dex\\debug\\mergeLibDexDebug\\0\\classes.dex base.1=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\dex\\debug\\mergeLibDexDebug\\0\\classes.dex
base.2=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\dex\\debug\\mergeProjectDexDebug\\0\\classes.dex base.2=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\dex\\debug\\mergeProjectDexDebug\\0\\classes.dex

View File

@ -1 +1 @@
9f4a1c54eb2544888931426d785c0f33f0e35bf1 904ddde6bbe97a19b187c2e25fce28a59ea87dc8

View File

@ -0,0 +1,69 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../constants/typography.dart';
class ButtonFill extends StatelessWidget {
final String text;
final Color? textColor;
final VoidCallback? onTap;
final bool isLoading;
const ButtonFill({
Key? key,
required this.text,
required this.textColor,
this.onTap,
this.isLoading = false,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: onTap,
style: ElevatedButton.styleFrom(
backgroundColor: isLoading ? GrayColors.gray500 : PrimaryColors.primary800,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(35.r),
),
),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 14.h),
child: isLoading
? _rowLoading()
: TypographyStyles.h6(
text,
color: textColor,
letterSpacing: 1.5,
fontWeight: FontWeight.bold,
),
),
),
);
}
Widget _rowLoading() {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
TypographyStyles.h6(
'Loading...',
color: Colors.white,
),
SizedBox(width: 10.w),
SizedBox(
width: 20.w,
height: 20.h,
child: CircularProgressIndicator(
color: Colors.white,
strokeWidth: 2.5.w,
),
)
],
);
}
}

View File

@ -0,0 +1,72 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../constants/typography.dart';
class ButtonOutline extends StatelessWidget {
final String text;
final Color? textColor;
final VoidCallback? onTap;
final bool isLoading;
const ButtonOutline({
Key? key,
required this.text,
required this.textColor,
this.onTap,
this.isLoading = false,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
child: ElevatedButton(
onPressed: onTap,
style: ElevatedButton.styleFrom(
backgroundColor: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(35.r),
),
side: BorderSide(
width: 2.w,
color: PrimaryColors.primary800,
)),
child: Padding(
padding: EdgeInsets.symmetric(vertical: 14.h),
child: isLoading
? _rowLoading()
: TypographyStyles.h6(
text,
color: textColor,
letterSpacing: 1.5,
fontWeight: FontWeight.bold,
),
),
),
);
}
Widget _rowLoading() {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
TypographyStyles.h6(
'Loading...',
color: Colors.white,
),
SizedBox(width: 10.w),
SizedBox(
width: 20.w,
height: 20.h,
child: CircularProgressIndicator(
color: Colors.white,
strokeWidth: 2.5.w,
),
)
],
);
}
}

View File

@ -13,6 +13,7 @@ class TypographyStyles extends StatelessWidget {
final double? height; final double? height;
final double? fontSize; final double? fontSize;
final FontWeight? fontWeight; final FontWeight? fontWeight;
final double? letterSpacing;
// final TextDirection? textDirection; // final TextDirection? textDirection;
// final Locale? locale; // final Locale? locale;
@ -33,174 +34,185 @@ class TypographyStyles extends StatelessWidget {
this.fontSize, this.fontSize,
this.fontWeight, this.fontWeight,
this.height, this.height,
this.letterSpacing,
}) : style = TextStyle( }) : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 80.sp, fontSize: fontSize ?? 80.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.h2( TypographyStyles.h2(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 60.sp, fontSize: fontSize ?? 60.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.h3( TypographyStyles.h3(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 40.sp, fontSize: fontSize ?? 40.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.h4( TypographyStyles.h4(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 30.sp, fontSize: fontSize ?? 30.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.h5( TypographyStyles.h5(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 24.sp, fontSize: fontSize ?? 24.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.h6( TypographyStyles.h6(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 20.sp, fontSize: fontSize ?? 20.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.body( TypographyStyles.body(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 16.sp, fontSize: fontSize ?? 16.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.caption( TypographyStyles.caption(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 14.sp, fontSize: fontSize ?? 14.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.small( TypographyStyles.small(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 12.sp, fontSize: fontSize ?? 12.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
TypographyStyles.tiny( TypographyStyles.tiny(this.text,
this.text, { {super.key,
super.key, this.textAlign = TextAlign.start,
this.textAlign = TextAlign.start, this.overflow = TextOverflow.ellipsis,
this.overflow = TextOverflow.ellipsis, this.maxlines,
this.maxlines, this.color,
this.color, this.fontSize,
this.fontSize, this.fontWeight,
this.fontWeight, this.height,
this.height, this.letterSpacing})
}) : style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 10.sp, fontSize: fontSize ?? 10.sp,
fontWeight: fontWeight ?? FontWeight.w900, fontWeight: fontWeight ?? FontWeight.w900,
color: color, color: color,
height: height, height: height,
letterSpacing: letterSpacing ?? 0,
); );
@override @override

View File

@ -0,0 +1,87 @@
// ignore_for_file: deprecated_member_use
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart';
class InputForm extends StatefulWidget {
final String hintText;
final String svgIconPath;
final TextEditingController? controller;
final String? Function(String?)? validator;
final TextInputType textInputType;
final List<TextInputFormatter>? inputFormatters;
const InputForm({
Key? key,
required this.hintText,
required this.svgIconPath,
this.controller,
this.validator,
this.textInputType = TextInputType.text,
this.inputFormatters,
}) : super(key: key);
@override
State<InputForm> createState() => _InputFormState();
}
class _InputFormState extends State<InputForm> {
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: GrayColors.gray50,
borderRadius: BorderRadius.circular(10.r),
),
child: TextFormField(
controller: widget.controller,
validator: widget.validator,
keyboardType: widget.textInputType,
inputFormatters: widget.inputFormatters ??
<TextInputFormatter>[
FilteringTextInputFormatter.singleLineFormatter
],
decoration: InputDecoration(
hintText: widget.hintText,
hintStyle: TextStyle(
fontFamily: 'DMSans',
fontSize: 14.sp,
fontWeight: FontWeight.w400,
color: GrayColors.gray600,
),
prefixIcon: Padding(
padding: EdgeInsets.symmetric(vertical: 14.h, horizontal: 14.w),
child: SvgPicture.asset(
widget.svgIconPath,
color: GrayColors.gray500,
),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide(
width: 1.w,
color: GrayColors.gray200,
),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide(
width: 1.w,
color: GrayColors.gray200,
),
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide(
width: 1.w,
color: GrayColors.gray200,
),
),
),
),
);
}
}

View File

@ -0,0 +1,110 @@
// ignore_for_file: deprecated_member_use
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart';
class InputPassword extends StatefulWidget {
final String hintText;
final String svgIconPath;
final TextEditingController? controller;
final String? Function(String?)? validator;
final bool obscureText;
const InputPassword({
Key? key,
required this.hintText,
required this.svgIconPath,
this.controller,
this.validator,
this.obscureText = true,
}) : super(key: key);
@override
State<InputPassword> createState() => _InputPasswordState();
}
class _InputPasswordState extends State<InputPassword> {
late bool _isObscure;
@override
void initState() {
super.initState();
_isObscure = widget.obscureText;
}
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: GrayColors.gray50,
borderRadius: BorderRadius.circular(10.r),
),
child: TextFormField(
controller: widget.controller,
obscureText: _isObscure,
validator: widget.validator,
decoration: InputDecoration(
hintText: widget.hintText,
hintStyle: TextStyle(
fontFamily: 'DMSans',
fontSize: 16.sp,
fontWeight: FontWeight.w400,
color: GrayColors.gray500,
letterSpacing: 1.w,
),
prefixIcon: Padding(
padding: EdgeInsets.symmetric(
vertical: 14.h,
horizontal: 13.w,
),
child: SvgPicture.asset(
widget.svgIconPath,
color: GrayColors.gray500,
),
),
suffixIcon: Padding(
padding: EdgeInsets.symmetric(
horizontal: 16.w,
),
child: IconButton(
icon: Icon(
_isObscure
? Icons.visibility_off_outlined
: Icons.visibility_outlined,
color: GrayColors.gray500,
),
onPressed: () {
setState(() {
_isObscure = !_isObscure;
});
},
),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide(
width: 1.w,
color: GrayColors.gray200,
),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide(
width: 1.w,
color: GrayColors.gray200,
),
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.r),
borderSide: BorderSide(
width: 1.w,
color: GrayColors.gray200,
),
),
),
),
);
}
}

View File

@ -0,0 +1,43 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:e_porter/_core/constants/typography.dart';
import 'package:flutter/material.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
class FooterText extends StatelessWidget {
final String firstText;
final String secondText;
final VoidCallback onTab;
const FooterText({
super.key,
required this.firstText,
required this.secondText,
required this.onTab,
});
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TypographyStyles.body(
firstText,
color: GrayColors.gray500,
fontWeight: FontWeight.w500,
),
SizedBox(
width: 6,
),
InkWell(
onTap: onTab,
child: ZoomTapAnimation(
child: TypographyStyles.body(
secondText,
color: Colors.blue.shade600,
),
),
)
],
);
}
}

View File

@ -0,0 +1,26 @@
import 'package:e_porter/_core/constants/typography.dart';
import 'package:flutter/material.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
class ForgetPasswordText extends StatelessWidget {
final VoidCallback onTab;
const ForgetPasswordText({super.key, required this.onTab});
@override
Widget build(BuildContext context) {
return ZoomTapAnimation(
child: GestureDetector(
onTap: onTab,
child: Align(
alignment: FractionalOffset.centerRight,
child: TypographyStyles.body(
'Lupa password?',
color: Colors.blue.shade600,
fontWeight: FontWeight.w500,
),
),
),
);
}
}

View File

@ -0,0 +1,102 @@
import 'package:e_porter/_core/component/button/button_fill.dart';
import 'package:e_porter/_core/constants/colors.dart';
import 'package:e_porter/_core/constants/typography.dart';
import 'package:e_porter/presentation/screens/auth/component/Input_form.dart';
import 'package:e_porter/presentation/screens/auth/component/Input_password.dart';
import 'package:e_porter/presentation/screens/auth/component/footer_text.dart';
import 'package:e_porter/presentation/screens/auth/component/forget_password.dart';
import 'package:e_porter/routes/app_rountes.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
class LoginScreen extends StatefulWidget {
const LoginScreen({super.key});
@override
State<LoginScreen> createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: SafeArea(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
child: Form(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TypographyStyles.h3(
'Masuk',
color: GrayColors.gray800,
),
SizedBox(height: 32.h),
TypographyStyles.h6(
'Selamat datang kembali! Masuk untuk mengakses pengalaman personal Anda',
color: GrayColors.gray600,
fontWeight: FontWeight.w500,
maxlines: 3,
),
SizedBox(height: 50.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: TypographyStyles.body(
'Email',
color: GrayColors.gray800,
fontWeight: FontWeight.w500,
),
),
SizedBox(height: 16.h),
InputForm(
hintText: 'example@gmail.com',
svgIconPath: 'assets/icons/ic_email.svg',
),
SizedBox(height: 20.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: TypographyStyles.body(
'Password',
color: GrayColors.gray800,
fontWeight: FontWeight.w500,
),
),
SizedBox(height: 16.h),
InputPassword(
hintText: '••••••••••',
svgIconPath: 'assets/icons/ic_padlock.svg',
),
SizedBox(height: 32.h),
ForgetPasswordText(
onTab: () {},
),
SizedBox(height: 40.h),
ZoomTapAnimation(
child: ButtonFill(
text: 'Masuk',
textColor: Colors.white,
onTap: () {},
),
),
],
),
),
),
),
bottomNavigationBar: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
child: FooterText(
firstText: 'Belum punya akun?',
secondText: 'Daftar',
onTab: () {
Get.toNamed(Routes.REGISTER);
},
),
),
);
}
}

View File

@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
class RegisterScreen extends StatefulWidget {
const RegisterScreen({super.key});
@override
State<RegisterScreen> createState() => _RegisterScreenState();
}
class _RegisterScreenState extends State<RegisterScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
);
}
}

View File

@ -1,5 +1,11 @@
import 'package:e_porter/_core/component/button/button_fill.dart';
import 'package:e_porter/_core/component/button/button_outline.dart';
import 'package:e_porter/_core/constants/colors.dart';
import 'package:e_porter/routes/app_rountes.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:zoom_tap_animation/zoom_tap_animation.dart';
class OnboardingScreen extends StatelessWidget { class OnboardingScreen extends StatelessWidget {
const OnboardingScreen({super.key}); const OnboardingScreen({super.key});
@ -7,14 +13,41 @@ class OnboardingScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Center( backgroundColor: Colors.white,
child: Text( body: SafeArea(
'Onboarding', child: Padding(
style: TextStyle( padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
fontSize: 32.sp, child: Column(
children: [],
), ),
), ),
), ),
bottomNavigationBar: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ZoomTapAnimation(
child: ButtonFill(
text: 'Masuk sebagai Penumpang',
textColor: Colors.white,
onTap: () {
Get.toNamed(Routes.LOGIN);
},
),
),
SizedBox(
height: 10.h,
),
ZoomTapAnimation(
child: ButtonOutline(
text: 'Masuk sebagai Porter',
textColor: PrimaryColors.primary800,
),
),
],
),
),
); );
} }
} }

View File

@ -1,3 +1,5 @@
import 'package:e_porter/presentation/screens/auth/pages/login_screen.dart';
import 'package:e_porter/presentation/screens/auth/pages/register_screen.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/splash/splash_screen.dart'; import 'package:e_porter/presentation/screens/splash/splash_screen.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@ -14,10 +16,20 @@ class AppRoutes {
name: Routes.ONBOARDING, name: Routes.ONBOARDING,
page: () => OnboardingScreen(), page: () => OnboardingScreen(),
), ),
GetPage(
name: Routes.LOGIN,
page: () => LoginScreen(),
),
GetPage(
name: Routes.REGISTER,
page: () => RegisterScreen(),
),
]; ];
} }
class Routes { class Routes {
static const SPLASH = '/splash'; static const SPLASH = '/splash';
static const ONBOARDING = '/onboarding'; static const ONBOARDING = '/onboarding';
static const LOGIN = '/login';
static const REGISTER = '/register';
} }

View File

@ -1,6 +1,14 @@
# Generated by pub # Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile # See https://dart.dev/tools/pub/glossary#lockfile
packages: packages:
args:
dependency: transitive
description:
name: args
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
url: "https://pub.dev"
source: hosted
version: "2.6.0"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -110,6 +118,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.9.3" version: "5.9.3"
flutter_svg:
dependency: "direct main"
description:
name: flutter_svg
sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b
url: "https://pub.dev"
source: hosted
version: "2.0.17"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -128,6 +144,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.6.6" version: "4.6.6"
http:
dependency: transitive
description:
name: http
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
url: "https://pub.dev"
source: hosted
version: "1.3.0"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
@ -192,6 +216,30 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.9.0" version: "1.9.0"
path_parsing:
dependency: transitive
description:
name: path_parsing
sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
url: "https://pub.dev"
source: hosted
version: "6.0.2"
pin_code_fields:
dependency: "direct main"
description:
name: pin_code_fields
sha256: "4c0db7fbc889e622e7c71ea54b9ee624bb70c7365b532abea0271b17ea75b729"
url: "https://pub.dev"
source: hosted
version: "8.0.1"
plugin_platform_interface: plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -261,6 +309,30 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.0" version: "1.4.0"
vector_graphics:
dependency: transitive
description:
name: vector_graphics
sha256: "44cc7104ff32563122a929e4620cf3efd584194eec6d1d913eb5ba593dbcf6de"
url: "https://pub.dev"
source: hosted
version: "1.1.18"
vector_graphics_codec:
dependency: transitive
description:
name: vector_graphics_codec
sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
url: "https://pub.dev"
source: hosted
version: "1.1.13"
vector_graphics_compiler:
dependency: transitive
description:
name: vector_graphics_compiler
sha256: "1b4b9e706a10294258727674a340ae0d6e64a7231980f9f9a3d12e4b42407aad"
url: "https://pub.dev"
source: hosted
version: "1.1.16"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@ -285,6 +357,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
xml:
dependency: transitive
description:
name: xml
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
url: "https://pub.dev"
source: hosted
version: "6.5.0"
zoom_tap_animation:
dependency: "direct main"
description:
name: zoom_tap_animation
sha256: d9f7a73cab65aa1546ba6886b5e21d3c8ccccb34e4e5f770301c306d4868bee0
url: "https://pub.dev"
source: hosted
version: "1.1.0"
sdks: sdks:
dart: ">=3.5.0 <4.0.0" dart: ">=3.5.0 <4.0.0"
flutter: ">=3.22.0" flutter: ">=3.22.0"

View File

@ -39,6 +39,9 @@ dependencies:
dio: ^5.8.0+1 dio: ^5.8.0+1
firebase_core: ^3.11.0 firebase_core: ^3.11.0
flutter_screenutil: ^5.9.3 flutter_screenutil: ^5.9.3
zoom_tap_animation: ^1.1.0
pin_code_fields: ^8.0.1
flutter_svg: ^2.0.17
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: