Feat: update progress slicing design home page done

This commit is contained in:
orangdeso 2025-03-03 23:02:42 +07:00
parent ea005fba9c
commit 694f8b2a08
34 changed files with 669 additions and 80 deletions

View File

@ -332,7 +332,7 @@
"languageVersion": "3.4" "languageVersion": "3.4"
} }
], ],
"generated": "2025-02-28T02:58:44.585666Z", "generated": "2025-03-03T07:35:04.273909Z",
"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

@ -0,0 +1,3 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.37817 1.50146C7.70359 1.5147 7.11587 2.08186 7.12573 2.78759L7.17041 6.09082L5.15918 5.42211L4.66113 3.85254C4.5311 3.44358 4.20012 3.12621 3.78516 3.01464H3.78442C3.07533 2.82463 2.33754 3.29696 2.21265 4.02026L1.91235 5.76489C1.69899 7.00477 2.42924 8.22377 3.62329 8.61987L13.8149 12.0015C14.7294 12.305 15.7326 11.8021 16.0356 10.8874H16.0349C16.3384 9.97329 15.8363 8.97103 14.9224 8.66748L11.4749 7.52197L9.58813 2.33569C9.44027 1.92907 9.093 1.6248 8.67114 1.53076C8.57272 1.50882 8.47454 1.49957 8.37817 1.50146ZM8.35474 2.62719C8.37629 2.62319 8.40042 2.62358 8.42651 2.62939C8.47566 2.64035 8.51338 2.67308 8.53052 2.72021V2.72094L10.511 8.1621C10.5401 8.24183 10.5868 8.31394 10.6477 8.37305C10.7085 8.43215 10.782 8.47672 10.8625 8.50341L14.5679 9.73535C14.9049 9.84729 15.0798 10.1954 14.9678 10.533V10.5337C14.8561 10.8708 14.5068 11.0456 14.1694 10.9336L3.97778 7.552C3.30434 7.3286 2.90085 6.65494 3.02124 5.95532L3.32153 4.21142C3.33685 4.12272 3.4065 4.07835 3.49292 4.10156C3.53891 4.1139 3.57421 4.14702 3.58887 4.19311L4.17334 6.03515C4.20016 6.11986 4.24667 6.19701 4.30905 6.26028C4.37143 6.32355 4.44791 6.37114 4.53223 6.39917L7.56665 7.40771C7.65178 7.43597 7.74244 7.44347 7.83106 7.42957C7.91968 7.41567 8.00368 7.38078 8.07608 7.32781C8.14847 7.27484 8.20714 7.20533 8.24721 7.12507C8.28728 7.04482 8.30757 6.95614 8.3064 6.86645L8.25 2.77221C8.24888 2.69256 8.29006 2.6392 8.35474 2.62719ZM2.8125 14.25C2.73796 14.2489 2.66396 14.2627 2.59479 14.2905C2.52562 14.3183 2.46266 14.3596 2.40958 14.4119C2.3565 14.4642 2.31435 14.5266 2.28558 14.5954C2.2568 14.6641 2.24199 14.738 2.24199 14.8125C2.24199 14.887 2.2568 14.9608 2.28558 15.0296C2.31435 15.0984 2.3565 15.1607 2.40958 15.2131C2.46266 15.2654 2.52562 15.3067 2.59479 15.3345C2.66396 15.3623 2.73796 15.376 2.8125 15.375H15.1875C15.262 15.376 15.336 15.3623 15.4052 15.3345C15.4744 15.3067 15.5373 15.2654 15.5904 15.2131C15.6435 15.1607 15.6857 15.0984 15.7144 15.0296C15.7432 14.9608 15.758 14.887 15.758 14.8125C15.758 14.738 15.7432 14.6641 15.7144 14.5954C15.6857 14.5266 15.6435 14.4642 15.5904 14.4119C15.5373 14.3596 15.4744 14.3183 15.4052 14.2905C15.336 14.2627 15.262 14.2489 15.1875 14.25H2.8125Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,3 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.99365 2.25083C4.78531 2.25345 4.5774 2.30761 4.39087 2.4127C3.69403 2.80546 3.54224 3.7774 4.08545 4.3646L6.46289 6.93394L4.78198 7.66856L3.38672 6.84971C3.01886 6.63348 2.56426 6.61999 2.18408 6.81382C1.53537 7.14428 1.30546 7.98146 1.69336 8.59727L2.6228 10.0731C3.28575 11.1253 4.62874 11.5368 5.76782 11.0384L15.4578 6.79771H15.4585C16.3318 6.41524 16.7361 5.3811 16.3535 4.50742C15.9714 3.6343 14.9383 3.22965 14.0647 3.61167L10.6707 5.09483L5.60083 2.39805H5.6001C5.41084 2.29747 5.20176 2.24822 4.99365 2.25083ZM5.00757 3.3751C5.02954 3.37488 5.05147 3.38027 5.07202 3.39121L10.3828 6.21543C10.4577 6.25527 10.5405 6.27767 10.6253 6.28097C10.71 6.28427 10.7944 6.26837 10.8721 6.23447L14.5151 4.64219C14.8318 4.50371 15.1846 4.64222 15.323 4.9586C15.4616 5.27517 15.3235 5.62841 15.0066 5.76719L5.31665 10.0079C4.67974 10.2866 3.94477 10.0613 3.57422 9.47324L2.64478 7.99815C2.60004 7.92712 2.61995 7.85448 2.69458 7.8165L2.69531 7.81577C2.73438 7.79585 2.779 7.79715 2.8169 7.81943V7.82017L4.45972 8.78403C4.53629 8.8289 4.6224 8.855 4.711 8.86022C4.79959 8.86544 4.88817 8.84962 4.96948 8.81406L7.63843 7.64805C7.7206 7.61208 7.79298 7.55698 7.84952 7.48735C7.90607 7.41772 7.94515 7.33558 7.9635 7.24778C7.98185 7.15998 7.97894 7.06906 7.955 6.98262C7.93107 6.89617 7.88682 6.8167 7.82593 6.75083L4.91089 3.60068C4.84285 3.52714 4.8562 3.44166 4.94312 3.39268C4.96359 3.38114 4.9856 3.37532 5.00757 3.3751ZM2.8125 14.2501C2.73796 14.249 2.66396 14.2628 2.59479 14.2906C2.52562 14.3184 2.46266 14.3597 2.40958 14.412C2.3565 14.4643 2.31435 14.5267 2.28558 14.5955C2.2568 14.6643 2.24199 14.7381 2.24199 14.8126C2.24199 14.8871 2.2568 14.9609 2.28558 15.0297C2.31435 15.0985 2.3565 15.1609 2.40958 15.2132C2.46266 15.2655 2.52562 15.3068 2.59479 15.3346C2.66396 15.3624 2.73796 15.3762 2.8125 15.3751H15.1875C15.262 15.3762 15.336 15.3624 15.4052 15.3346C15.4744 15.3068 15.5373 15.2655 15.5904 15.2132C15.6435 15.1609 15.6857 15.0985 15.7144 15.0297C15.7432 14.9609 15.758 14.8871 15.758 14.8126C15.758 14.7381 15.7432 14.6643 15.7144 14.5955C15.6857 14.5267 15.6435 14.4643 15.5904 14.412C15.5373 14.3597 15.4744 14.3184 15.4052 14.2906C15.336 14.2628 15.262 14.249 15.1875 14.2501H2.8125Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.0327 1.33325C15.7749 1.3252 15.5239 1.41711 15.3322 1.58976C15.3322 1.58976 10.3269 5.99992 4.3335 5.99992C4.06829 5.99994 3.81395 6.10531 3.62642 6.29284C3.43889 6.48037 3.33352 6.73471 3.3335 6.99992V15.1731C3.3335 19.6251 5.39311 26.9509 15.6121 31.2551C15.735 31.3068 15.8669 31.3335 16.0002 31.3335C16.1334 31.3335 16.2654 31.3068 16.3882 31.2551C26.6072 26.9509 28.6668 19.6251 28.6668 15.1731V6.99992C28.6668 6.73471 28.5614 6.48037 28.3739 6.29284C28.1864 6.10531 27.932 5.99994 27.6668 5.99992C21.6734 5.99992 16.6681 1.58976 16.6681 1.58976C16.4931 1.4321 16.2681 1.34126 16.0327 1.33325ZM16.0002 3.61841C17.3755 4.72416 21.4077 7.55804 26.6668 7.91658V15.1731C26.6668 19.0013 25.1958 25.177 16.0002 29.2174C6.80453 25.177 5.3335 19.0013 5.3335 15.1731V7.91658C10.5927 7.55804 14.6249 4.72416 16.0002 3.61841ZM20.9806 11.9908C20.7209 11.9984 20.4744 12.1067 20.2931 12.2929L14.3335 18.2525L11.7072 15.6262C11.615 15.5302 11.5047 15.4536 11.3826 15.4008C11.2604 15.3481 11.129 15.3202 10.996 15.3188C10.8629 15.3175 10.7309 15.3427 10.6078 15.393C10.4846 15.4433 10.3727 15.5176 10.2786 15.6117C10.1845 15.7058 10.1102 15.8177 10.0599 15.9409C10.0096 16.064 9.98439 16.196 9.98574 16.329C9.98709 16.4621 10.015 16.5935 10.0678 16.7156C10.1205 16.8378 10.1972 16.9481 10.2931 17.0403L13.6265 20.3736C13.814 20.5611 14.0683 20.6664 14.3335 20.6664C14.5987 20.6664 14.853 20.5611 15.0405 20.3736L21.7072 13.7069C21.8515 13.5664 21.95 13.3857 21.9898 13.1883C22.0296 12.9909 22.0089 12.786 21.9304 12.6006C21.8519 12.4151 21.7192 12.2577 21.5497 12.1489C21.3803 12.0401 21.1819 11.985 20.9806 11.9908Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,3 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.5566 1.86914C12.4447 1.86917 12.3353 1.90259 12.2425 1.96514C12.1496 2.02769 12.0775 2.11651 12.0355 2.22025C11.9934 2.32399 11.9832 2.43792 12.0063 2.54747C12.0293 2.65702 12.0845 2.7572 12.1648 2.83521L14.2046 4.875H2.4375C2.36296 4.87395 2.28896 4.88772 2.21979 4.91551C2.15062 4.94331 2.08766 4.98457 2.03458 5.03691C1.9815 5.08925 1.93935 5.15161 1.91058 5.22038C1.8818 5.28915 1.86699 5.36295 1.86699 5.4375C1.86699 5.51205 1.8818 5.58585 1.91058 5.65462C1.93935 5.72339 1.9815 5.78575 2.03458 5.83809C2.08766 5.89043 2.15062 5.93169 2.21979 5.95949C2.28896 5.98728 2.36296 6.00105 2.4375 6H14.2046L12.1648 8.03979C12.1108 8.09163 12.0677 8.15371 12.038 8.22241C12.0083 8.2911 11.9926 8.36503 11.9919 8.43987C11.9911 8.5147 12.0053 8.58894 12.0336 8.65822C12.0619 8.72751 12.1037 8.79046 12.1566 8.84337C12.2095 8.89629 12.2725 8.93812 12.3418 8.96641C12.4111 8.9947 12.4853 9.00888 12.5601 9.00811C12.635 9.00735 12.7089 8.99167 12.7776 8.96198C12.8463 8.93229 12.9084 8.88919 12.9602 8.83521L15.9602 5.83521C16.0657 5.72971 16.1249 5.58666 16.1249 5.4375C16.1249 5.28834 16.0657 5.14529 15.9602 5.03979L12.9602 2.03979C12.9078 1.9858 12.845 1.94288 12.7757 1.91356C12.7064 1.88425 12.6319 1.86914 12.5566 1.86914ZM5.42651 8.99487C5.28043 8.99913 5.14174 9.06007 5.0398 9.16479L2.0398 12.1648C1.93435 12.2703 1.87511 12.4133 1.87511 12.5625C1.87511 12.7117 1.93435 12.8547 2.0398 12.9602L5.0398 15.9602C5.09163 16.0142 5.15371 16.0573 5.22241 16.087C5.2911 16.1167 5.36503 16.1324 5.43987 16.1331C5.5147 16.1339 5.58894 16.1197 5.65822 16.0914C5.72751 16.0631 5.79046 16.0213 5.84337 15.9684C5.89629 15.9155 5.93812 15.8525 5.96641 15.7832C5.9947 15.7139 6.00888 15.6397 6.00812 15.5649C6.00735 15.49 5.99167 15.4161 5.96198 15.3474C5.93229 15.2787 5.88919 15.2166 5.83521 15.1648L3.79541 13.125H15.5625C15.637 13.1261 15.711 13.1123 15.7802 13.0845C15.8494 13.0567 15.9123 13.0154 15.9654 12.9631C16.0185 12.9108 16.0607 12.8484 16.0894 12.7796C16.1182 12.7108 16.133 12.637 16.133 12.5625C16.133 12.488 16.1182 12.4142 16.0894 12.3454C16.0607 12.2766 16.0185 12.2142 15.9654 12.1619C15.9123 12.1096 15.8494 12.0683 15.7802 12.0405C15.711 12.0127 15.637 11.9989 15.5625 12H3.79541L5.83521 9.96021C5.91636 9.88117 5.97176 9.77948 5.99416 9.66844C6.01656 9.5574 6.00491 9.44219 5.96075 9.33787C5.91659 9.23356 5.84196 9.14501 5.74664 9.08381C5.65132 9.02261 5.53974 8.99161 5.42651 8.99487Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

