Feat: add slicing booking tickets screen

This commit is contained in:
orangdeso 2025-02-18 00:21:11 +07:00
parent 2cb2af96b8
commit e211053804
39 changed files with 541 additions and 14 deletions

View File

@ -133,6 +133,12 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "2.12" "languageVersion": "2.12"
}, },
{
"name": "intl",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.2",
"packageUri": "lib/",
"languageVersion": "3.3"
},
{ {
"name": "leak_tracker", "name": "leak_tracker",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.5", "rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.5",
@ -199,6 +205,12 @@
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "3.0" "languageVersion": "3.0"
}, },
{
"name": "shimmer",
"rootUri": "file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shimmer-3.0.0",
"packageUri": "lib/",
"languageVersion": "2.17"
},
{ {
"name": "sky_engine", "name": "sky_engine",
"rootUri": "file:///D:/Flutter/flutter_sdk/flutter_3.24.0/bin/cache/pkg/sky_engine", "rootUri": "file:///D:/Flutter/flutter_sdk/flutter_3.24.0/bin/cache/pkg/sky_engine",
@ -302,7 +314,7 @@
"languageVersion": "3.4" "languageVersion": "3.4"
} }
], ],
"generated": "2025-02-14T14:21:57.719988Z", "generated": "2025-02-17T11:57:54.965339Z",
"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

@ -74,6 +74,10 @@ 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/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2/lib/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/http_parser-4.0.2/lib/
intl
3.3
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.2/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/intl-0.20.2/lib/
leak_tracker leak_tracker
3.2 3.2
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.5/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/leak_tracker-10.0.5/
@ -118,6 +122,10 @@ 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/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/lib/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/plugin_platform_interface-2.1.8/lib/
shimmer
2.17
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shimmer-3.0.0/
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/shimmer-3.0.0/lib/
source_span source_span
2.18 2.18
file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/source_span-1.10.0/ file:///C:/Users/ASUS/AppData/Local/Pub/Cache/hosted/pub.dev/source_span-1.10.0/

View File