34
assets/images/qris.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1 +1 @@
#.env  asset.envassets/icons/ic_account.svg  assetassets/icons/ic_account.svg!assets/icons/ic_boarding_pass.svg  asset!assets/icons/ic_boarding_pass.svg(assets/icons/ic_boarding_pass_filled.svg  asset(assets/icons/ic_boarding_pass_filled.svgassets/icons/ic_calendar.svg  assetassets/icons/ic_calendar.svg!assets/icons/ic_data_transfer.svg  asset!assets/icons/ic_data_transfer.svgassets/icons/ic_edit.svg  assetassets/icons/ic_edit.svgassets/icons/ic_email.svg  assetassets/icons/ic_email.svgassets/icons/ic_flight_seat.svg  assetassets/icons/ic_flight_seat.svg&assets/icons/ic_flight_seat_filled.svg  asset&assets/icons/ic_flight_seat_filled.svgassets/icons/ic_home.svg  assetassets/icons/ic_home.svgassets/icons/ic_home_filled.svg  assetassets/icons/ic_home_filled.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.svg!assets/icons/ic_order_history.svg  asset!assets/icons/ic_order_history.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_passenger.svg  assetassets/icons/ic_passenger.svg assets/icons/ic_plane_filled.svg  asset assets/icons/ic_plane_filled.svgassets/icons/ic_plane_left.svg  assetassets/icons/ic_plane_left.svgassets/icons/ic_plane_right.svg  assetassets/icons/ic_plane_right.svgassets/icons/ic_profile.svg  assetassets/icons/ic_profile.svg"assets/icons/ic_profile_filled.svg  asset"assets/icons/ic_profile_filled.svgassets/icons/ic_right.svg  assetassets/icons/ic_right.svgassets/icons/ic_search.svg  assetassets/icons/ic_search.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/citilink.svg  assetassets/images/citilink.svg!assets/images/divider_custome.svg  asset!assets/images/divider_custome.svg"assets/images/ilustrasi_flight.svg  asset"assets/images/ilustrasi_flight.svgassets/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.svg$assets/icons/ic_airplane_landing.svg  asset$assets/icons/ic_airplane_landing.svg%assets/icons/ic_airplane_take_off.svg  asset%assets/icons/ic_airplane_take_off.svg!assets/icons/ic_boarding_pass.svg  asset!assets/icons/ic_boarding_pass.svg(assets/icons/ic_boarding_pass_filled.svg  asset(assets/icons/ic_boarding_pass_filled.svgassets/icons/ic_calendar.svg  assetassets/icons/ic_calendar.svg!assets/icons/ic_data_transfer.svg  asset!assets/icons/ic_data_transfer.svgassets/icons/ic_edit.svg  assetassets/icons/ic_edit.svgassets/icons/ic_email.svg  assetassets/icons/ic_email.svgassets/icons/ic_flight_seat.svg  assetassets/icons/ic_flight_seat.svg&assets/icons/ic_flight_seat_filled.svg  asset&assets/icons/ic_flight_seat_filled.svgassets/icons/ic_home.svg  assetassets/icons/ic_home.svgassets/icons/ic_home_filled.svg  assetassets/icons/ic_home_filled.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.svg!assets/icons/ic_order_history.svg  asset!assets/icons/ic_order_history.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_passenger.svg  assetassets/icons/ic_passenger.svg assets/icons/ic_plane_filled.svg  asset assets/icons/ic_plane_filled.svgassets/icons/ic_plane_left.svg  assetassets/icons/ic_plane_left.svgassets/icons/ic_plane_right.svg  assetassets/icons/ic_plane_right.svgassets/icons/ic_profile.svg  assetassets/icons/ic_profile.svg"assets/icons/ic_profile_filled.svg  asset"assets/icons/ic_profile_filled.svgassets/icons/ic_protect.svg  assets/icons/ic_right.svg  assets/icons/ic_right.svg  assetassets/icons/ic_right.svgassets/icons/ic_search.svg  assetassets/icons/ic_search.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/icons/ic_transit.svg  assetassets/icons/ic_transit.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/citilink.svg  assetassets/images/citilink.svg!assets/images/divider_custome.svg  asset!assets/images/divider_custome.svg"assets/images/ilustrasi_flight.svg  asset"assets/images/ilustrasi_flight.svgassets/images/ornamen.svg  assetassets/images/ornamen.svgassets/images/qris.svg  assetassets/images/qris.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_boarding_pass.svg":["assets/icons/ic_boarding_pass.svg"],"assets/icons/ic_boarding_pass_filled.svg":["assets/icons/ic_boarding_pass_filled.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_edit.svg":["assets/icons/ic_edit.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_flight_seat_filled.svg":["assets/icons/ic_flight_seat_filled.svg"],"assets/icons/ic_home.svg":["assets/icons/ic_home.svg"],"assets/icons/ic_home_filled.svg":["assets/icons/ic_home_filled.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_order_history.svg":["assets/icons/ic_order_history.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_filled.svg":["assets/icons/ic_plane_filled.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_profile.svg":["assets/icons/ic_profile.svg"],"assets/icons/ic_profile_filled.svg":["assets/icons/ic_profile_filled.svg"],"assets/icons/ic_right.svg":["assets/icons/ic_right.svg"],"assets/icons/ic_search.svg":["assets/icons/ic_search.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/citilink.svg":["assets/images/citilink.svg"],"assets/images/divider_custome.svg":["assets/images/divider_custome.svg"],"assets/images/ilustrasi_flight.svg":["assets/images/ilustrasi_flight.svg"],"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_airplane_landing.svg":["assets/icons/ic_airplane_landing.svg"],"assets/icons/ic_airplane_take_off.svg":["assets/icons/ic_airplane_take_off.svg"],"assets/icons/ic_boarding_pass.svg":["assets/icons/ic_boarding_pass.svg"],"assets/icons/ic_boarding_pass_filled.svg":["assets/icons/ic_boarding_pass_filled.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_edit.svg":["assets/icons/ic_edit.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_flight_seat_filled.svg":["assets/icons/ic_flight_seat_filled.svg"],"assets/icons/ic_home.svg":["assets/icons/ic_home.svg"],"assets/icons/ic_home_filled.svg":["assets/icons/ic_home_filled.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_order_history.svg":["assets/icons/ic_order_history.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_filled.svg":["assets/icons/ic_plane_filled.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_profile.svg":["assets/icons/ic_profile.svg"],"assets/icons/ic_profile_filled.svg":["assets/icons/ic_profile_filled.svg"],"assets/icons/ic_protect.svg":["assets/icons/ic_protect.svg"],"assets/icons/ic_right.svg":["assets/icons/ic_right.svg"],"assets/icons/ic_search.svg":["assets/icons/ic_search.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/icons/ic_transit.svg":["assets/icons/ic_transit.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/citilink.svg":["assets/images/citilink.svg"],"assets/images/divider_custome.svg":["assets/images/divider_custome.svg"],"assets/images/ilustrasi_flight.svg":["assets/images/ilustrasi_flight.svg"],"assets/images/ornamen.svg":["assets/images/ornamen.svg"],"assets/images/qris.svg":["assets/images/qris.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 @@
#.env  asset.envassets/icons/ic_account.svg  assetassets/icons/ic_account.svg!assets/icons/ic_boarding_pass.svg  asset!assets/icons/ic_boarding_pass.svg(assets/icons/ic_boarding_pass_filled.svg  asset(assets/icons/ic_boarding_pass_filled.svgassets/icons/ic_calendar.svg  assetassets/icons/ic_calendar.svg!assets/icons/ic_data_transfer.svg  asset!assets/icons/ic_data_transfer.svgassets/icons/ic_edit.svg  assetassets/icons/ic_edit.svgassets/icons/ic_email.svg  assetassets/icons/ic_email.svgassets/icons/ic_flight_seat.svg  assetassets/icons/ic_flight_seat.svg&assets/icons/ic_flight_seat_filled.svg  asset&assets/icons/ic_flight_seat_filled.svgassets/icons/ic_home.svg  assetassets/icons/ic_home.svgassets/icons/ic_home_filled.svg  assetassets/icons/ic_home_filled.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.svg!assets/icons/ic_order_history.svg  asset!assets/icons/ic_order_history.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_passenger.svg  assetassets/icons/ic_passenger.svg assets/icons/ic_plane_filled.svg  asset assets/icons/ic_plane_filled.svgassets/icons/ic_plane_left.svg  assetassets/icons/ic_plane_left.svgassets/icons/ic_plane_right.svg  assetassets/icons/ic_plane_right.svgassets/icons/ic_profile.svg  assetassets/icons/ic_profile.svg"assets/icons/ic_profile_filled.svg  asset"assets/icons/ic_profile_filled.svgassets/icons/ic_right.svg  assetassets/icons/ic_right.svgassets/icons/ic_search.svg  assetassets/icons/ic_search.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/citilink.svg  assetassets/images/citilink.svg!assets/images/divider_custome.svg  asset!assets/images/divider_custome.svg"assets/images/ilustrasi_flight.svg  asset"assets/images/ilustrasi_flight.svgassets/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.svg$assets/icons/ic_airplane_landing.svg  asset$assets/icons/ic_airplane_landing.svg%assets/icons/ic_airplane_take_off.svg  asset%assets/icons/ic_airplane_take_off.svg!assets/icons/ic_boarding_pass.svg  asset!assets/icons/ic_boarding_pass.svg(assets/icons/ic_boarding_pass_filled.svg  asset(assets/icons/ic_boarding_pass_filled.svgassets/icons/ic_calendar.svg  assetassets/icons/ic_calendar.svg!assets/icons/ic_data_transfer.svg  asset!assets/icons/ic_data_transfer.svgassets/icons/ic_edit.svg  assetassets/icons/ic_edit.svgassets/icons/ic_email.svg  assetassets/icons/ic_email.svgassets/icons/ic_flight_seat.svg  assetassets/icons/ic_flight_seat.svg&assets/icons/ic_flight_seat_filled.svg  asset&assets/icons/ic_flight_seat_filled.svgassets/icons/ic_home.svg  assetassets/icons/ic_home.svgassets/icons/ic_home_filled.svg  assetassets/icons/ic_home_filled.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.svg!assets/icons/ic_order_history.svg  asset!assets/icons/ic_order_history.svgassets/icons/ic_padlock.svg  assetassets/icons/ic_padlock.svgassets/icons/ic_passenger.svg  assetassets/icons/ic_passenger.svg assets/icons/ic_plane_filled.svg  asset assets/icons/ic_plane_filled.svgassets/icons/ic_plane_left.svg  assetassets/icons/ic_plane_left.svgassets/icons/ic_plane_right.svg  assetassets/icons/ic_plane_right.svgassets/icons/ic_profile.svg  assetassets/icons/ic_profile.svg"assets/icons/ic_profile_filled.svg  asset"assets/icons/ic_profile_filled.svgassets/icons/ic_protect.svg  assets/icons/ic_right.svg  assets/icons/ic_right.svg  assetassets/icons/ic_right.svgassets/icons/ic_search.svg  assetassets/icons/ic_search.svgassets/icons/ic_sent.svg  assetassets/icons/ic_sent.svgassets/icons/ic_transit.svg  assetassets/icons/ic_transit.svgassets/images/banner.png  assetassets/images/banner.pngassets/images/citilink.svg  assetassets/images/citilink.svg!assets/images/divider_custome.svg  asset!assets/images/divider_custome.svg"assets/images/ilustrasi_flight.svg  asset"assets/images/ilustrasi_flight.svgassets/images/ornamen.svg  assetassets/images/ornamen.svgassets/images/qris.svg  assetassets/images/qris.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_boarding_pass.svg":["assets/icons/ic_boarding_pass.svg"],"assets/icons/ic_boarding_pass_filled.svg":["assets/icons/ic_boarding_pass_filled.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_edit.svg":["assets/icons/ic_edit.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_flight_seat_filled.svg":["assets/icons/ic_flight_seat_filled.svg"],"assets/icons/ic_home.svg":["assets/icons/ic_home.svg"],"assets/icons/ic_home_filled.svg":["assets/icons/ic_home_filled.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_order_history.svg":["assets/icons/ic_order_history.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_filled.svg":["assets/icons/ic_plane_filled.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_profile.svg":["assets/icons/ic_profile.svg"],"assets/icons/ic_profile_filled.svg":["assets/icons/ic_profile_filled.svg"],"assets/icons/ic_right.svg":["assets/icons/ic_right.svg"],"assets/icons/ic_search.svg":["assets/icons/ic_search.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/citilink.svg":["assets/images/citilink.svg"],"assets/images/divider_custome.svg":["assets/images/divider_custome.svg"],"assets/images/ilustrasi_flight.svg":["assets/images/ilustrasi_flight.svg"],"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_airplane_landing.svg":["assets/icons/ic_airplane_landing.svg"],"assets/icons/ic_airplane_take_off.svg":["assets/icons/ic_airplane_take_off.svg"],"assets/icons/ic_boarding_pass.svg":["assets/icons/ic_boarding_pass.svg"],"assets/icons/ic_boarding_pass_filled.svg":["assets/icons/ic_boarding_pass_filled.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_edit.svg":["assets/icons/ic_edit.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_flight_seat_filled.svg":["assets/icons/ic_flight_seat_filled.svg"],"assets/icons/ic_home.svg":["assets/icons/ic_home.svg"],"assets/icons/ic_home_filled.svg":["assets/icons/ic_home_filled.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_order_history.svg":["assets/icons/ic_order_history.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_filled.svg":["assets/icons/ic_plane_filled.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_profile.svg":["assets/icons/ic_profile.svg"],"assets/icons/ic_profile_filled.svg":["assets/icons/ic_profile_filled.svg"],"assets/icons/ic_protect.svg":["assets/icons/ic_protect.svg"],"assets/icons/ic_right.svg":["assets/icons/ic_right.svg"],"assets/icons/ic_search.svg":["assets/icons/ic_search.svg"],"assets/icons/ic_sent.svg":["assets/icons/ic_sent.svg"],"assets/icons/ic_transit.svg":["assets/icons/ic_transit.svg"],"assets/images/banner.png":["assets/images/banner.png"],"assets/images/citilink.svg":["assets/images/citilink.svg"],"assets/images/divider_custome.svg":["assets/images/divider_custome.svg"],"assets/images/ilustrasi_flight.svg":["assets/images/ilustrasi_flight.svg"],"assets/images/ornamen.svg":["assets/images/ornamen.svg"],"assets/images/qris.svg":["assets/images/qris.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 @@
#Fri Feb 28 10:15:11 WIB 2025 #Mon Mar 03 14:35:30 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 Mar 02 05:14:00 WIB 2025 #Mon Mar 03 22:55:16 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