@ -0,0 +1,3 @@
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.25 3.25488C4.46403 3.25488 3 4.71891 3 6.50488V18.0049C3 19.7909 4.46403 21.2549 6.25 21.2549H17.75C19.536 21.2549 21 19.7909 21 18.0049V6.50488C21 4.71891 19.536 3.25488 17.75 3.25488H6.25ZM6.25 4.75488H17.75C18.725 4.75488 19.5 5.52985 19.5 6.50488V7.25488H4.5V6.50488C4.5 5.52985 5.27497 4.75488 6.25 4.75488ZM4.5 8.75488H19.5V18.0049C19.5 18.9799 18.725 19.7549 17.75 19.7549H6.25C5.27497 19.7549 4.5 18.9799 4.5 18.0049V8.75488ZM7.75 10.7549C7.41848 10.7549 7.10054 10.8866 6.86612 11.121C6.6317 11.3554 6.5 11.6734 6.5 12.0049C6.5 12.3364 6.6317 12.6543 6.86612 12.8888C7.10054 13.1232 7.41848 13.2549 7.75 13.2549C8.08152 13.2549 8.39946 13.1232 8.63388 12.8888C8.8683 12.6543 9 12.3364 9 12.0049C9 11.6734 8.8683 11.3554 8.63388 11.121C8.39946 10.8866 8.08152 10.7549 7.75 10.7549ZM12 10.7549C11.6685 10.7549 11.3505 10.8866 11.1161 11.121C10.8817 11.3554 10.75 11.6734 10.75 12.0049C10.75 12.3364 10.8817 12.6543 11.1161 12.8888C11.3505 13.1232 11.6685 13.2549 12 13.2549C12.3315 13.2549 12.6495 13.1232 12.8839 12.8888C13.1183 12.6543 13.25 12.3364 13.25 12.0049C13.25 11.6734 13.1183 11.3554 12.8839 11.121C12.6495 10.8866 12.3315 10.7549 12 10.7549ZM16.25 10.7549C15.9185 10.7549 15.6005 10.8866 15.3661 11.121C15.1317 11.3554 15 11.6734 15 12.0049C15 12.3364 15.1317 12.6543 15.3661 12.8888C15.6005 13.1232 15.9185 13.2549 16.25 13.2549C16.5815 13.2549 16.8995 13.1232 17.1339 12.8888C17.3683 12.6543 17.5 12.3364 17.5 12.0049C17.5 11.6734 17.3683 11.3554 17.1339 11.121C16.8995 10.8866 16.5815 10.7549 16.25 10.7549ZM7.75 15.2549C7.41848 15.2549 7.10054 15.3866 6.86612 15.621C6.6317 15.8554 6.5 16.1734 6.5 16.5049C6.5 16.8364 6.6317 17.1543 6.86612 17.3888C7.10054 17.6232 7.41848 17.7549 7.75 17.7549C8.08152 17.7549 8.39946 17.6232 8.63388 17.3888C8.8683 17.1543 9 16.8364 9 16.5049C9 16.1734 8.8683 15.8554 8.63388 15.621C8.39946 15.3866 8.08152 15.2549 7.75 15.2549ZM12 15.2549C11.6685 15.2549 11.3505 15.3866 11.1161 15.621C10.8817 15.8554 10.75 16.1734 10.75 16.5049C10.75 16.8364 10.8817 17.1543 11.1161 17.3888C11.3505 17.6232 11.6685 17.7549 12 17.7549C12.3315 17.7549 12.6495 17.6232 12.8839 17.3888C13.1183 17.1543 13.25 16.8364 13.25 16.5049C13.25 16.1734 13.1183 15.8554 12.8839 15.621C12.6495 15.3866 12.3315 15.2549 12 15.2549Z" fill="#004B87"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

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="M2.49219 7.25787C2.49222 7.40713 2.53679 7.55299 2.62019 7.67678C2.70358 7.80057 2.82202 7.89666 2.96033 7.95276C3.09865 8.00887 3.25056 8.02243 3.39662 7.99171C3.54269 7.96099 3.67627 7.88739 3.78027 7.78033L6.5 5.06061L6.5 20.7501C6.49859 20.8494 6.51696 20.9481 6.55402 21.0403C6.59108 21.1326 6.6461 21.2165 6.71588 21.2873C6.78566 21.3581 6.86882 21.4143 6.96051 21.4526C7.0522 21.491 7.15061 21.5107 7.25 21.5107C7.34939 21.5107 7.4478 21.491 7.53949 21.4526C7.63118 21.4143 7.71434 21.3581 7.78412 21.2873C7.8539 21.2165 7.90892 21.1326 7.94598 21.0403C7.98304 20.9481 8.00141 20.8494 8 20.7501L8 5.06061L10.7197 7.78033C10.7888 7.85231 10.8716 7.90978 10.9632 7.94936C11.0548 7.98895 11.1534 8.00986 11.2532 8.01088C11.3529 8.01189 11.4519 7.99299 11.5443 7.95527C11.6367 7.91755 11.7206 7.86178 11.7912 7.79123C11.8617 7.72067 11.9175 7.63674 11.9552 7.54436C11.9929 7.45198 12.0118 7.353 12.0108 7.25322C12.0098 7.15344 11.9889 7.05486 11.9493 6.96327C11.9097 6.87167 11.8523 6.7889 11.7803 6.71979L7.78027 2.71979C7.63962 2.57919 7.44888 2.50021 7.25 2.50021C7.05112 2.50021 6.86038 2.57919 6.71973 2.71979L2.71973 6.71979C2.64773 6.7897 2.5905 6.87334 2.55142 6.96577C2.51233 7.05819 2.49219 7.15752 2.49219 7.25787ZM11.9932 16.7647C11.9988 16.9595 12.0801 17.1444 12.2197 17.2803L16.2197 21.2803C16.3604 21.4209 16.5511 21.4999 16.75 21.4999C16.9489 21.4999 17.1396 21.4209 17.2803 21.2803L21.2803 17.2803C21.3523 17.2112 21.4097 17.1284 21.4493 17.0369C21.4889 16.9453 21.5098 16.8467 21.5108 16.7469C21.5118 16.6471 21.4929 16.5481 21.4552 16.4558C21.4175 16.3634 21.3617 16.2795 21.2912 16.2089C21.2206 16.1383 21.1367 16.0826 21.0443 16.0448C20.9519 16.0071 20.8529 15.9882 20.7532 15.9892C20.6534 15.9903 20.5548 16.0112 20.4632 16.0508C20.3716 16.0903 20.2888 16.1478 20.2197 16.2198L17.5 18.9395L17.5 3.25006C17.5014 3.15068 17.483 3.052 17.446 2.95978C17.4089 2.86755 17.3539 2.78361 17.2841 2.71284C17.2143 2.64206 17.1312 2.58586 17.0395 2.54749C16.9478 2.50913 16.8494 2.48938 16.75 2.48938C16.6506 2.48938 16.5522 2.50913 16.4605 2.54749C16.3688 2.58586 16.2857 2.64206 16.2159 2.71284C16.1461 2.78361 16.0911 2.86755 16.054 2.95978C16.017 3.052 15.9986 3.15068 16 3.25006L16 18.9395L13.2803 16.2198C13.1749 16.1116 13.0393 16.0377 12.8913 16.0079C12.7432 15.978 12.5896 15.9935 12.4505 16.0524C12.3114 16.1113 12.1933 16.2108 12.1117 16.3379C12.0301 16.465 11.9888 16.6137 11.9932 16.7647Z" fill="#004B87"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.75 2.25488C17.2401 2.25488 16 3.495 16 5.00488V7.00488C16 8.51477 17.2401 9.75488 18.75 9.75488C20.2599 9.75488 21.5 8.51477 21.5 7.00488V5.00488C21.5 3.495 20.2599 2.25488 18.75 2.25488ZM3.76758 2.26562C2.18007 2.2553 1.06387 3.92335 1.67871 5.38672L6.40918 16.6494L6.39648 16.6162C6.77534 17.6574 7.65647 18.4093 8.7041 18.6582L8.05469 20.3906C7.63425 21.5121 8.49571 22.7549 9.69336 22.7549H16.8066C18.0041 22.7549 18.8663 21.5118 18.4463 20.3906H18.4453L17.8301 18.751C19.0661 18.7062 20.0623 17.6412 19.9971 16.3857C19.9329 15.1468 18.852 14.2539 17.665 14.2539H10.502C10.3942 14.2539 10.303 14.1901 10.2666 14.0898C10.262 14.0773 10.2572 14.065 10.252 14.0527L9.4873 12.2549H14C14.0994 12.2563 14.1981 12.2379 14.2903 12.2009C14.3825 12.1638 14.4664 12.1088 14.5372 12.039C14.608 11.9692 14.6642 11.8861 14.7026 11.7944C14.7409 11.7027 14.7607 11.6043 14.7607 11.5049C14.7607 11.4055 14.7409 11.3071 14.7026 11.2154C14.6642 11.1237 14.608 11.0405 14.5372 10.9708C14.4664 10.901 14.3825 10.846 14.2903 10.8089C14.1981 10.7718 14.0994 10.7535 14 10.7549H8.84961L7.60547 7.82715L7.76855 7.61914C8.27248 6.9752 8.38597 6.10467 8.0664 5.35254L7.34375 3.65234C6.9974 2.83622 6.1982 2.29792 5.3125 2.28223C4.84191 2.27416 4.29687 2.26914 3.76758 2.26562ZM18.75 3.75488C19.4491 3.75488 20 4.30577 20 5.00488V7.00488C20 7.704 19.4491 8.25488 18.75 8.25488C18.0509 8.25488 17.5 7.704 17.5 7.00488V5.00488C17.5 4.30577 18.0509 3.75488 18.75 3.75488ZM3.75781 3.76562C4.28318 3.76911 4.82391 3.7743 5.28613 3.78223C5.58543 3.78753 5.84623 3.9634 5.96289 4.23828V4.23926L6.68652 5.93945C6.79396 6.19232 6.75599 6.47828 6.58691 6.69434V6.69531L6.15136 7.25195C6.0689 7.35744 6.01617 7.48307 5.99865 7.61582C5.98113 7.74856 5.99947 7.88357 6.05176 8.00684L8.87109 14.6396L8.85644 14.6025C9.10703 15.2923 9.76873 15.7539 10.502 15.7539H17.665C18.1031 15.7539 18.4791 16.0788 18.499 16.4629C18.5223 16.9111 18.1869 17.2549 17.75 17.2549H16.8545C16.7832 17.2446 16.7109 17.2446 16.6396 17.2549H9.87695C9.8469 17.2498 9.81657 17.2465 9.78613 17.2451C9.7345 17.243 9.68279 17.2463 9.63183 17.2549H9.45019C8.71134 17.2549 8.05831 16.7969 7.80566 16.1025C7.80169 16.0914 7.79746 16.0803 7.79297 16.0693L3.06152 4.80566C2.84235 4.28403 3.19231 3.76195 3.75781 3.76562ZM10.2695 18.7549H16.2305L17.041 20.917C17.111 21.1038 17.0062 21.2549 16.8066 21.2549H9.69336C9.495 21.2549 9.38942 21.1025 9.45898 20.917L10.2695 18.7549Z" fill="#004B87"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2.25488C9.24742 2.25488 6.99996 4.50234 6.99996 7.25488C6.99996 10.0074 9.24742 12.2549 12 12.2549C14.7525 12.2549 17 10.0074 17 7.25488C17 4.50234 14.7525 2.25488 12 2.25488ZM12 3.75488C13.9418 3.75488 15.5 5.313 15.5 7.25488C15.5 9.19676 13.9418 10.7549 12 10.7549C10.0581 10.7549 8.49996 9.19676 8.49996 7.25488C8.49996 5.313 10.0581 3.75488 12 3.75488ZM3.70895 9.24805C3.55971 9.25458 3.41582 9.30554 3.29572 9.39437C3.17562 9.4832 3.08479 9.60587 3.03485 9.74666C2.98491 9.88745 2.97815 10.0399 3.01543 10.1846C3.05271 10.3293 3.13234 10.4595 3.2441 10.5586L7.28414 14.2549H6.24996C5.01621 14.2549 3.99996 15.2711 3.99996 16.5049V17.1045C3.99996 18.5749 4.93232 19.8939 6.35445 20.8008C7.77659 21.7077 9.72238 22.2549 12 22.2549C14.2775 22.2549 16.2233 21.7077 17.6455 20.8008C19.0676 19.8939 20 18.5749 20 17.1045V16.5049C20 15.2711 18.9837 14.2549 17.75 14.2549H9.5068L4.25582 9.45117C4.18285 9.3825 4.09687 9.32915 4.00294 9.29426C3.90901 9.25938 3.80905 9.24366 3.70895 9.24805ZM6.24996 15.7549H8.92379L14.165 20.5498C13.5023 20.6803 12.7775 20.7549 12 20.7549C9.96554 20.7549 8.28596 20.2535 7.16109 19.5361C6.03623 18.8188 5.49996 17.9371 5.49996 17.1045V16.5049C5.49996 16.0816 5.82671 15.7549 6.24996 15.7549ZM11.1455 15.7549H17.75C18.1732 15.7549 18.5 16.0816 18.5 16.5049V17.1045C18.5 17.9371 17.9637 18.8188 16.8388 19.5361C16.5438 19.7243 16.2086 19.8965 15.8408 20.0498L11.1455 15.7549Z" fill="#004B87"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.8223 22.2549C14.5669 22.2549 15.1629 21.5708 15.0605 20.833L14.1729 14.4424L16.123 14.3799L16.5498 15.5752V15.5762C16.8015 16.2805 17.4751 16.7549 18.2236 16.7549H18.75C19.4318 16.7549 20 16.1867 20 15.5049V14.2549C21.0956 14.2549 22 13.3505 22 12.2549C22 11.1592 21.0956 10.2549 20 10.2549V9.00488C20 8.32309 19.4318 7.75488 18.75 7.75488H18.2236C17.4757 7.75488 16.8014 8.2297 16.5498 8.93457L16.123 10.1299L14.1729 10.0674L15.0605 3.67676C15.1625 2.93862 14.5683 2.25488 13.8223 2.25488H13.2588C12.6014 2.25488 11.9964 2.62802 11.7021 3.2168V3.21777L8.37109 9.87891L4.52441 9.75488C4.51628 9.75475 4.50814 9.75475 4.5 9.75488C3.12817 9.75488 2 10.8831 2 12.2549C2 13.6267 3.12817 14.7549 4.5 14.7549C4.50814 14.755 4.51628 14.755 4.52441 14.7549L8.37109 14.6309L11.7021 21.293C11.9965 21.8808 12.6011 22.2549 13.2588 22.2549H13.8223ZM13.5352 20.7549H13.2588C13.1665 20.7549 13.0856 20.7043 13.0439 20.6211L9.49805 13.5303C9.43387 13.402 9.33426 13.2948 9.21102 13.2214C9.08779 13.148 8.94609 13.1115 8.80273 13.1162L4.49805 13.2539C3.93802 13.2527 3.5 12.8153 3.5 12.2549C3.5 11.6945 3.93802 11.2571 4.49805 11.2559L8.80273 11.3936C8.94609 11.3982 9.08779 11.3617 9.21102 11.2883C9.33426 11.215 9.43387 11.1078 9.49805 10.9795L13.0439 3.8877C13.0848 3.80586 13.1665 3.75488 13.2588 3.75488H13.5352L12.5723 10.6865C12.5578 10.7907 12.5655 10.8967 12.5947 10.9977C12.6239 11.0987 12.674 11.1925 12.7418 11.2729C12.8096 11.3532 12.8935 11.4185 12.9881 11.4643C13.0827 11.5102 13.1859 11.5357 13.291 11.5391L16.6211 11.6465C16.7798 11.6516 16.936 11.6062 17.0673 11.5169C17.1986 11.4276 17.2981 11.2989 17.3516 11.1494L17.9629 9.43848C18.0033 9.32535 18.1036 9.25488 18.2236 9.25488H18.5V10.9805C18.4999 11.1752 18.5756 11.3624 18.711 11.5023C18.8464 11.6423 19.0309 11.7241 19.2256 11.7305L19.9756 11.7549C19.9837 11.755 19.9919 11.755 20 11.7549C20.2854 11.7549 20.5 11.9695 20.5 12.2549C20.5 12.5402 20.2854 12.7549 20 12.7549C19.9919 12.7548 19.9837 12.7548 19.9756 12.7549L19.2256 12.7793C19.0309 12.7857 18.8464 12.8675 18.711 13.0074C18.5756 13.1474 18.4999 13.3345 18.5 13.5293V15.2549H18.2236C18.1041 15.2549 18.0032 15.184 17.9629 15.0713L17.3516 13.3604C17.2981 13.2108 17.1986 13.0822 17.0673 12.9928C16.936 12.9035 16.7798 12.8582 16.6211 12.8633L13.291 12.9707C13.1859 12.9741 13.0827 12.9996 12.9881 13.0454C12.8935 13.0913 12.8096 13.1565 12.7418 13.2369C12.674 13.3173 12.6239 13.411 12.5947 13.5121C12.5655 13.6131 12.5578 13.7191 12.5723 13.8232L13.5352 20.7549Z" fill="#004B87"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

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="M10.1777 2C9.43306 2 8.83713 2.68409 8.93945 3.42188L9.82715 9.8125L7.87695 9.875L7.4502 8.67969V8.67871C7.19847 7.97443 6.52488 7.5 5.77637 7.5H5.25C4.5682 7.5 4 8.0682 4 8.75V10C2.90436 10 2 10.9044 2 12C2 13.0956 2.90436 14 4 14V15.25C4 15.9318 4.5682 16.5 5.25 16.5H5.77637C6.52431 16.5 7.19858 16.0252 7.4502 15.3203L7.87695 14.125L9.82715 14.1875L8.93945 20.5781C8.83751 21.3163 9.43166 22 10.1777 22H10.7412C11.3986 22 12.0036 21.6269 12.2979 21.0381V21.0371L15.6289 14.376L19.4756 14.5C19.4837 14.5001 19.4919 14.5001 19.5 14.5C20.8718 14.5 22 13.3718 22 12C22 10.6282 20.8718 9.5 19.5 9.5C19.4919 9.49987 19.4837 9.49987 19.4756 9.5L15.6289 9.62402L12.2979 2.96191C12.0035 2.37408 11.3989 2 10.7412 2H10.1777ZM10.4648 3.5H10.7412C10.8335 3.5 10.9144 3.55063 10.9561 3.63379L14.502 10.7246C14.5661 10.8529 14.6657 10.9601 14.789 11.0335C14.9122 11.1068 15.0539 11.1434 15.1973 11.1387L19.502 11.001C20.062 11.0022 20.5 11.4396 20.5 12C20.5 12.5604 20.062 12.9978 19.502 12.999L15.1973 12.8613C15.0539 12.8566 14.9122 12.8932 14.789 12.9665C14.6657 13.0399 14.5661 13.1471 14.502 13.2754L10.9561 20.3672C10.9152 20.449 10.8335 20.5 10.7412 20.5H10.4648L11.4277 13.5684C11.4422 13.4642 11.4345 13.3582 11.4053 13.2572C11.3761 13.1562 11.326 13.0624 11.2582 12.982C11.1904 12.9016 11.1065 12.8364 11.0119 12.7905C10.9173 12.7447 10.8141 12.7192 10.709 12.7158L7.37891 12.6084C7.22021 12.6033 7.06398 12.6486 6.93272 12.738C6.80145 12.8273 6.70191 12.956 6.64844 13.1055L6.03711 14.8164C5.99673 14.9295 5.89643 15 5.77637 15H5.5V13.2744C5.50008 13.0797 5.42442 12.8925 5.28901 12.7526C5.1536 12.6126 4.96906 12.5308 4.77441 12.5244L4.02441 12.5C4.01628 12.4999 4.00814 12.4999 4 12.5C3.71464 12.5 3.5 12.2854 3.5 12C3.5 11.7146 3.71464 11.5 4 11.5C4.00814 11.5001 4.01628 11.5001 4.02441 11.5L4.77441 11.4756C4.96906 11.4692 5.1536 11.3874 5.28901 11.2474C5.42442 11.1075 5.50008 10.9203 5.5 10.7256V9H5.77637C5.89585 9 5.99683 9.0709 6.03711 9.18359L6.64844 10.8945C6.70191 11.044 6.80145 11.1727 6.93272 11.262C7.06398 11.3514 7.22021 11.3967 7.37891 11.3916L10.709 11.2842C10.8141 11.2808 10.9173 11.2553 11.0119 11.2095C11.1065 11.1636 11.1904 11.0984 11.2582 11.018C11.326 10.9376 11.3761 10.8438 11.4053 10.7428C11.4345 10.6418 11.4422 10.5358 11.4277 10.4316L10.4648 3.5Z" fill="#004B87"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1 +1 @@
.env  asset.envassets/icons/ic_account.svg  assetassets/icons/ic_account.svgassets/icons/ic_email.svg  assetassets/icons/ic_email.svgassets/icons/ic_left.svg  assetassets/icons/ic_left.svgassets/icons/ic_less_than.svg  assetassets/icons/ic_less_than.svgassets/icons/ic_more _than.svg  assetassets/icons/ic_more _than.svg assets/icons/ic_notification.svg  asset assets/icons/ic_notification.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/ornamen.svg  assetassets/images/ornamen.svgassets/images/taxi_female.svg  assetassets/images/taxi_female.svgassets/images/taxi_homework.svg  assetassets/images/taxi_homework.svg2packages/cupertino_icons/assets/CupertinoIcons.ttf  asset2packages/cupertino_icons/assets/CupertinoIcons.ttf .env  asset.envassets/icons/ic_account.svg  assetassets/icons/ic_account.svgassets/icons/ic_calendar.svg  assetassets/icons/ic_calendar.svg!assets/icons/ic_data_transfer.svg  .env  assetassets/icons/ic_account.svgassets/icons/ic_email.svg  .env  assetassets/icons/ic_email.svgassets/icons/ic_left.svg  assetassets/icons/ic_flight_seat.svgassets/icons/ic_left.svg  assetassets/icons/ic_left.svgassets/icons/ic_less_than.svg  assetassets/icons/ic_less_than.svgassets/icons/ic_more _than.svg  assetassets/icons/ic_more _than.svg assets/icons/ic_notification.svg  asset assets/icons/ic_notification.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_passenger.svg  assetassets/icons/ic_passenger.svgassets/icons/ic_plane_left.svg  assetassets/icons/ic_plane_left.svgassets/icons/ic_plane_right.svg  .env  assetassets/icons/ic_padlock.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/ornamen.svg  assetassets/images/ornamen.svgassets/images/taxi_female.svg  assetassets/images/taxi_female.svgassets/images/taxi_homework.svg  assetassets/images/taxi_homework.svg2packages/cupertino_icons/assets/CupertinoIcons.ttf  asset2packages/cupertino_icons/assets/CupertinoIcons.ttf