@ -71,6 +71,7 @@ class DefaultAppbarComponent extends StatelessWidget implements PreferredSizeWid
final String title; final String title;
final Color backgroundColors; final Color backgroundColors;
final bool automaticallyImplyLeading; final bool automaticallyImplyLeading;
final Color? textColor;
final VoidCallback onTab; final VoidCallback onTab;
const DefaultAppbarComponent({ const DefaultAppbarComponent({
@ -78,6 +79,7 @@ class DefaultAppbarComponent extends StatelessWidget implements PreferredSizeWid
required this.title, required this.title,
this.backgroundColors = Colors.white, this.backgroundColors = Colors.white,
this.automaticallyImplyLeading = false, this.automaticallyImplyLeading = false,
this.textColor,
required this.onTab, required this.onTab,
}) : super(key: key); }) : super(key: key);
@ -91,7 +93,7 @@ class DefaultAppbarComponent extends StatelessWidget implements PreferredSizeWid
leadingWidth: 66, leadingWidth: 66,
title: TypographyStyles.h6( title: TypographyStyles.h6(
title, title,
color: GrayColors.gray800, color: textColor ?? GrayColors.gray800,
), ),
leading: GestureDetector( leading: GestureDetector(
onTap: onTab, onTap: onTab,

View File

@ -8,6 +8,7 @@ class CustomeShadowCotainner extends StatelessWidget {
final double borderRadius; final double borderRadius;
final BoxBorder? border; final BoxBorder? border;
final EdgeInsets? padding; final EdgeInsets? padding;
final double? height;
const CustomeShadowCotainner({ const CustomeShadowCotainner({
Key? key, Key? key,
@ -16,12 +17,14 @@ class CustomeShadowCotainner extends StatelessWidget {
this.borderRadius = 10.0, this.borderRadius = 10.0,
this.border, this.border,
this.padding, this.padding,
this.height,
}) : super(key: key); }) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
width: double.infinity, width: double.infinity,
height: height,
padding: padding ?? EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), padding: padding ?? EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
decoration: BoxDecoration( decoration: BoxDecoration(
color: backgroundColor, color: backgroundColor,

View File

@ -40,6 +40,10 @@ class CustomeIcons {
static SvgPicture SearchOutline({double? size, Color? color}) => getIcon('ic_search', color: color); static SvgPicture SearchOutline({double? size, Color? color}) => getIcon('ic_search', color: color);
static SvgPicture EditOutline({double? size, Color? color}) => getIcon('ic_edit', color: color); static SvgPicture EditOutline({double? size, Color? color}) => getIcon('ic_edit', color: color);
static SvgPicture OrderHistoryOutline({double? size, Color? color}) => getIcon('ic_order_history', color: color); static SvgPicture OrderHistoryOutline({double? size, Color? color}) => getIcon('ic_order_history', color: color);
static SvgPicture AirplaneLandingOutline({double? size, Color? color}) => getIcon('ic_airplane_landing', color: color);
static SvgPicture AirplaneTakeOffOutline({double? size, Color? color}) => getIcon('ic_airplane_take_off', color: color);
static SvgPicture TransitOutline({double? size, Color? color}) => getIcon('ic_transit', color: color);
static SvgPicture ProtectOutline({double? size, Color? color}) => getIcon('ic_protect', color: color);
static SvgPicture FlightSeatFilled({double? size, Color? color}) => getIcon('ic_flight_seat_filled', color: color); static SvgPicture FlightSeatFilled({double? size, Color? color}) => getIcon('ic_flight_seat_filled', color: color);
static SvgPicture PlaneRightFilled({double? size, Color? color}) => getIcon('ic_plane_filled', color: color); static SvgPicture PlaneRightFilled({double? size, Color? color}) => getIcon('ic_plane_filled', color: color);

View File

@ -14,6 +14,7 @@ class CardFlightInformation extends StatelessWidget {
final String arrivalCity; final String arrivalCity;
final String plane; final String plane;
final String seatClass; final String seatClass;
final String? servicePorter;
final String passenger; final String passenger;
const CardFlightInformation({ const CardFlightInformation({
@ -24,6 +25,7 @@ class CardFlightInformation extends StatelessWidget {
required this.arrivalCity, required this.arrivalCity,
required this.plane, required this.plane,
required this.seatClass, required this.seatClass,
this.servicePorter,
required this.passenger, required this.passenger,
}); });
@ -59,7 +61,6 @@ class CardFlightInformation extends StatelessWidget {
children: [ children: [
TypographyStyles.body(departureCity, color: GrayColors.gray800, letterSpacing: 0.2), TypographyStyles.body(departureCity, color: GrayColors.gray800, letterSpacing: 0.2),
SizedBox(width: 10.w), SizedBox(width: 10.w),
// SvgPicture.asset('assets/icons/ic_plane_right_filled.svg'),
CustomeIcons.PlaneRightFilled(color: PrimaryColors.primary800), CustomeIcons.PlaneRightFilled(color: PrimaryColors.primary800),
SizedBox(width: 10.w), SizedBox(width: 10.w),
TypographyStyles.body(arrivalCity, color: GrayColors.gray800, letterSpacing: 0.2) TypographyStyles.body(arrivalCity, color: GrayColors.gray800, letterSpacing: 0.2)
@ -74,15 +75,8 @@ class CardFlightInformation extends StatelessWidget {
letterSpacing: 0.2, letterSpacing: 0.2,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
SizedBox(width: 10.w), _buildText(context, text: seatClass),
CircleAvatar(radius: 2.r, backgroundColor: Color(0xFFD9D9D9)), servicePorter != null ? _buildText(context, text: servicePorter!) : SizedBox.shrink(),
SizedBox(width: 10.w),
TypographyStyles.small(
seatClass,
color: GrayColors.gray600,
letterSpacing: 0.2,
fontWeight: FontWeight.w400,
),
], ],
), ),
SizedBox(height: 4.h), SizedBox(height: 4.h),
@ -96,4 +90,23 @@ class CardFlightInformation extends StatelessWidget {
), ),
); );
} }
Widget _buildText(
BuildContext context, {
required String text,
}) {
return Row(
children: [
SizedBox(width: 10.w),
CircleAvatar(radius: 2.r, backgroundColor: Color(0xFFD9D9D9)),
SizedBox(width: 10.w),
TypographyStyles.small(
text,
color: GrayColors.gray600,
letterSpacing: 0.2,
fontWeight: FontWeight.w400,
),
],
);
}
} }

View File

@ -21,7 +21,7 @@ class CardSeat extends StatelessWidget {
height: 32.h, height: 32.h,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6.r), borderRadius: BorderRadius.circular(6.r),
color: Colors.grey, color: Color(0xFFD9D9D9),
), ),
), ),
), ),

View File

@ -0,0 +1,80 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../../../../_core/component/card/custome_shadow_cotainner.dart';
import '../../../../_core/constants/colors.dart';
import '../../../../_core/constants/typography.dart';
class FooterPrice extends StatelessWidget {
final String price;
final String labelText;
final String labelButton;
final Widget? iconButton;
final VoidCallback onTap;
const FooterPrice({
Key? key,
required this.price,
required this.labelText,
required this.labelButton,
this.iconButton,
required this.onTap,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return CustomeShadowCotainner(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
RichText(
text: TextSpan(
text: "Total ${labelText}\n",
style: TextStyle(
fontFamily: 'DMSans',
color: GrayColors.gray800,
fontWeight: FontWeight.w400,
fontSize: 16.sp,
height: 1.8.h,
),
children: [
TextSpan(
text: "Rp ${price}",
style: TextStyle(
fontFamily: 'DMSans',
color: PrimaryColors.primary800,
fontWeight: FontWeight.bold,
fontSize: 18.sp,
),
)
],
),
),
ZoomTapAnimation(
child: GestureDetector(
onTap: onTap,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 16.h),
decoration: BoxDecoration(
color: PrimaryColors.primary800,
borderRadius: BorderRadius.circular(10.r),
),
child: iconButton != null
? Row(
children: [
iconButton!,
SizedBox(width: 10.w),
TypographyStyles.body(labelButton, color: Colors.white)
],
)
: TypographyStyles.body(labelButton, color: Colors.white),
),
),
)
],
),
);
}
}