View File

@ -1 +1 @@
{".env":[".env"],"assets/icons/ic_account.svg":["assets/icons/ic_account.svg"],"assets/icons/ic_email.svg":["assets/icons/ic_email.svg"],"assets/icons/ic_left.svg":["assets/icons/ic_left.svg"],"assets/icons/ic_less_than.svg":["assets/icons/ic_less_than.svg"],"assets/icons/ic_more _than.svg":["assets/icons/ic_more _than.svg"],"assets/icons/ic_notification.svg":["assets/icons/ic_notification.svg"],"assets/icons/ic_padlock.svg":["assets/icons/ic_padlock.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/ornamen.svg":["assets/images/ornamen.svg"],"assets/images/taxi_female.svg":["assets/images/taxi_female.svg"],"assets/images/taxi_homework.svg":["assets/images/taxi_homework.svg"],"packages/cupertino_icons/assets/CupertinoIcons.ttf":["packages/cupertino_icons/assets/CupertinoIcons.ttf"]} {".env":[".env"],"assets/icons/ic_account.svg":["assets/icons/ic_account.svg"],"assets/icons/ic_calendar.svg":["assets/icons/ic_calendar.svg"],"assets/icons/ic_data_transfer.svg":["assets/icons/ic_data_transfer.svg"],"assets/icons/ic_email.svg":["assets/icons/ic_email.svg"],"assets/icons/ic_flight_seat.svg":["assets/icons/ic_flight_seat.svg"],"assets/icons/ic_left.svg":["assets/icons/ic_left.svg"],"assets/icons/ic_less_than.svg":["assets/icons/ic_less_than.svg"],"assets/icons/ic_more _than.svg":["assets/icons/ic_more _than.svg"],"assets/icons/ic_notification.svg":["assets/icons/ic_notification.svg"],"assets/icons/ic_padlock.svg":["assets/icons/ic_padlock.svg"],"assets/icons/ic_passenger.svg":["assets/icons/ic_passenger.svg"],"assets/icons/ic_plane_left.svg":["assets/icons/ic_plane_left.svg"],"assets/icons/ic_plane_right.svg":["assets/icons/ic_plane_right.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/ornamen.svg":["assets/images/ornamen.svg"],"assets/images/taxi_female.svg":["assets/images/taxi_female.svg"],"assets/images/taxi_homework.svg":["assets/images/taxi_homework.svg"],"packages/cupertino_icons/assets/CupertinoIcons.ttf":["packages/cupertino_icons/assets/CupertinoIcons.ttf"]}

View File

@ -1 +1 @@
e5a42601b737771ef8a4800cd9e66dbd a98642f7ec914a49407a786c86b25205

View File

@ -1 +1 @@
.env  asset.envassets/icons/ic_account.svg  assetassets/icons/ic_account.svgassets/icons/ic_email.svg  assetassets/icons/ic_email.svgassets/icons/ic_left.svg  assetassets/icons/ic_left.svgassets/icons/ic_less_than.svg  assetassets/icons/ic_less_than.svgassets/icons/ic_more _than.svg  assetassets/icons/ic_more _than.svg assets/icons/ic_notification.svg  asset assets/icons/ic_notification.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/ornamen.svg  assetassets/images/ornamen.svgassets/images/taxi_female.svg  assetassets/images/taxi_female.svgassets/images/taxi_homework.svg  assetassets/images/taxi_homework.svg2packages/cupertino_icons/assets/CupertinoIcons.ttf  asset2packages/cupertino_icons/assets/CupertinoIcons.ttf .env  asset.envassets/icons/ic_account.svg  assetassets/icons/ic_account.svgassets/icons/ic_calendar.svg  assetassets/icons/ic_calendar.svg!assets/icons/ic_data_transfer.svg  .env  assetassets/icons/ic_account.svgassets/icons/ic_email.svg  .env  assetassets/icons/ic_email.svgassets/icons/ic_left.svg  assetassets/icons/ic_flight_seat.svgassets/icons/ic_left.svg  assetassets/icons/ic_left.svgassets/icons/ic_less_than.svg  assetassets/icons/ic_less_than.svgassets/icons/ic_more _than.svg  assetassets/icons/ic_more _than.svg assets/icons/ic_notification.svg  asset assets/icons/ic_notification.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_passenger.svg  assetassets/icons/ic_passenger.svgassets/icons/ic_plane_left.svg  assetassets/icons/ic_plane_left.svgassets/icons/ic_plane_right.svg  .env  assetassets/icons/ic_padlock.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/ornamen.svg  assetassets/images/ornamen.svgassets/images/taxi_female.svg  assetassets/images/taxi_female.svgassets/images/taxi_homework.svg  assetassets/images/taxi_homework.svg2packages/cupertino_icons/assets/CupertinoIcons.ttf  asset2packages/cupertino_icons/assets/CupertinoIcons.ttf

View File

@ -1 +1 @@
{".env":[".env"],"assets/icons/ic_account.svg":["assets/icons/ic_account.svg"],"assets/icons/ic_email.svg":["assets/icons/ic_email.svg"],"assets/icons/ic_left.svg":["assets/icons/ic_left.svg"],"assets/icons/ic_less_than.svg":["assets/icons/ic_less_than.svg"],"assets/icons/ic_more _than.svg":["assets/icons/ic_more _than.svg"],"assets/icons/ic_notification.svg":["assets/icons/ic_notification.svg"],"assets/icons/ic_padlock.svg":["assets/icons/ic_padlock.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/ornamen.svg":["assets/images/ornamen.svg"],"assets/images/taxi_female.svg":["assets/images/taxi_female.svg"],"assets/images/taxi_homework.svg":["assets/images/taxi_homework.svg"],"packages/cupertino_icons/assets/CupertinoIcons.ttf":["packages/cupertino_icons/assets/CupertinoIcons.ttf"]} {".env":[".env"],"assets/icons/ic_account.svg":["assets/icons/ic_account.svg"],"assets/icons/ic_calendar.svg":["assets/icons/ic_calendar.svg"],"assets/icons/ic_data_transfer.svg":["assets/icons/ic_data_transfer.svg"],"assets/icons/ic_email.svg":["assets/icons/ic_email.svg"],"assets/icons/ic_flight_seat.svg":["assets/icons/ic_flight_seat.svg"],"assets/icons/ic_left.svg":["assets/icons/ic_left.svg"],"assets/icons/ic_less_than.svg":["assets/icons/ic_less_than.svg"],"assets/icons/ic_more _than.svg":["assets/icons/ic_more _than.svg"],"assets/icons/ic_notification.svg":["assets/icons/ic_notification.svg"],"assets/icons/ic_padlock.svg":["assets/icons/ic_padlock.svg"],"assets/icons/ic_passenger.svg":["assets/icons/ic_passenger.svg"],"assets/icons/ic_plane_left.svg":["assets/icons/ic_plane_left.svg"],"assets/icons/ic_plane_right.svg":["assets/icons/ic_plane_right.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/ornamen.svg":["assets/images/ornamen.svg"],"assets/images/taxi_female.svg":["assets/images/taxi_female.svg"],"assets/images/taxi_homework.svg":["assets/images/taxi_homework.svg"],"packages/cupertino_icons/assets/CupertinoIcons.ttf":["packages/cupertino_icons/assets/CupertinoIcons.ttf"]}

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
#Mon Feb 10 15:22:04 WIB 2025 #Mon Feb 17 18:59:37 WIB 2025
com.example.e_porter.app-main-26\:/drawable-v21/launch_background.xml=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\merged_res\\debug\\drawable-v21_launch_background.xml.flat com.example.e_porter.app-main-26\:/drawable-v21/launch_background.xml=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\merged_res\\debug\\drawable-v21_launch_background.xml.flat
com.example.e_porter.app-main-26\:/mipmap-hdpi/ic_launcher.png=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\merged_res\\debug\\mipmap-hdpi_ic_launcher.png.flat com.example.e_porter.app-main-26\:/mipmap-hdpi/ic_launcher.png=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\merged_res\\debug\\mipmap-hdpi_ic_launcher.png.flat
com.example.e_porter.app-main-26\:/mipmap-mdpi/ic_launcher.png=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\merged_res\\debug\\mipmap-mdpi_ic_launcher.png.flat com.example.e_porter.app-main-26\:/mipmap-mdpi/ic_launcher.png=D\:\\Flutter\\Flutter Project\\e_porter\\build\\app\\intermediates\\merged_res\\debug\\mipmap-mdpi_ic_launcher.png.flat

View File

@ -1,4 +1,4 @@
#Sun Feb 16 21:29:11 WIB 2025 #Mon Feb 17 22:24:54 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 +0,0 @@
["--track-widget-creation"]

View File

@ -88,7 +88,7 @@ class DefaultAppbarComponent extends StatelessWidget
backgroundColor: backgroundColors, backgroundColor: backgroundColors,
elevation: 0, elevation: 0,
centerTitle: true, centerTitle: true,
leadingWidth: 70, leadingWidth: 66,
title: TypographyStyles.h6( title: TypographyStyles.h6(
title, title,
color: GrayColors.gray800, color: GrayColors.gray800,

View File

@ -0,0 +1,44 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class CustomeShadowCotainner extends StatelessWidget {
final Widget child;
final Color backgroundColor;
final double borderRadius;
final BoxBorder? border;
const CustomeShadowCotainner({
Key? key,
required this.child,
this.backgroundColor = Colors.white,
this.borderRadius = 10.0,
this.border,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
decoration: BoxDecoration(
color: backgroundColor,
borderRadius: BorderRadius.circular(borderRadius),
border: border ??
Border.all(
strokeAlign: 1,
color: GrayColors.gray100,
),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.01),
offset: const Offset(0, 4),
blurRadius: 14,
spreadRadius: 10,
),
],
),
child: child,
);
}
}

View File

@ -148,7 +148,7 @@ class TypographyStyles extends StatelessWidget {
this.fontSize, this.fontSize,
this.fontWeight, this.fontWeight,
this.height, this.height,
this.letterSpacing}) this.letterSpacing,})
: style = TextStyle( : style = TextStyle(
fontFamily: fontFamily, fontFamily: fontFamily,
fontSize: fontSize ?? 16.sp, fontSize: fontSize ?? 16.sp,

View File

@ -4,9 +4,11 @@ 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';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(); await Firebase.initializeApp();
// await initializeDateFormatting('en_US', '');
print("Firebase Initialized Successfully!"); print("Firebase Initialized Successfully!");
runApp(MyApp(initialRoute: Routes.SPLASH)); runApp(MyApp(initialRoute: Routes.SPLASH));

View File

@ -0,0 +1,71 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/svg.dart';
import '../../../../_core/constants/typography.dart';
class FlightClassRadio extends StatelessWidget {
final String title;
final String subTitle;
final String value;
final String groupValue;
final ValueChanged<String?> onChanged;
const FlightClassRadio({
Key? key,
required this.title,
required this.subTitle,
required this.value,
required this.groupValue,
required this.onChanged,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => onChanged(value),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 10.h),
decoration: BoxDecoration(
color: GrayColors.gray50,
borderRadius: BorderRadius.circular(10.r),
border: Border.all(
strokeAlign: 1,
color: GrayColors.gray200,
),
),
child: Row(
children: [
Radio<String>(
value: value,
groupValue: groupValue,
onChanged: onChanged,
activeColor: PrimaryColors.primary800,
),
SizedBox(width: 16.w),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TypographyStyles.body(
title,
color: GrayColors.gray800,
),
SizedBox(height: 4.h),
TypographyStyles.caption(
subTitle,
color: GrayColors.gray500,
fontWeight: FontWeight.w400,
maxlines: 2,
overflow: TextOverflow.ellipsis,
)
],
),
)
],
),
),
);
}
}