View File

@ -12,6 +12,7 @@ import 'package:get/get.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart'; import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../../../../_core/component/button/button_fill.dart'; import '../../../../_core/component/button/button_fill.dart';
import '../../routes/app_rountes.dart';
class ChooseSeatScreen extends StatefulWidget { class ChooseSeatScreen extends StatefulWidget {
const ChooseSeatScreen({super.key}); const ChooseSeatScreen({super.key});
@ -21,8 +22,20 @@ class ChooseSeatScreen extends StatefulWidget {
} }
class _ChooseSeatScreenState extends State<ChooseSeatScreen> { class _ChooseSeatScreenState extends State<ChooseSeatScreen> {
// Menyimpan status setiap kursi apakah terpilih atau tidak
final List<bool> selectedSeats = List.generate(3, (_) => false); final List<bool> selectedSeats = List.generate(3, (_) => false);
// late ScrollController _scrollController;
// @override
// void initState() {
// super.initState();
// _scrollController = ScrollController();
// }
// @override
// void dispose() {
// _scrollController.dispose();
// super.dispose();
// }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -38,47 +51,84 @@ class _ChooseSeatScreenState extends State<ChooseSeatScreen> {
}, },
), ),
body: SafeArea( body: SafeArea(
child: Column( child: CustomScrollView(
mainAxisSize: MainAxisSize.min, // controller: _scrollController,
children: [ slivers: [
_buildCardFlight('YIA', 'LOP', 'Economy', '5j 40m'), SliverAppBar(
SizedBox(height: 20.h), floating: true,
SizedBox( snap: true,
height: 84.h, backgroundColor: GrayColors.gray50,
child: Padding( foregroundColor: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 16.w), surfaceTintColor: Colors.white,
child: ListView.builder( expandedHeight: 220.h,
scrollDirection: Axis.horizontal, flexibleSpace: FlexibleSpaceBar(
itemCount: 3, background: SingleChildScrollView(
itemBuilder: (context, index) { child: Padding(
return Padding( padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h),
padding: EdgeInsets.only(right: 16.w), child: Column(
child: _buildPassengerCard('Ahmad', 'Economy', '10F', index), crossAxisAlignment: CrossAxisAlignment.start,
); children: [
}, _buildCardFlight("YIA", "LOP", "Economy", "5j 40m"),
SizedBox(height: 20.h),
SizedBox(
height: 84.h,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 3,
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.only(right: 16.w),
child: _buildPassengerCard('Ahmad', 'Economy', '10F', index),
);
},
),
),
),
],
),
), ),
), ),
), ),
SizedBox(height: 32.h), ),
CustomeShadowCotainner( SliverPersistentHeader(
pinned: true,
delegate: _SliverHeaderDelegate(
minHeight: 50.h,
maxHeight: 50.h,
child: Container(
color: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 10.h),
alignment: Alignment.centerLeft,
child: _buildCardInformationStatus(),
),
),
),
SliverToBoxAdapter(
child: CustomeShadowCotainner(
borderRadius: 0.r, borderRadius: 0.r,
child: Column( child: Column(
children: [ children: [
_buildCardInformationStatus(),
SizedBox(height: 20.h),
Row( Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
_buildCardSeat(context, label: 'A'), _buildCardSeat(context, label: 'A'),
_buildCardSeat(context, label: 'B'), _buildCardSeat(context, label: 'B'),
_buildCardSeat(context, label: 'C'), _buildCardSeat(context, label: 'C'),
SizedBox(width: 16.w),
_buildNumberSeat(context, label: '1'),
_buildCardSeat(context, label: 'D'),
_buildCardSeat(context, label: 'E'),
_buildCardSeat(context, label: 'F'),
], ],
) )
], ],
), ),
) ),
], ),
), ],
), )),
bottomNavigationBar: CustomeShadowCotainner( bottomNavigationBar: CustomeShadowCotainner(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
child: ZoomTapAnimation( child: ZoomTapAnimation(
@ -86,7 +136,7 @@ class _ChooseSeatScreenState extends State<ChooseSeatScreen> {
text: 'Lanjutkan', text: 'Lanjutkan',
textColor: Colors.white, textColor: Colors.white,
onTap: () { onTap: () {
// Get.toNamed(Routes.TICKETBOOKINGSTEP3); Get.toNamed(Routes.TICKETBOOKINGSTEP2);
}, },
), ),
), ),
@ -220,25 +270,56 @@ class _ChooseSeatScreenState extends State<ChooseSeatScreen> {
child: TypographyStyles.body(label, color: GrayColors.gray800, fontWeight: FontWeight.w500), child: TypographyStyles.body(label, color: GrayColors.gray800, fontWeight: FontWeight.w500),
), ),
SizedBox(height: 6.h), SizedBox(height: 6.h),
SizedBox( ListView.builder(
height: 330.h, itemCount: 20,
child: ListView.builder( shrinkWrap: true,
itemCount: 50, physics: NeverScrollableScrollPhysics(),
shrinkWrap: true, itemBuilder: (context, index) {
itemBuilder: (context, index) { return Padding(
return Padding( padding: EdgeInsets.symmetric(vertical: 6.h),
padding: EdgeInsets.symmetric(vertical: 6.h), child: CardSeat(),
child: CardSeat(), );
); },
},
),
), ),
], ],
), ),
); );
} }
Widget _buildNumberSeat() { Widget _buildNumberSeat(
BuildContext context, {
required label,
}) {
return Expanded(
child: Column(
children: [
Container(
width: 32.w,
height: 32.h,
child: TypographyStyles.body('', color: Colors.white, fontWeight: FontWeight.w500),
),
SizedBox(height: 6.h),
ListView.builder(
itemCount: 20,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 6.h),
child: Container(
width: 32.w,
height: 32.h,
child: TypographyStyles.body(label, color: GrayColors.gray800, fontWeight: FontWeight.w500),
),
);
},
),
],
),
);
}
Widget _buildNumber() {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
@ -281,3 +362,31 @@ class _ChooseSeatScreenState extends State<ChooseSeatScreen> {
); );
} }
} }
class _SliverHeaderDelegate extends SliverPersistentHeaderDelegate {
final double minHeight;
final double maxHeight;
final Widget child;
_SliverHeaderDelegate({
required this.minHeight,
required this.maxHeight,
required this.child,
});
@override
double get minExtent => minHeight;
@override
double get maxExtent => maxHeight;
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
return child;
}
@override
bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) {
return true;
}
}

View File

@ -0,0 +1,75 @@
import 'package:e_porter/_core/component/appbar/appbar_component.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:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../../../../_core/component/button/button_fill.dart';
class PaymentScreen extends StatefulWidget {
const PaymentScreen({super.key});
@override
State<PaymentScreen> createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: GrayColors.gray50,
appBar: DefaultAppbarComponent(
title: 'Kode QRIS',
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: Container(
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TypographyStyles.h5("E-Porter", color: GrayColors.gray800),
SizedBox(height: 10.h),
TypographyStyles.body("Citilink (103)", color: GrayColors.gray800, fontWeight: FontWeight.w400),
SizedBox(height: 16.h),
TypographyStyles.h5("Rp 2.460.000", color: GrayColors.gray800),
SizedBox(height: 32.h),
SvgPicture.asset('assets/images/qris.svg'),
SizedBox(height: 20.h),
TypographyStyles.small(
"Berlaku hingga : 28 Januari 2025, 16:40",
color: GrayColors.gray600,
fontWeight: FontWeight.w400,
)
],
),
),
),
),
),
bottomNavigationBar: CustomeShadowCotainner(
child: ZoomTapAnimation(
child: ButtonFill(
text: 'Lanjutkan',
textColor: Colors.white,
onTap: () {
// Get.toNamed(Routes.TICKETBOOKINGSTEP2);
},
),
),
),
);
}
}