View File

@ -0,0 +1,62 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/svg.dart';
import '../../../../_core/constants/typography.dart';
class FlightDateSelector extends StatelessWidget {
final String label;
final String valueText;
final String svgIconPath;
final VoidCallback? onTap;
const FlightDateSelector({
Key? key,
required this.label,
required this.valueText,
required this.svgIconPath,
required this.onTap,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 10.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.r),
border: Border.all(
strokeAlign: 1,
color: GrayColors.gray200,
),
),
child: Row(
children: [
SvgPicture.asset(svgIconPath),
SizedBox(width: 16.w),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TypographyStyles.small(
label,
color: GrayColors.gray500,
fontWeight: FontWeight.w400,
),
SizedBox(height: 4.h),
TypographyStyles.body(
valueText,
color: GrayColors.gray800,
fontWeight: FontWeight.w500,
maxlines: 1,
)
],
)
],
),
),
);
}
}

View File

@ -0,0 +1,62 @@
import 'package:e_porter/_core/constants/colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/svg.dart';
import '../../../../_core/constants/typography.dart';
class FlightSelector extends StatelessWidget {
final String label;
final String hintText;
final String svgIconPath;
final VoidCallback? onTap;
const FlightSelector({
Key? key,
required this.label,
required this.hintText,
required this.svgIconPath,
required this.onTap
}) : super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 10.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.r),
border: Border.all(
strokeAlign: 1,
color: GrayColors.gray200,
),
),
child: Row(
children: [
SvgPicture.asset(svgIconPath),
SizedBox(width: 16.w),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TypographyStyles.small(
label,
color: GrayColors.gray500,
fontWeight: FontWeight.w400,
),
SizedBox(height: 4.h),
TypographyStyles.body(
hintText,
color: GrayColors.gray800,
fontWeight: FontWeight.w500,
maxlines: 1,
)
],
)
],
),
),
);
}
}