View File

@ -1,8 +1,14 @@
import 'package:e_porter/_core/component/card/custome_shadow_cotainner.dart';
import 'package:e_porter/_core/component/icons/icons_library.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/footer_price.dart';
import 'package:e_porter/presentation/screens/routes/app_rountes.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../../../_core/component/appbar/appbar_component.dart'; import '../../../../_core/component/appbar/appbar_component.dart';
import '../component/card_flight_information.dart';
class TicketBookingStep3Screen extends StatefulWidget { class TicketBookingStep3Screen extends StatefulWidget {
const TicketBookingStep3Screen({super.key}); const TicketBookingStep3Screen({super.key});
@ -12,17 +18,127 @@ class TicketBookingStep3Screen extends StatefulWidget {
} }
class _TicketBookingStep3ScreenState extends State<TicketBookingStep3Screen> { class _TicketBookingStep3ScreenState extends State<TicketBookingStep3Screen> {
bool _isChecked1 = false;
bool _isChecked2 = false;
bool _isChecked3 = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: GrayColors.gray50, backgroundColor: GrayColors.gray50,
appBar: ProgressAppbarComponent( appBar: ProgressAppbarComponent(
title: 'Pesan Tiket', title: 'Pesan Tiket',
subTitle: 'Langkah 3 dari 4', subTitle: 'Langkah 3 dari 4',
onTab: () { onTab: () {
Get.back(); Get.back();
}, },
),
body: SafeArea(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 20.h),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CardFlightInformation(
date: "Sen, 27 Jan 2025",
time: "12.20 - 06.00 AM",
departureCity: "Yogyakarta",
arrivalCity: "Lombok",
plane: "Citilink (103)",
seatClass: "Economy",
passenger: "2",
),
SizedBox(height: 32.h),
TypographyStyles.h6("Layanan Porter", color: GrayColors.gray800),
SizedBox(height: 10.h),
TypographyStyles.caption(
"Silahkan pilih opsi penerbangan untuk mencari layanan porter yang cocok untuk perjalanan Anda",
color: GrayColors.gray600,
fontWeight: FontWeight.w400,
maxlines: 3,
),
SizedBox(height: 16.h),
_buildCheckBox(
context,
label: "Kedatangan",
Widget: CustomeIcons.AirplaneLandingOutline(color: Colors.white),
value: _isChecked1,
onTap: (bool? value) {
setState(() {
_isChecked1 = value ?? false;
});
},
),
SizedBox(height: 10.h),
_buildCheckBox(
context,
label: "Keberangkatan",
Widget: CustomeIcons.AirplaneTakeOffOutline(color: Colors.white),
value: _isChecked2,
onTap: (bool? value) {
setState(() {
_isChecked2 = value ?? false;
});
},
),
SizedBox(height: 10.h),
_buildCheckBox(
context,
label: "Transit",
Widget: CustomeIcons.TransitOutline(color: Colors.white),
value: _isChecked3,
onTap: (bool? value) {
setState(() {
_isChecked3 = value ?? false;
});
},
),
],
),
),
),
),
bottomNavigationBar: FooterPrice(
price: "1.450.000",
labelText: "Pesanan",
labelButton: "Lanjut",
onTap: () {
Get.toNamed(Routes.TICKETBOOKINGSTEP4);
},
));
}
Widget _buildCheckBox(
BuildContext context, {
required label,
required Widget,
required value,
required onTap,
}) {
return CustomeShadowCotainner(
padding: EdgeInsets.symmetric(horizontal: 6.w, vertical: 6.h),
child: CheckboxListTile(
activeColor: PrimaryColors.primary800,
title: Row(
children: [
CircleAvatar(
radius: 18.r,
backgroundColor: PrimaryColors.primary800,
child: Widget,
),
SizedBox(width: 16.w),
TypographyStyles.caption(
label,
color: GrayColors.gray800,
fontWeight: FontWeight.w500,
)
],
),
value: value,
onChanged: onTap,
controlAffinity: ListTileControlAffinity.leading,
), ),
); );
} }
} }

View File

@ -1,8 +1,15 @@
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/footer_price.dart';
import 'package:e_porter/presentation/screens/routes/app_rountes.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../../../_core/component/appbar/appbar_component.dart'; import '../../../../_core/component/appbar/appbar_component.dart';
import '../../../../_core/component/icons/icons_library.dart';
import '../component/card_flight_information.dart';
class TicketBookingStep4Screen extends StatefulWidget { class TicketBookingStep4Screen extends StatefulWidget {
const TicketBookingStep4Screen({super.key}); const TicketBookingStep4Screen({super.key});
@ -15,14 +22,142 @@ class _TicketBookingStep4ScreenState extends State<TicketBookingStep4Screen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: GrayColors.gray50, backgroundColor: GrayColors.gray50,
appBar: ProgressAppbarComponent( appBar: ProgressAppbarComponent(
title: 'Pesan Tiket', title: 'Pesan Tiket',
subTitle: 'Langkah 4 dari 4', subTitle: 'Langkah 4 dari 4',
onTab: () { onTab: () {
Get.back(); Get.back();
}, },
), ),
body: SafeArea(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 20.h),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: CardFlightInformation(
date: "Sen, 27 Jan 2025",
time: "12.20 - 06.00 AM",
departureCity: "Yogyakarta",
arrivalCity: "Lombok",
plane: "Citilink (103)",
seatClass: "Economy",
servicePorter: "Fast Track (FT)",
passenger: "2",
),
),
SizedBox(height: 32.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: TypographyStyles.h6("Rincian Pesanan", color: GrayColors.gray800),
),
SizedBox(height: 20.h),
CustomeShadowCotainner(
borderRadius: 0.r,
height: MediaQuery.of(context).size.height * 0.5,
child: Column(
children: [
Row(
children: [
TypographyStyles.body(
"Citilink (103)",
color: GrayColors.gray800,
fontWeight: FontWeight.w500,
),
SizedBox(width: 10.w),
SvgPicture.asset('assets/images/citilink.svg', width: 40.w, height: 10.h),
],
),
SizedBox(height: 2.h),
Row(
children: [
TypographyStyles.small(
"Fast Track (FT)",
color: GrayColors.gray600,
letterSpacing: 0.2,
fontWeight: FontWeight.w400,
),
SizedBox(width: 10.w),
CircleAvatar(radius: 2.r, backgroundColor: Color(0xFFD9D9D9)),
SizedBox(width: 10.w),
TypographyStyles.small("Economy", color: GrayColors.gray600, fontWeight: FontWeight.w400),
],
),
SizedBox(height: 16.h),
Row(
children: [
TypographyStyles.caption(
"Rp 1.200.000",
color: GrayColors.gray600,
fontWeight: FontWeight.w400,
),
SizedBox(width: 8.w),
TypographyStyles.small("x 2", color: GrayColors.gray600, fontWeight: FontWeight.w400)
],
),
Padding(
padding: EdgeInsets.symmetric(vertical: 10.h),
child: Divider(thickness: 1.w, color: GrayColors.gray300),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TypographyStyles.caption(
"Total Pesanan",
color: GrayColors.gray600,
fontWeight: FontWeight.w400,
),
TypographyStyles.body(
"Rp 2.400.000",
color: GrayColors.gray600,
fontWeight: FontWeight.w500,
),
],
),
SizedBox(height: 2.h),
_buildRowText(context, text: "Layanan porter (Fast Track)", valueText: "50.000"),
SizedBox(height: 2.h),
_buildRowText(context, text: "Biaya layanan", valueText: "10.000"),
],
))
],
),
),
)),
bottomNavigationBar: FooterPrice(
labelText: "Pembayaran",
price: "1.450.000",
labelButton: "Buat Pesanan",
iconButton: CustomeIcons.ProtectOutline(color: Colors.white),
onTap: () {
Get.toNamed(Routes.PAYMENT);
},
));
}
Widget _buildRowText(
BuildContext context, {
required String text,
required String valueText,
}) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TypographyStyles.caption(
text,
color: GrayColors.gray600,
fontWeight: FontWeight.w400,
),
TypographyStyles.caption(
"Rp ${valueText}",
color: GrayColors.gray600,
fontWeight: FontWeight.w400,
),
],
); );
} }
} }

View File

@ -7,6 +7,7 @@ import 'package:e_porter/presentation/screens/auth/pages/state_succes_screen.dar
import 'package:e_porter/presentation/screens/boarding_pass/pages/boarding_pass_screen.dart'; import 'package:e_porter/presentation/screens/boarding_pass/pages/boarding_pass_screen.dart';
import 'package:e_porter/presentation/screens/home/pages/booking_tickets.dart'; import 'package:e_porter/presentation/screens/home/pages/booking_tickets.dart';
import 'package:e_porter/presentation/screens/home/pages/choose_seat_screen.dart'; import 'package:e_porter/presentation/screens/home/pages/choose_seat_screen.dart';
import 'package:e_porter/presentation/screens/home/pages/payment_screen.dart';
import 'package:e_porter/presentation/screens/home/pages/search_flight_screen.dart'; import 'package:e_porter/presentation/screens/home/pages/search_flight_screen.dart';
import 'package:e_porter/presentation/screens/home/pages/search_tickets_screen.dart'; import 'package:e_porter/presentation/screens/home/pages/search_tickets_screen.dart';
import 'package:e_porter/presentation/screens/home/pages/ticket_booking_step1_screen.dart'; import 'package:e_porter/presentation/screens/home/pages/ticket_booking_step1_screen.dart';
@ -97,6 +98,10 @@ class AppRoutes {
name: Routes.CHOOSECHAIR, name: Routes.CHOOSECHAIR,
page: () => ChooseSeatScreen(), page: () => ChooseSeatScreen(),
), ),
GetPage(
name: Routes.PAYMENT,
page: () => PaymentScreen(),
),
]; ];
} }
@ -119,4 +124,5 @@ class Routes {
static const TICKETBOOKINGSTEP3 = '/ticket_booking_step3'; static const TICKETBOOKINGSTEP3 = '/ticket_booking_step3';
static const TICKETBOOKINGSTEP4 = '/ticket_booking_step4'; static const TICKETBOOKINGSTEP4 = '/ticket_booking_step4';
static const CHOOSECHAIR = '/choose_chair'; static const CHOOSECHAIR = '/choose_chair';
static const PAYMENT = '/payment';
} }