View File

@ -1,8 +1,16 @@
import 'package:e_porter/_core/component/appbar/appbar_component.dart'; 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/colors.dart';
import 'package:e_porter/_core/constants/typography.dart';
import 'package:e_porter/presentation/screens/home/component/flight_class_radio.dart';
import 'package:e_porter/presentation/screens/home/component/flight_date_selector.dart';
import 'package:e_porter/presentation/screens/home/component/flight_selector.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:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:intl/intl.dart';
class BookingTickets extends StatefulWidget { class BookingTickets extends StatefulWidget {
const BookingTickets({super.key}); const BookingTickets({super.key});
@ -12,6 +20,10 @@ class BookingTickets extends StatefulWidget {
} }
class _BookingTicketsState extends State<BookingTickets> { class _BookingTicketsState extends State<BookingTickets> {
DateTime selectedDate = DateTime.now();
String selectedDateText = 'dd/mm/yyyy';
final ValueNotifier<String> selectedClass = ValueNotifier<String>('Economy');
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -25,7 +37,225 @@ class _BookingTicketsState extends State<BookingTickets> {
), ),
body: SafeArea( body: SafeArea(
child: Padding( child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
child: Stack(
children: [
IntrinsicHeight(
child: CustomeShadowCotainner(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
FlightSelector(
label: 'Dari',
hintText: 'Pilih Bandara',
svgIconPath: 'assets/icons/ic_plane_right.svg',
onTap: () {},
),
SizedBox(height: 16.h),
FlightSelector(
label: 'Ke',
hintText: 'Pilih Bandara',
svgIconPath: 'assets/icons/ic_plane_left.svg',
onTap: () {},
),
SizedBox(height: 16.h),
FlightDateSelector(
label: 'Tanggal pergi',
valueText: selectedDateText,
svgIconPath: 'assets/icons/ic_calendar.svg',
onTap: () async {
final DateTime? picked = await showDatePicker(
context: context,
initialDate: selectedDate,
firstDate: DateTime.now(),
lastDate: DateTime(2045),
builder: (context, child) {
return Theme(
data: ThemeData.light().copyWith(
colorScheme: ColorScheme.light(
primary: PrimaryColors.primary800,
onPrimary: Colors.white,
surface: Colors.white,
),
dialogBackgroundColor: Colors.white,
),
child: child!,
);
},
);
if (picked != null && picked != selectedDate) {
setState(() {
selectedDate = picked;
selectedDateText =
DateFormat('EEE, d MMM yyyy', 'en_US')
.format(selectedDate);
print(selectedDate);
});
}
},
),
SizedBox(height: 16.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
FlightSelector(
label: 'Kelas penerbangan',
hintText: 'Pilih Kelas',
svgIconPath: 'assets/icons/ic_flight_seat.svg',
onTap: () {
showModalBottomSheet(
context: context,
backgroundColor: Colors.white,
isScrollControlled: true,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.r),
topRight: Radius.circular(10.r)),
),
builder: (context) {
return Padding(
padding:
EdgeInsets.symmetric(horizontal: 16.w),
child: Wrap(
// crossAxisAlignment:
// CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.symmetric(
horizontal: 166.w,
vertical: 20.h,
),
child: Divider(
thickness: 4,
color: Color(0xFFD9D9D9),
),
),
TypographyStyles.h6(
'Kelas Penerbangan',
color: GrayColors.gray800,
),
// SizedBox(height: 16.h),
Padding(
padding: EdgeInsets.symmetric(
vertical: 16.h,
),
child: ValueListenableBuilder<String>(
valueListenable: selectedClass,
builder: (context, selectedValue,
child) {
return Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
FlightClassRadio(
title: 'Economy',
subTitle:
'Memenuhi kebutuhan utama Anda dengan biaya terendah',
value: 'Economy',
groupValue: selectedValue,
onChanged: (value) {
selectedClass.value =
value!;
},
),
SizedBox(height: 10.h),
FlightClassRadio(
title: 'Premium Economy',
subTitle:
'Perjalanan terjangkau dengan makanan lezat dan ruang lebih lega',
value: 'Premium Economy',
groupValue: selectedValue,
onChanged: (value) {
selectedClass.value =
value!;
},
),
SizedBox(height: 10.h),
FlightClassRadio(
title: 'Business',
subTitle:
'Terbang nyaman dengan konter check-in dan kursi eksklusif',
value: 'Business',
groupValue: selectedValue,
onChanged: (value) {
selectedClass.value =
value!;
},
),
SizedBox(height: 10.h),
FlightClassRadio(
title: 'First Class',
subTitle:
'Kelas paling mewah dengan layanan terbaik dan personal',
value: 'First Class',
groupValue: selectedValue,
onChanged: (value) {
selectedClass.value =
value!;
},
),
],
);
},
),
)
],
),
);
},
);
},
),
FlightSelector(
label: 'Penumpang',
hintText: '1 Dewasa',
svgIconPath: 'assets/icons/ic_passenger.svg',
onTap: () {},
),
],
),
SizedBox(height: 16.h),
TypographyStyles.small(
'Penumpang bayi tidak mendapatkan kursi sendiri',
color: GrayColors.gray500,
fontWeight: FontWeight.w400,
),
SizedBox(height: 20.h),
ButtonFill(
text: 'Cari Tiket',
textColor: Colors.white,
onTap: () {},
)
],
),
),
),
Positioned(
right: 40.w, // geser agak ke dalam dari sisi kanan
top: 65.h, // posisikan di tengah2 antara dua card
child: InkWell(
onTap: () {},
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 10.w,
vertical: 10.h,
),
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
border: Border.all(
strokeAlign: 1.5,
color: GrayColors.gray200,
),
),
child:
SvgPicture.asset('assets/icons/ic_data_transfer.svg'),
),
),
)
],
),
), ),
), ),
); );

View File

@ -168,6 +168,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.2" version: "4.0.2"
intl:
dependency: "direct main"
description:
name: intl
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
url: "https://pub.dev"
source: hosted
version: "0.20.2"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@ -256,6 +264,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.8" version: "2.1.8"
shimmer:
dependency: "direct main"
description:
name: shimmer
sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter

View File

@ -43,6 +43,8 @@ dependencies:
pin_code_fields: ^8.0.1 pin_code_fields: ^8.0.1
flutter_svg: ^2.0.17 flutter_svg: ^2.0.17
carousel_slider: ^5.0.0 carousel_slider: ^5.0.0
intl: ^0.20.2
shimmer: ^3.0.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
@ -64,6 +66,7 @@ flutter:
- assets/ - assets/
- assets/icons/ - assets/icons/
- assets/images/ - assets/images/
# - packages/intl/data/symbols/
# The following line ensures that the Material Icons font is # The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in # included with your application, so that you can use the icons in