feat : home page chicken-Steward

This commit is contained in:
2025-06-08 11:35:22 +03:30
parent 40b8d6f913
commit 845ff0d2b4
28 changed files with 758 additions and 153 deletions

View File

@@ -39,7 +39,7 @@ class MainActivity : FlutterActivity() {
val apkUri: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
val uri = FileProvider.getUriForFile(
applicationContext,
"${BuildConfig.APPLICATION_ID}.fileprovider",
"${applicationContext.packageName}.fileprovider",
file
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)

8
assets/icons/chicken.svg Normal file
View File

@@ -0,0 +1,8 @@
<svg width="17" height="24" viewBox="0 0 17 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.52726 11.6996C3.79503 9.07883 5.15046 7.75776 7.13265 7.18431C11.4714 6.12391 14.8304 8.8087 15.5993 13.2435C15.8813 19.1415 12.7368 22.4483 7.27365 24.0004C8.59472 21.4933 9.73095 18.9472 6.24404 15.4093C3.84716 14.9437 2.05928 15.0669 0.786788 15.6901C0.337743 14.215 1.18844 12.8773 3.52726 11.6996Z" fill="white"/>
<path d="M13.3745 7.62392C13.4776 8.14761 9.83905 4.03275 4.70762 6.04693C3.10694 7.24122 0.993228 7.1808 0.185185 5.90001C-0.243718 5.22112 0.103432 3.84555 0.906737 3.20812C3.33561 0.743701 13.211 6.79692 13.3734 7.62274" fill="white"/>
<path d="M14.8262 8.46453C14.8036 8.99888 12.2314 4.1447 6.77178 4.89943C4.93532 5.68496 2.89507 5.13047 2.41048 3.69565C2.15338 2.935 2.81332 1.68029 3.7434 1.24901C6.68292 -0.577972 14.8617 7.62331 14.8262 8.46453Z" fill="white"/>
<path d="M16.3518 10.3735C16.1634 10.8734 15.244 5.45766 9.82229 4.46123C7.8318 4.63066 6.06879 3.4648 6.05813 1.95061C6.05221 1.1473 7.07352 0.162724 8.09128 0.0454275C11.455 -0.767355 16.6492 9.58555 16.3518 10.3735Z" fill="white"/>
<path d="M5.99082 16.3928C7.08441 18.4022 6.90787 20.2162 4.45885 21.6794C3.01338 21.9744 2.04302 21.715 1.60108 20.8394C1.30014 20.1996 1.53236 19.5361 2.27406 18.8501C4.40554 18.3134 5.85101 17.5598 5.99082 16.3916" fill="white"/>
<path d="M7.98502 11.2803C8.1189 11.8301 7.78123 12.3834 7.23266 12.5161C6.68291 12.6499 6.1296 12.3123 5.99571 11.7637C5.86302 11.214 6.1995 10.6606 6.74926 10.5279C7.29901 10.3952 7.85232 10.7317 7.98502 11.2803Z" fill="#0FFFFF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.0002 22.75C14.7302 22.75 14.4802 22.6 14.3502 22.37C14.2202 22.14 14.2202 21.85 14.3602 21.62L15.4102 19.87C15.6202 19.51 16.0802 19.4 16.4402 19.61C16.8002 19.82 16.9102 20.28 16.7002 20.64L16.4302 21.09C19.1902 20.44 21.2602 17.96 21.2602 15C21.2602 14.59 21.6002 14.25 22.0102 14.25C22.4202 14.25 22.7602 14.59 22.7602 15C22.7502 19.27 19.2702 22.75 15.0002 22.75Z" fill="white"/>
<path d="M2 9.75C1.59 9.75 1.25 9.41 1.25 9C1.25 4.73 4.73 1.25 9 1.25C9.27 1.25 9.52 1.4 9.65 1.63C9.78 1.86 9.78 2.15 9.64 2.38L8.59 4.14C8.38 4.49 7.92 4.61 7.56 4.39C7.21 4.18 7.09 3.72 7.31 3.36L7.58 2.91C4.81 3.56 2.75 6.04 2.75 9C2.75 9.41 2.41 9.75 2 9.75Z" fill="white"/>
<path d="M10.67 13.8504L7.52996 12.1604C7.19996 11.9804 6.79996 11.9804 6.46996 12.1604L3.32996 13.8504C3.09996 13.9704 2.95996 14.2204 2.95996 14.4904C2.95996 14.7604 3.09996 15.0104 3.32996 15.1304L6.46996 16.8204C6.63996 16.9104 6.81996 16.9504 6.99996 16.9504C7.17996 16.9504 7.35996 16.9104 7.52996 16.8204L10.67 15.1304C10.9 15.0104 11.04 14.7604 11.04 14.4904C11.04 14.2204 10.89 13.9804 10.67 13.8504Z" fill="white"/>
<path d="M5.95 17.4096L3.03 15.9496C2.81 15.8396 2.55 15.8496 2.33 15.9796C2.13 16.1096 2 16.3396 2 16.5896V19.3496C2 19.8296 2.26 20.2596 2.69 20.4696L5.61 21.9296C5.71 21.9696 5.82 21.9996 5.93 21.9996C6.06 21.9996 6.19 21.9596 6.31 21.8896C6.52 21.7596 6.65 21.5296 6.65 21.2796V18.5196C6.65 18.0496 6.38 17.6196 5.95 17.4096Z" fill="white"/>
<path d="M11.6601 15.9796C11.4501 15.8496 11.1901 15.8396 10.9601 15.9496L8.0401 17.4096C7.6101 17.6196 7.3501 18.0496 7.3501 18.5296V21.2896C7.3501 21.5396 7.4801 21.7696 7.6901 21.8996C7.8101 21.9596 7.9401 21.9996 8.0701 21.9996C8.1801 21.9996 8.2901 21.9696 8.3901 21.9196L11.3101 20.4596C11.7401 20.2496 12.0001 19.8196 12.0001 19.3396V16.5796C12.0001 16.3396 11.8701 16.1096 11.6601 15.9796Z" fill="white"/>
<path d="M20.67 3.82988L17.53 2.13988C17.2 1.95988 16.8 1.95988 16.47 2.13988L13.33 3.82988C13.1 3.94988 12.96 4.19988 12.96 4.46988C12.96 4.73988 13.1 4.98988 13.33 5.10988L16.47 6.79988C16.64 6.88988 16.82 6.92988 17 6.92988C17.18 6.92988 17.36 6.88988 17.53 6.79988L20.67 5.10988C20.9 4.98988 21.04 4.73988 21.04 4.46988C21.04 4.18988 20.89 3.94988 20.67 3.82988Z" fill="white"/>
<path d="M15.95 7.38035L13.03 5.92035C12.81 5.81035 12.55 5.82035 12.33 5.95035C12.13 6.08035 12 6.31035 12 6.56035V9.32035C12 9.80035 12.26 10.2304 12.69 10.4404L15.61 11.9004C15.71 11.9504 15.82 11.9804 15.93 11.9804C16.06 11.9804 16.19 11.9404 16.31 11.8704C16.52 11.7404 16.65 11.5104 16.65 11.2604V8.50035C16.65 8.02035 16.38 7.59035 15.95 7.38035Z" fill="white"/>
<path d="M21.6601 5.95035C21.4501 5.82035 21.1901 5.81035 20.9601 5.92035L18.0401 7.38035C17.6101 7.59035 17.3501 8.02035 17.3501 8.50035V11.2604C17.3501 11.5104 17.4801 11.7404 17.6901 11.8704C17.8101 11.9404 17.9401 11.9804 18.0701 11.9804C18.1801 11.9804 18.2901 11.9504 18.3901 11.9004L21.3101 10.4404C21.7401 10.2204 22.0001 9.79035 22.0001 9.32035V6.56035C22.0001 6.31035 21.8701 6.08035 21.6601 5.95035Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

3
assets/icons/cube.svg Normal file
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="M16.19 2.33008H7.81C4.17 2.33008 2 4.51008 2 8.15008V16.5201C2 20.1601 4.17 22.3301 7.81 22.3301H16.18C19.82 22.3301 21.99 20.1601 21.99 16.5201V8.15008C22 4.51008 19.83 2.33008 16.19 2.33008ZM11.57 17.1201C11.57 17.4201 11.42 17.6901 11.16 17.8501C11.02 17.9401 10.87 17.9801 10.71 17.9801C10.58 17.9801 10.45 17.9501 10.32 17.8901L6.82 16.1401C6.32 15.8801 6 15.3701 6 14.8001V11.4901C6 11.1901 6.15 10.9201 6.41 10.7601C6.67 10.6001 6.98 10.5901 7.25 10.7201L10.75 12.4701C11.26 12.7301 11.58 13.2401 11.58 13.8101V17.1201H11.57ZM11.36 11.7701L7.6 9.74008C7.33 9.59008 7.16 9.30008 7.16 8.97008C7.16 8.65008 7.33 8.35008 7.6 8.20008L11.36 6.17008C11.76 5.96008 12.23 5.96008 12.63 6.17008L16.39 8.20008C16.66 8.35008 16.83 8.64008 16.83 8.97008C16.83 9.30008 16.66 9.59008 16.39 9.74008L12.63 11.7701C12.43 11.8801 12.21 11.9301 11.99 11.9301C11.77 11.9301 11.56 11.8801 11.36 11.7701ZM18 14.8001C18 15.3701 17.68 15.8901 17.17 16.1401L13.67 17.8901C13.55 17.9501 13.42 17.9801 13.28 17.9801C13.12 17.9801 12.97 17.9401 12.83 17.8501C12.57 17.6901 12.42 17.4201 12.42 17.1201V13.8101C12.42 13.2401 12.74 12.7201 13.25 12.4701L16.75 10.7201C17.02 10.5901 17.33 10.6001 17.59 10.7601C17.85 10.9201 18 11.1901 18 11.4901V14.8001Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,7 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.0002 22.7502C14.7302 22.7502 14.4802 22.6002 14.3502 22.3702C14.2202 22.1302 14.2202 21.8502 14.3602 21.6102L15.4102 19.8602C15.6202 19.5102 16.0802 19.3902 16.4402 19.6002C16.8002 19.8102 16.9102 20.2702 16.7002 20.6302L16.4302 21.0802C19.1902 20.4302 21.2602 17.9502 21.2602 14.9902C21.2602 14.5802 21.6002 14.2402 22.0102 14.2402C22.4202 14.2402 22.7602 14.5802 22.7602 14.9902C22.7502 19.2702 19.2702 22.7502 15.0002 22.7502Z" fill="white"/>
<path d="M2 9.75C1.59 9.75 1.25 9.41 1.25 9C1.25 4.73 4.73 1.25 9 1.25C9.27 1.25 9.52 1.4 9.65 1.63C9.78 1.87 9.78 2.15 9.64 2.39L8.59 4.14C8.38 4.49 7.92 4.61 7.56 4.39C7.21 4.18 7.09 3.72 7.31 3.36L7.58 2.91C4.81 3.56 2.75 6.04 2.75 9C2.75 9.41 2.41 9.75 2 9.75Z" fill="white"/>
<path d="M16.4002 8.20996L12.6402 6.17996C12.2402 5.96996 11.7702 5.96996 11.3702 6.17996L7.60016 8.20996C7.33016 8.35996 7.16016 8.64996 7.16016 8.96996C7.16016 9.29996 7.33016 9.58996 7.60016 9.73996L11.3602 11.77C11.5602 11.88 11.7802 11.93 12.0002 11.93C12.2202 11.93 12.4402 11.88 12.6402 11.77L16.4002 9.73996C16.6702 9.58996 16.8402 9.29996 16.8402 8.96996C16.8402 8.64996 16.6702 8.35996 16.4002 8.20996Z" fill="white"/>
<path d="M10.74 12.4704L7.24 10.7204C6.97 10.5904 6.66 10.6004 6.4 10.7604C6.15 10.9204 6 11.1904 6 11.4904V14.8004C6 15.3704 6.32 15.8904 6.83 16.1404L10.33 17.8904C10.45 17.9504 10.58 17.9804 10.72 17.9804C10.88 17.9804 11.03 17.9404 11.17 17.8504C11.43 17.6904 11.58 17.4204 11.58 17.1204V13.8104C11.57 13.2404 11.26 12.7304 10.74 12.4704Z" fill="white"/>
<path d="M17.5899 10.7604C17.3299 10.6004 17.0199 10.5904 16.7499 10.7204L13.2499 12.4704C12.7399 12.7304 12.4199 13.2404 12.4199 13.8104V17.1204C12.4199 17.4204 12.5699 17.6904 12.8299 17.8504C12.9699 17.9404 13.1199 17.9804 13.2799 17.9804C13.4099 17.9804 13.5399 17.9504 13.6699 17.8904L17.1699 16.1404C17.6799 15.8804 17.9999 15.3704 17.9999 14.8004V11.4904C17.9999 11.1904 17.8499 10.9204 17.5899 10.7604Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,8 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="30" height="30" rx="8" fill="#77A7FF"/>
<path d="M27.5 12.1875C26.9875 12.1875 26.5625 11.7625 26.5625 11.25L26.5625 8.75C26.5625 5.525 24.475 3.4375 21.25 3.4375L8.75 3.4375C5.525 3.4375 3.4375 5.525 3.4375 8.75L3.4375 11.25C3.4375 11.7625 3.0125 12.1875 2.5 12.1875C1.9875 12.1875 1.5625 11.7625 1.5625 11.25L1.5625 8.75C1.5625 4.45 4.45 1.5625 8.75 1.5625L21.25 1.5625C25.55 1.5625 28.4375 4.45 28.4375 8.75L28.4375 11.25C28.4375 11.7625 28.0125 12.1875 27.5 12.1875Z" fill="white"/>
<path d="M21.25 28.4375L8.75 28.4375C4.45 28.4375 1.5625 25.55 1.5625 21.25L1.5625 18.75C1.5625 18.2375 1.9875 17.8125 2.5 17.8125C3.0125 17.8125 3.4375 18.2375 3.4375 18.75L3.4375 21.25C3.4375 24.475 5.525 26.5625 8.75 26.5625L21.25 26.5625C24.475 26.5625 26.5625 24.475 26.5625 21.25L26.5625 18.75C26.5625 18.2375 26.9875 17.8125 27.5 17.8125C28.0125 17.8125 28.4375 18.2375 28.4375 18.75L28.4375 21.25C28.4375 25.55 25.55 28.4375 21.25 28.4375Z" fill="white"/>
<path d="M20.5002 10.2627L15.8002 7.7252C15.3002 7.4627 14.7127 7.4627 14.2127 7.7252L9.5002 10.2627C9.1627 10.4502 8.9502 10.8127 8.9502 11.2127C8.9502 11.6252 9.1627 11.9877 9.5002 12.1752L14.2002 14.7127C14.4502 14.8502 14.7252 14.9127 15.0002 14.9127C15.2752 14.9127 15.5502 14.8502 15.8002 14.7127L20.5002 12.1752C20.8377 11.9877 21.0502 11.6252 21.0502 11.2127C21.0502 10.8127 20.8377 10.4502 20.5002 10.2627Z" fill="white"/>
<path d="M13.425 15.5875L9.05 13.4C8.7125 13.2375 8.325 13.25 8 13.45C7.6875 13.65 7.5 13.9875 7.5 14.3625L7.5 18.5C7.5 19.2125 7.9 19.8625 8.5375 20.175L12.9125 22.3625C13.0625 22.4375 13.225 22.475 13.4 22.475C13.6 22.475 13.7875 22.425 13.9625 22.3125C14.2875 22.1125 14.475 21.775 14.475 21.4L14.475 17.2625C14.4625 16.55 14.075 15.9125 13.425 15.5875Z" fill="white"/>
<path d="M21.9874 13.45C21.6624 13.25 21.2749 13.2375 20.9374 13.4L16.5624 15.5875C15.9249 15.9125 15.5249 16.55 15.5249 17.2625L15.5249 21.4C15.5249 21.775 15.7124 22.1125 16.0374 22.3125C16.2124 22.425 16.3999 22.475 16.5999 22.475C16.7624 22.475 16.9249 22.4375 17.0874 22.3625L21.4624 20.175C22.0999 19.85 22.4999 19.2125 22.4999 18.5L22.4999 14.3625C22.4999 13.9875 22.3124 13.65 21.9874 13.45Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,6 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.6 5.31027L11.95 2.27027C11.35 1.95027 10.64 1.95027 10.04 2.27027L4.39998 5.31027C3.98998 5.54027 3.72998 5.98027 3.72998 6.46027C3.72998 6.95027 3.97998 7.39027 4.39998 7.61027L10.05 10.6503C10.35 10.8103 10.68 10.8903 11 10.8903C11.32 10.8903 11.66 10.8103 11.95 10.6503L17.6 7.61027C18.01 7.39027 18.27 6.95027 18.27 6.46027C18.27 5.98027 18.01 5.54027 17.6 5.31027Z" fill="white"/>
<path d="M9.12 11.7106L3.87 9.09058C3.46 8.88058 3 8.91058 2.61 9.14058C2.23 9.38058 2 9.79058 2 10.2406V15.2006C2 16.0606 2.48 16.8306 3.25 17.2206L8.5 19.8406C8.68 19.9306 8.88 19.9806 9.08 19.9806C9.31 19.9806 9.55 19.9106 9.76 19.7906C10.14 19.5506 10.37 19.1406 10.37 18.6906V13.7306C10.36 12.8706 9.88 12.1006 9.12 11.7106Z" fill="white"/>
<path d="M20.0001 10.2406V12.7006C19.5201 12.5606 19.0101 12.5006 18.5001 12.5006C17.1401 12.5006 15.8101 12.9706 14.7601 13.8106C13.3201 14.9406 12.5001 16.6506 12.5001 18.5006C12.5001 18.9906 12.5601 19.4806 12.6901 19.9506C12.5401 19.9306 12.3901 19.8706 12.2501 19.7806C11.8701 19.5506 11.6401 19.1406 11.6401 18.6906V13.7306C11.6401 12.8706 12.1201 12.1006 12.8801 11.7106L18.1301 9.09058C18.5401 8.88058 19.0001 8.91058 19.3901 9.14058C19.7701 9.38058 20.0001 9.79058 20.0001 10.2406Z" fill="white"/>
<path d="M22.58 21.4999L21.74 20.6599C22.18 19.9999 22.44 19.1999 22.44 18.3499C22.44 16.0199 20.55 14.1299 18.22 14.1299C15.89 14.1299 14 16.0199 14 18.3499C14 20.6799 15.89 22.5699 18.22 22.5699C19.07 22.5699 19.87 22.3099 20.53 21.8699L21.37 22.7099C21.54 22.8799 21.75 22.9599 21.97 22.9599C22.19 22.9599 22.41 22.8799 22.57 22.7099C22.91 22.3699 22.91 21.8299 22.58 21.4999Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

3
assets/icons/home.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.9565 5.26172C17.2267 3.50277 20.8413 3.35928 23.2808 4.9043L23.5132 5.05957L33.1138 11.7764C33.9495 12.3615 34.7226 13.3053 35.2866 14.3857C35.8505 15.466 36.183 16.6405 36.1831 17.666V28.9668C36.1829 32.9404 32.9575 36.1658 28.9839 36.166H11.0171C7.04476 36.166 3.8171 32.9253 3.81689 28.9502V17.4502C3.81689 16.4958 4.11914 15.3792 4.63232 14.3369C5.08123 13.4253 5.67525 12.6029 6.32568 12.0146L6.60791 11.7773L14.9565 5.26172ZM20.0005 23.25C19.041 23.25 18.2505 24.0405 18.2505 25V30C18.2506 30.9594 19.0411 31.75 20.0005 31.75C20.9598 31.7499 21.7504 30.9593 21.7505 30V25C21.7505 24.0406 20.9598 23.2501 20.0005 23.25Z" fill="white" stroke="white"/>
</svg>

After

Width:  |  Height:  |  Size: 772 B

7
assets/icons/truck.svg Normal file
View File

@@ -0,0 +1,7 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 2.92V11.23C14 12.25 13.17 13.08 12.15 13.08H3C2.45 13.08 2 12.63 2 12.08V5.69C2 3.65 3.65 2 5.69 2H13.07C13.59 2 14 2.41 14 2.92Z" fill="white"/>
<path d="M21.5 15.5C21.78 15.5 22 15.72 22 16V17C22 18.66 20.66 20 19 20C19 18.35 17.65 17 16 17C14.35 17 13 18.35 13 20H11C11 18.35 9.65 17 8 17C6.35 17 5 18.35 5 20C3.34 20 2 18.66 2 17V15C2 14.45 2.45 14 3 14H12.5C13.88 14 15 12.88 15 11.5V6C15 5.45 15.45 5 16 5H16.84C17.56 5 18.22 5.39 18.58 6.01L19.22 7.13C19.31 7.29 19.19 7.5 19 7.5C17.62 7.5 16.5 8.62 16.5 10V13C16.5 14.38 17.62 15.5 19 15.5H21.5Z" fill="white"/>
<path d="M8 22C9.10457 22 10 21.1046 10 20C10 18.8954 9.10457 18 8 18C6.89543 18 6 18.8954 6 20C6 21.1046 6.89543 22 8 22Z" fill="white"/>
<path d="M16 22C17.1046 22 18 21.1046 18 20C18 18.8954 17.1046 18 16 18C14.8954 18 14 18.8954 14 20C14 21.1046 14.8954 22 16 22Z" fill="white"/>
<path d="M22 12.53V14H19C18.45 14 18 13.55 18 13V10C18 9.45 18.45 9 19 9H20.29L21.74 11.54C21.91 11.84 22 12.18 22 12.53Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.5 15.5C21.78 15.5 22 15.72 22 16V17C22 18.66 20.66 20 19 20C19 18.35 17.65 17 16 17C14.35 17 13 18.35 13 20H11C11 18.35 9.65 17 8 17C6.35 17 5 18.35 5 20C3.34 20 2 18.66 2 17V15C2 14.45 2.45 14 3 14H12.5C13.88 14 15 12.88 15 11.5V6C15 5.45 15.45 5 16 5H16.84C17.56 5 18.22 5.39 18.58 6.01L19.22 7.13C19.31 7.29 19.19 7.5 19 7.5C17.62 7.5 16.5 8.62 16.5 10V13C16.5 14.38 17.62 15.5 19 15.5H21.5Z" fill="white"/>
<path d="M8 22C9.10457 22 10 21.1046 10 20C10 18.8954 9.10457 18 8 18C6.89543 18 6 18.8954 6 20C6 21.1046 6.89543 22 8 22Z" fill="white"/>
<path d="M16 22C17.1046 22 18 21.1046 18 20C18 18.8954 17.1046 18 16 18C14.8954 18 14 18.8954 14 20C14 21.1046 14.8954 22 16 22Z" fill="white"/>
<path d="M22 12.53V14H19C18.45 14 18 13.55 18 13V10C18 9.45 18.45 9 19 9H20.29L21.74 11.54C21.91 11.84 22 12.18 22 12.53Z" fill="white"/>
<path d="M13.08 2H5.69C3.9 2 2.4 3.28 2.07 4.98H6.44C6.82 4.98 7.12 5.29 7.12 5.67C7.12 6.05 6.82 6.35 6.44 6.35H2V7.73H4.6C4.98 7.73 5.29 8.04 5.29 8.42C5.29 8.8 4.98 9.1 4.6 9.1H2V10.48H2.77C3.15 10.48 3.46 10.79 3.46 11.17C3.46 11.55 3.15 11.85 2.77 11.85H2V12.08C2 12.63 2.45 13.08 3 13.08H12.15C13.17 13.08 14 12.25 14 11.23V2.92C14 2.41 13.59 2 13.08 2Z" fill="white"/>
<path d="M2.07 4.98047H1.92H0.94C0.56 4.98047 0.25 5.29047 0.25 5.67047C0.25 6.05047 0.56 6.35047 0.94 6.35047H1.85H2V5.69047C2 5.45047 2.03 5.21047 2.07 4.98047Z" fill="white"/>
<path d="M1.85 7.73047H0.94C0.56 7.73047 0.25 8.04047 0.25 8.42047C0.25 8.80047 0.56 9.10047 0.94 9.10047H1.85H2V7.73047H1.85Z" fill="white"/>
<path d="M1.85 10.4805H0.94C0.56 10.4805 0.25 10.7905 0.25 11.1705C0.25 11.5505 0.56 11.8505 0.94 11.8505H1.85H2V10.4805H1.85Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,4 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.99984 8.00016C9.84079 8.00016 11.3332 6.50778 11.3332 4.66683C11.3332 2.82588 9.84079 1.3335 7.99984 1.3335C6.15889 1.3335 4.6665 2.82588 4.6665 4.66683C4.6665 6.50778 6.15889 8.00016 7.99984 8.00016Z" fill="#2D5FFF"/>
<path d="M7.99994 9.6665C4.65994 9.6665 1.93994 11.9065 1.93994 14.6665C1.93994 14.8532 2.08661 14.9998 2.27327 14.9998H13.7266C13.9133 14.9998 14.0599 14.8532 14.0599 14.6665C14.0599 11.9065 11.3399 9.6665 7.99994 9.6665Z" fill="#2D5FFF"/>
<path d="M7.99984 8.00016C9.84079 8.00016 11.3332 6.50778 11.3332 4.66683C11.3332 2.82588 9.84079 1.3335 7.99984 1.3335C6.15889 1.3335 4.6665 2.82588 4.6665 4.66683C4.6665 6.50778 6.15889 8.00016 7.99984 8.00016Z" fill="#FFFFFF"/>
<path d="M7.99994 9.6665C4.65994 9.6665 1.93994 11.9065 1.93994 14.6665C1.93994 14.8532 2.08661 14.9998 2.27327 14.9998H13.7266C13.9133 14.9998 14.0599 14.8532 14.0599 14.6665C14.0599 11.9065 11.3399 9.6665 7.99994 9.6665Z" fill="#FFFFFF"/>
</svg>

Before

Width:  |  Height:  |  Size: 575 B

After

Width:  |  Height:  |  Size: 575 B

View File

@@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2C9.38 2 7.25 4.13 7.25 6.75C7.25 9.32 9.26 11.4 11.88 11.49C11.96 11.48 12.04 11.48 12.1 11.49C12.12 11.49 12.13 11.49 12.15 11.49C12.16 11.49 12.16 11.49 12.17 11.49C14.73 11.4 16.74 9.32 16.75 6.75C16.75 4.13 14.62 2 12 2Z" fill="white"/>
<path d="M17.08 14.1499C14.29 12.2899 9.73996 12.2899 6.92996 14.1499C5.65996 14.9999 4.95996 16.1499 4.95996 17.3799C4.95996 18.6099 5.65996 19.7499 6.91996 20.5899C8.31996 21.5299 10.16 21.9999 12 21.9999C13.84 21.9999 15.68 21.5299 17.08 20.5899C18.34 19.7399 19.04 18.5999 19.04 17.3599C19.03 16.1299 18.34 14.9899 17.08 14.1499Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 708 B

BIN
assets/images/chicken.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

BIN
assets/vec/cube.svg.vec Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/vec/inside.svg.vec Normal file

Binary file not shown.

BIN
assets/vec/outside.svg.vec Normal file

Binary file not shown.

BIN
assets/vec/truck.svg.vec Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:rasadyar_chicken/chicken.dart';
import 'package:rasadyar_chicken/data/models/response/inventory/inventory_model.dart';
@@ -10,48 +11,558 @@ class RootPage extends GetView<RootLogic> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: RAppBar(title: 'مدیریت انبار', centerTitle: true, hasBack: false),
body: SingleChildScrollView(
child: Column(
children: [
inventoryWidget(),
ObxValue(
(data) => broadcastInformationWidget(data.value),
controller.killHouseDistributionInfo,
backgroundColor: AppColor.bgLight,
appBar: RAppBar(
title: 'رصدطیور',
titleTextStyle:AppFonts.yekan16Bold.copyWith(color: Colors.white),
centerTitle: true,
hasBack: false,
leading: Row(children: [Text('مباشر', style: AppFonts.yekan16Bold.copyWith(color: Colors.white))]),
),
body: Column(
spacing: 8,
children: [
Card(
margin: EdgeInsetsGeometry.all(6),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
side: BorderSide(width: 0.50, color: const Color(0xFFA9A9A9)),
),
SizedBox(height: 20),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
cardWidget(
title: 'ورود به انبار',
iconPath: Assets.icons.whareHouse.path,
onTap: () {
Get.toNamed(ChickenRoutes.enteringTheWarehouse);
},
Row(
spacing: 8,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 40,
height: 40,
decoration: ShapeDecoration(
image: DecorationImage(image: AssetImage(Assets.images.chicken.path), fit: BoxFit.cover),
shape: RoundedRectangleBorder(
side: BorderSide(width: 0.25, color: const Color(0xFFB0B0B0)),
borderRadius: BorderRadius.circular(4),
),
),
),
Text(
'مرغ گرم',
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyDarkActive),
),
Spacer(),
AnimatedRotation(
turns: 180,
duration: Duration(milliseconds: 3000),
child: Icon(CupertinoIcons.chevron_up, size: 18),
),
],
),
cardWidget(
title: 'فروش داخل استان',
iconPath: Assets.icons.inside.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesWithinProvince);
},
SizedBox(height: 8),
_todayShipmentWidget(),
Padding(
padding: const EdgeInsets.fromLTRB(0, 10, 0, 13),
child: Row(
spacing: 8,
children: [
Expanded(
child: _informationLabelCard(
title: 'مانده انبار',
description: '2،225،256',
iconPath: Assets.vec.cubeSearchSvg.path,
iconColor: const Color(0xFF426060),
bgDescriptionColor: const Color(0xFFC7DFE0),
bgLabelColor: const Color(0xFFA5D1D2),
),
),
Expanded(
child: _informationLabelCard(
title: 'توزیع شده',
description: '2،225،256',
iconPath: Assets.vec.cubeRotateSvg.path,
iconColor: Color(0xFF5C4D64),
bgLabelColor: Color(0xFFC8B8D1),
bgDescriptionColor: Color(0xFFDAD4DD),
),
),
],
),
),
cardWidget(
title: 'فروش خارج استان',
iconPath: Assets.icons.outside.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesWithOutProvince);
},
Row(
children: [Text('اطلاعات بارها', textAlign: TextAlign.right, style: AppFonts.yekan16)],
),
Padding(
padding: const EdgeInsets.fromLTRB(0, 8, 0, 13),
child: Row(
spacing: 8,
children: [
Expanded(
child: _informationLabelCard(
title: 'داخل استان',
description: '2،225،256',
iconPath: Assets.vec.cubeSearchSvg.path,
iconColor: const Color(0xFF6C5D60),
bgDescriptionColor: const Color(0xFFEDDCE0),
bgLabelColor: const Color(0xFFDDC0C7),
),
),
Expanded(
child: _informationLabelCard(
title: 'خارج استان',
description: '2،225،256',
iconPath: Assets.vec.cubeSearchSvg.path,
iconColor: Color(0xFF2D5FFF),
bgLabelColor: const Color(0xFFAFCBFF),
bgDescriptionColor: const Color(0xFFCEDFFF),
),
),
],
),
),
Row(
children: [Text('اطلاعات توزیع', textAlign: TextAlign.right, style: AppFonts.yekan16)],
),
Padding(
padding: const EdgeInsets.fromLTRB(0, 8, 0, 13),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 8,
children: [
Expanded(
child: _informationIconCard(
title: 'توزیع داخل استان',
description: '2،225،256',
iconPath: Assets.vec.truckSvg.path,
iconColor: const Color.fromRGBO(85, 97, 93, 1),
bgDescriptionColor: const Color(0xFFE6FAF5),
bgLabelColor: const Color(0xFFB0EFDF),
),
),
Expanded(
child: _informationIconCard(
title: 'توزیع خارج استان',
description: '2،225،256',
iconPath: Assets.vec.truckFastSvg.path,
iconColor: Color(0xFF647379),
bgDescriptionColor: const Color(0xFFEAEFFF),
bgLabelColor: const Color(0xFFD4DEFF),
),
),
Expanded(
child: _informationIconCard(
title: 'قطعه بندی',
description: '2،225،256',
iconPath: Assets.vec.convertCubeSvg.path,
iconColor: const Color(0xFF6F6164),
bgDescriptionColor: const Color(0xFFEDDCE0),
bgLabelColor: const Color(0xFFE0BCC5),
),
),
],
),
),
],
),
),
],
),
),
Padding(
padding: EdgeInsetsGeometry.all(6),
child: Row(
children: [Text('پر کاربرد ها', textAlign: TextAlign.right, style: AppFonts.yekan16)],
),
),
SizedBox(
height: 70,
child: ListView(
scrollDirection: Axis.horizontal,
padding: EdgeInsets.symmetric(horizontal: 8),
physics: BouncingScrollPhysics(),
children: [
widelyUsed(
title: 'خرید خارج استان',
iconPath: Assets.vec.cubeSearchSvg.path,
onTap: () {
// Get.toNamed(ChickenRoutes.enteringTheWarehouse);
},
),
SizedBox(width: 15),
widelyUsed(
title: 'عمده فروشی',
iconPath: Assets.vec.truckFastSvg.path,
onTap: () {
//Get.toNamed(ChickenRoutes.salesWithinProvince);
},
),
SizedBox(width: 15),
widelyUsed(
title: 'ثبت قطعه بندی',
iconPath: Assets.vec.convertCubeSvg.path,
onTap: () {
// Get.toNamed(ChickenRoutes.salesWithOutProvince);
},
),
SizedBox(width: 15),
addWidelyUsed(onTap: () {}),
],
),
),
],
),
bottomNavigationBar: WaveBottomNavigation(
initPage: 2,
items: [
WaveBottomNavigationItem(
title: 'بارها',
icon: Assets.vec.truckFastSvg.svg(
width: 32,
height: 32,
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
),
),
WaveBottomNavigationItem(
title: 'خارج استان',
icon: Assets.vec.cubeSearchSvg.svg(
width: 32,
height: 32,
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
),
),
WaveBottomNavigationItem(
title: 'خانه',
icon: Assets.vec.homeSvg.svg(
width: 32,
height: 32,
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
),
),
WaveBottomNavigationItem(
title: 'قطعه بندی',
icon: Assets.vec.convertCubeSvg.svg(
width: 32,
height: 32,
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
),
),
WaveBottomNavigationItem(
title: 'پروفایل',
icon: Assets.vec.userSvg.svg(
width: 32,
height: 32,
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
),
),
],
onPageChanged: (index) {
// controller.changePage(index);
},
),
);
}
Container _todayShipmentWidget() {
return Container(
height: 70,
width: Get.width / 2,
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(8)),
clipBehavior: Clip.hardEdge,
child: Row(
children: [
Expanded(
child: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [const Color(0xFFEAEFFF), Colors.white],
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
Assets.icons.cubeScan.svg(width: 30, height: 30),
Text(
'بارهای امروز',
textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.blueNormal),
),
],
),
),
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
Text(
'2،225،256',
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.textColor),
),
Text(
'کیلوگرم',
textAlign: TextAlign.center,
style: AppFonts.yekan12.copyWith(color: AppColor.textColor),
),
],
),
),
],
),
);
}
Container _informationLabelCard({
required String title,
required String description,
String unit = 'کیلوگرم',
required String iconPath,
required Color iconColor,
required Color bgDescriptionColor,
required Color bgLabelColor,
}) {
return Container(
height: 82,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(8)),
clipBehavior: Clip.hardEdge,
child: Row(
children: [
// Left side with icon and title
Expanded(
child: Container(
height: 82,
decoration: BoxDecoration(
color: bgLabelColor,
borderRadius: BorderRadius.only(topRight: Radius.circular(8), bottomRight: Radius.circular(8)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
SvgGenImage.vec(
iconPath,
).svg(width: 24, height: 24, colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn)),
Text(
title,
textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive),
),
],
),
),
),
// Right side with description and unit
Expanded(
child: Container(
decoration: BoxDecoration(
color: bgDescriptionColor,
borderRadius: BorderRadius.only(topLeft: Radius.circular(8), bottomLeft: Radius.circular(8)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
Text(
description,
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive),
),
Text(
unit,
textAlign: TextAlign.center,
style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive),
),
],
),
),
),
],
),
);
}
Container _informationIconCard({
required String title,
required String description,
String unit = 'کیلوگرم',
required String iconPath,
required Color iconColor,
required Color bgDescriptionColor,
required Color bgLabelColor,
}) {
return Container(
height: 110,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(8)),
clipBehavior: Clip.hardEdge,
child: Stack(
alignment: Alignment.topCenter,
children: [
Positioned(
bottom: 0,
right: 0,
left: 0,
child: Container(
height: 91,
decoration: BoxDecoration(
color: bgDescriptionColor,
borderRadius: BorderRadius.circular(8),
border: Border.all(width: 0.25, color: const Color(0xFFB4B4B4)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 4,
children: [
Text(
title,
textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(color: AppColor.mediumGreyDarkActive),
),
Text(
description,
textAlign: TextAlign.right,
style: AppFonts.yekan16.copyWith(color: AppColor.mediumGreyDarkActive),
),
Text(
unit,
textAlign: TextAlign.center,
style: AppFonts.yekan12.copyWith(color: AppColor.mediumGreyDarkActive),
),
],
),
),
),
Positioned(
top: 0,
child: Container(
width: 32,
height: 32,
decoration: ShapeDecoration(
color: bgLabelColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
side: BorderSide(width: 0.25, color: const Color(0xFFD5D5D5)),
),
),
child: Center(
child: SvgGenImage.vec(
iconPath,
).svg(width: 24, height: 24, colorFilter: ColorFilter.mode(iconColor, BlendMode.srcIn)),
),
),
),
],
),
);
}
Widget widelyUsed({required String title, required String iconPath, required VoidCallback onTap}) {
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
spacing: 4,
children: [
Container(
width: 48,
height: 48,
padding: EdgeInsets.all(4),
decoration: ShapeDecoration(
color: const Color(0xFFBECDFF),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
child: Container(
width: 40,
height: 40,
decoration: ShapeDecoration(
color: AppColor.blueNormal,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
child: SvgGenImage.vec(iconPath).svg(
width: 24,
height: 24,
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
fit: BoxFit.cover,
),
),
),
Text(title, style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal)),
],
);
}
Widget addWidelyUsed({required VoidCallback onTap}) {
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
spacing: 4,
children: [
Container(
width: 48,
height: 48,
padding: EdgeInsets.all(4),
decoration: ShapeDecoration(
color: const Color(0xFFD9F7F0),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
),
child: Assets.vec.messageAddSvg.svg(
width: 40,
height: 40,
colorFilter: ColorFilter.mode(AppColor.greenNormal, BlendMode.srcIn),
fit: BoxFit.cover,
),
),
Text('افزودن', style: AppFonts.yekan10.copyWith(color: AppColor.greenDarkHover)),
],
);
}
Column oldPage() {
return Column(
children: [
inventoryWidget(),
ObxValue((data) => broadcastInformationWidget(data.value), controller.killHouseDistributionInfo),
SizedBox(height: 20),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
cardWidget(
title: 'ورود به انبار',
iconPath: Assets.icons.whareHouse.path,
onTap: () {
Get.toNamed(ChickenRoutes.enteringTheWarehouse);
},
),
cardWidget(
title: 'فروش داخل استان',
iconPath: Assets.icons.inside.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesWithinProvince);
},
),
cardWidget(
title: 'فروش خارج استان',
iconPath: Assets.icons.outside.path,
onTap: () {
Get.toNamed(ChickenRoutes.salesWithOutProvince);
},
),
],
),
),
],
);
}
@@ -63,10 +574,7 @@ class RootPage extends GetView<RootLogic> {
const SizedBox(height: 20),
Align(
alignment: Alignment.centerRight,
child: Text(
'موجودی انبار',
style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal),
),
child: Text('موجودی انبار', style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal)),
),
SizedBox(height: 4),
ObxValue(
@@ -86,8 +594,7 @@ class RootPage extends GetView<RootLogic> {
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: controller.inventoryList.length,
separatorBuilder: (context, index) =>
const SizedBox(height: 8),
separatorBuilder: (context, index) => const SizedBox(height: 8),
itemBuilder: (context, index) {
return ObxValue((expand) {
return GestureDetector(
@@ -97,8 +604,7 @@ class RootPage extends GetView<RootLogic> {
behavior: HitTestBehavior.opaque,
child: AnimatedContainer(
onEnd: () {
controller.inventoryExpandedList[index] =
!controller.inventoryExpandedList[index]!;
controller.inventoryExpandedList[index] = !controller.inventoryExpandedList[index]!;
},
margin: const EdgeInsets.symmetric(vertical: 2),
padding: EdgeInsets.all(6),
@@ -106,16 +612,12 @@ class RootPage extends GetView<RootLogic> {
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
border: Border.all(
color: AppColor.blueNormal,
width: 1,
),
border: Border.all(color: AppColor.blueNormal, width: 1),
),
duration: const Duration(seconds: 1),
height: expand.keys.contains(index) ? 250 : 80,
child: inventoryItem(
isExpanded:
expand.keys.contains(index) && expand[index]!,
isExpanded: expand.keys.contains(index) && expand[index]!,
index: index,
model: controller.inventoryList[index],
),
@@ -131,11 +633,7 @@ class RootPage extends GetView<RootLogic> {
);
}
Widget inventoryItem({
required bool isExpanded,
required int index,
required InventoryModel model,
}) {
Widget inventoryItem({required bool isExpanded, required int index, required InventoryModel model}) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 8,
@@ -147,26 +645,11 @@ class RootPage extends GetView<RootLogic> {
spacing: 8,
children: [
buildRow('وزن خریدهای دولتی داخل استان (کیلوگرم)', '0326598653'),
buildRow(
'وزن خریدهای آزاد داخل استان (کیلوگرم)',
model.receiveFreeCarcassesWeight.toString(),
),
buildRow(
'وزن خریدهای خارج استان (کیلوگرم)',
model.freeBuyingCarcassesWeight.toString(),
),
buildRow(
'کل ورودی به انبار (کیلوگرم)',
model.totalFreeBarsCarcassesWeight.toString(),
),
buildRow(
'کل فروش (کیلوگرم)',
model.realAllocatedWeight.toString(),
),
buildRow(
'مانده انبار (کیلوگرم)',
model.totalRemainWeight.toString(),
),
buildRow('وزن خریدهای آزاد داخل استان (کیلوگرم)', model.receiveFreeCarcassesWeight.toString()),
buildRow('وزن خریدهای خارج استان (کیلوگرم)', model.freeBuyingCarcassesWeight.toString()),
buildRow('کل ورودی به انبار (کیلوگرم)', model.totalFreeBarsCarcassesWeight.toString()),
buildRow('کل فروش (کیلوگرم)', model.realAllocatedWeight.toString()),
buildRow('مانده انبار (کیلوگرم)', model.totalRemainWeight.toString()),
],
),
),
@@ -185,9 +668,7 @@ class RootPage extends GetView<RootLogic> {
child: Text(
title,
textAlign: TextAlign.right,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
),
Flexible(
@@ -195,9 +676,7 @@ class RootPage extends GetView<RootLogic> {
child: Text(
value,
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
),
],
@@ -223,19 +702,11 @@ class RootPage extends GetView<RootLogic> {
Text(
'اطلاعات ارسالی',
textAlign: TextAlign.right,
style: AppFonts.yekan16Bold.copyWith(
color: AppColor.blueNormal,
),
style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal),
),
const SizedBox(height: 12),
buildRow(
'فروش و توزیع داخل استان (کیلوگرم)',
model.stewardAllocationsWeight!.toInt().toString(),
),
buildRow(
'فروش و توزیع خارج استان (کیلوگرم)',
model.freeSalesWeight!.toInt().toString(),
),
buildRow('فروش و توزیع داخل استان (کیلوگرم)', model.stewardAllocationsWeight!.toInt().toString()),
buildRow('فروش و توزیع خارج استان (کیلوگرم)', model.freeSalesWeight!.toInt().toString()),
],
)
: const Center(child: CircularProgressIndicator()),
@@ -282,9 +753,7 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
Text(
'سوابق بازرسی من',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
vecWidgetWithOnTap(
child: Assets.vec.trashSvg.svg(),
@@ -301,9 +770,7 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 4),
decoration: ShapeDecoration(
color: AppColor.blueLight,
shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: AppColor.blueLightHover),
),
shape: RoundedRectangleBorder(side: BorderSide(width: 1, color: AppColor.blueLightHover)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -311,16 +778,12 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
Text(
'تاریخ بازرسی',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
Text(
'1403/12/12',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
],
),
@@ -333,16 +796,12 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
Text(
'شماره همراه',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
Text(
'0326598653',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
],
),
@@ -354,17 +813,13 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
Text(
'آخرین فعالیت',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
Text(
'1409/12/12',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
],
),
@@ -376,16 +831,12 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
Text(
'موجودی',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
Text(
'5کیلوگرم',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
],
),
@@ -400,16 +851,12 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
Text(
'فروش رفته',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
Text(
'0 کیلوگرم',
textAlign: TextAlign.center,
style: AppFonts.yekan14.copyWith(
color: AppColor.darkGreyDarkHover,
),
style: AppFonts.yekan14.copyWith(color: AppColor.darkGreyDarkHover),
),
],
),
@@ -420,11 +867,7 @@ Widget markerDetailsWidget({required VoidCallback ontap}) {
);
}
Widget cardWidget({
required String title,
required String iconPath,
required VoidCallback onTap,
}) {
Widget cardWidget({required String title, required String iconPath, required VoidCallback onTap}) {
return Container(
width: Get.width / 4,
height: 130,

View File

@@ -362,6 +362,8 @@ class AppColor {
static const Color bgLight = Color(0xFFF5F5F5); // #083940 rgb(8, 57, 64)
static const Color bgDark = Color(0xFF979797); // #083940 rgb(8, 57, 64)
static const Color textColor = Color(0xFF5B5B5B); // #083940 rgb(8, 57, 64)
//endregion
//region --- category Colors ---

View File

@@ -36,6 +36,21 @@ class $AssetsIconsGen {
/// File path: assets/icons/call.svg
SvgGenImage get call => const SvgGenImage('assets/icons/call.svg');
/// File path: assets/icons/convert_cube.svg
SvgGenImage get convertCube => const SvgGenImage('assets/icons/convert_cube.svg');
/// File path: assets/icons/cube.svg
SvgGenImage get cube => const SvgGenImage('assets/icons/cube.svg');
/// File path: assets/icons/cube_rotate.svg
SvgGenImage get cubeRotate => const SvgGenImage('assets/icons/cube_rotate.svg');
/// File path: assets/icons/cube_scan.svg
SvgGenImage get cubeScan => const SvgGenImage('assets/icons/cube_scan.svg');
/// File path: assets/icons/cube_search.svg
SvgGenImage get cubeSearch => const SvgGenImage('assets/icons/cube_search.svg');
/// File path: assets/icons/diagram.svg
SvgGenImage get diagram => const SvgGenImage('assets/icons/diagram.svg');
@@ -54,6 +69,9 @@ class $AssetsIconsGen {
/// File path: assets/icons/gps.svg
SvgGenImage get gps => const SvgGenImage('assets/icons/gps.svg');
/// File path: assets/icons/home.svg
SvgGenImage get home => const SvgGenImage('assets/icons/home.svg');
/// File path: assets/icons/information.svg
SvgGenImage get information => const SvgGenImage('assets/icons/information.svg');
@@ -126,9 +144,18 @@ class $AssetsIconsGen {
/// File path: assets/icons/trash.svg
SvgGenImage get trash => const SvgGenImage('assets/icons/trash.svg');
/// File path: assets/icons/truck.svg
SvgGenImage get truck => const SvgGenImage('assets/icons/truck.svg');
/// File path: assets/icons/truck_fast.svg
SvgGenImage get truckFast => const SvgGenImage('assets/icons/truck_fast.svg');
/// File path: assets/icons/user.svg
SvgGenImage get user => const SvgGenImage('assets/icons/user.svg');
/// File path: assets/icons/user_raduis.svg
SvgGenImage get userRaduis => const SvgGenImage('assets/icons/user_raduis.svg');
/// File path: assets/icons/user_square.svg
SvgGenImage get userSquare => const SvgGenImage('assets/icons/user_square.svg');
@@ -147,12 +174,18 @@ class $AssetsIconsGen {
calendar,
calendarSearch,
call,
convertCube,
cube,
cubeRotate,
cubeScan,
cubeSearch,
diagram,
download,
edit,
excelDownload,
filter,
gps,
home,
information,
inside,
inspection,
@@ -177,7 +210,10 @@ class $AssetsIconsGen {
tagLabel,
tagUser,
trash,
truck,
truckFast,
user,
userRaduis,
userSquare,
virtual,
whareHouse,
@@ -187,6 +223,9 @@ class $AssetsIconsGen {
class $AssetsImagesGen {
const $AssetsImagesGen();
/// File path: assets/images/chicken.png
AssetGenImage get chicken => const AssetGenImage('assets/images/chicken.png');
/// File path: assets/images/inner_splash.webp
AssetGenImage get innerSplash => const AssetGenImage('assets/images/inner_splash.webp');
@@ -197,7 +236,17 @@ class $AssetsImagesGen {
AssetGenImage get placeHolder => const AssetGenImage('assets/images/place_holder.png');
/// List of all assets
List<AssetGenImage> get values => [innerSplash, outterSplash, placeHolder];
List<AssetGenImage> get values => [chicken, innerSplash, outterSplash, placeHolder];
}
class $AssetsLogosGen {
const $AssetsLogosGen();
/// File path: assets/logos/final_logo.png
AssetGenImage get finalLogo => const AssetGenImage('assets/logos/final_logo.png');
/// List of all assets
List<AssetGenImage> get values => [finalLogo];
}
class $AssetsVecGen {
@@ -224,6 +273,21 @@ class $AssetsVecGen {
/// File path: assets/vec/call.svg.vec
SvgGenImage get callSvg => const SvgGenImage.vec('assets/vec/call.svg.vec');
/// File path: assets/vec/convert_cube.svg.vec
SvgGenImage get convertCubeSvg => const SvgGenImage.vec('assets/vec/convert_cube.svg.vec');
/// File path: assets/vec/cube.svg.vec
SvgGenImage get cubeSvg => const SvgGenImage.vec('assets/vec/cube.svg.vec');
/// File path: assets/vec/cube_rotate.svg.vec
SvgGenImage get cubeRotateSvg => const SvgGenImage.vec('assets/vec/cube_rotate.svg.vec');
/// File path: assets/vec/cube_scan.svg.vec
SvgGenImage get cubeScanSvg => const SvgGenImage.vec('assets/vec/cube_scan.svg.vec');
/// File path: assets/vec/cube_search.svg.vec
SvgGenImage get cubeSearchSvg => const SvgGenImage.vec('assets/vec/cube_search.svg.vec');
/// File path: assets/vec/diagram.svg.vec
SvgGenImage get diagramSvg => const SvgGenImage.vec('assets/vec/diagram.svg.vec');
@@ -242,9 +306,15 @@ class $AssetsVecGen {
/// File path: assets/vec/gps.svg.vec
SvgGenImage get gpsSvg => const SvgGenImage.vec('assets/vec/gps.svg.vec');
/// File path: assets/vec/home.svg.vec
SvgGenImage get homeSvg => const SvgGenImage.vec('assets/vec/home.svg.vec');
/// File path: assets/vec/information.svg.vec
SvgGenImage get informationSvg => const SvgGenImage.vec('assets/vec/information.svg.vec');
/// File path: assets/vec/inside.svg.vec
SvgGenImage get insideSvg => const SvgGenImage.vec('assets/vec/inside.svg.vec');
/// File path: assets/vec/inspection.svg.vec
SvgGenImage get inspectionSvg => const SvgGenImage.vec('assets/vec/inspection.svg.vec');
@@ -266,6 +336,9 @@ class $AssetsVecGen {
/// File path: assets/vec/message_add.svg.vec
SvgGenImage get messageAddSvg => const SvgGenImage.vec('assets/vec/message_add.svg.vec');
/// File path: assets/vec/outside.svg.vec
SvgGenImage get outsideSvg => const SvgGenImage.vec('assets/vec/outside.svg.vec');
/// File path: assets/vec/pdf_download.svg.vec
SvgGenImage get pdfDownloadSvg => const SvgGenImage.vec('assets/vec/pdf_download.svg.vec');
@@ -308,15 +381,27 @@ class $AssetsVecGen {
/// File path: assets/vec/trash.svg.vec
SvgGenImage get trashSvg => const SvgGenImage.vec('assets/vec/trash.svg.vec');
/// File path: assets/vec/truck.svg.vec
SvgGenImage get truckSvg => const SvgGenImage.vec('assets/vec/truck.svg.vec');
/// File path: assets/vec/truck_fast.svg.vec
SvgGenImage get truckFastSvg => const SvgGenImage.vec('assets/vec/truck_fast.svg.vec');
/// File path: assets/vec/user.svg.vec
SvgGenImage get userSvg => const SvgGenImage.vec('assets/vec/user.svg.vec');
/// File path: assets/vec/user_raduis.svg.vec
SvgGenImage get userRaduisSvg => const SvgGenImage.vec('assets/vec/user_raduis.svg.vec');
/// File path: assets/vec/user_square.svg.vec
SvgGenImage get userSquareSvg => const SvgGenImage.vec('assets/vec/user_square.svg.vec');
/// File path: assets/vec/virtual.svg.vec
SvgGenImage get virtualSvg => const SvgGenImage.vec('assets/vec/virtual.svg.vec');
/// File path: assets/vec/whare_house.svg.vec
SvgGenImage get whareHouseSvg => const SvgGenImage.vec('assets/vec/whare_house.svg.vec');
/// List of all assets
List<SvgGenImage> get values => [
addSvg,
@@ -326,13 +411,20 @@ class $AssetsVecGen {
calendarSvg,
calendarSearchSvg,
callSvg,
convertCubeSvg,
cubeSvg,
cubeRotateSvg,
cubeScanSvg,
cubeSearchSvg,
diagramSvg,
downloadSvg,
editSvg,
excelDownloadSvg,
filterSvg,
gpsSvg,
homeSvg,
informationSvg,
insideSvg,
inspectionSvg,
keySvg,
liveStockSvg,
@@ -340,6 +432,7 @@ class $AssetsVecGen {
mapSvg,
mapMarkerSvg,
messageAddSvg,
outsideSvg,
pdfDownloadSvg,
pictureFrameSvg,
placeHolderSvg,
@@ -354,9 +447,13 @@ class $AssetsVecGen {
tagLabelSvg,
tagUserSvg,
trashSvg,
truckSvg,
truckFastSvg,
userSvg,
userRaduisSvg,
userSquareSvg,
virtualSvg,
whareHouseSvg,
];
}
@@ -365,6 +462,7 @@ class Assets {
static const $AssetsIconsGen icons = $AssetsIconsGen();
static const $AssetsImagesGen images = $AssetsImagesGen();
static const $AssetsLogosGen logos = $AssetsLogosGen();
static const $AssetsVecGen vec = $AssetsVecGen();
}

View File

@@ -10,6 +10,6 @@
class FontFamily {
FontFamily._();
/// Font family: iranyekanregularfanum
static const String iranyekanregularfanum = 'iranyekanregularfanum';
/// Font family: yekan
static const String yekan = 'yekan';
}

View File

@@ -9,21 +9,24 @@ class WaveBottomNavigationItem {
}
class WaveBottomNavigation extends StatefulWidget {
const WaveBottomNavigation({
super.key,
required this.items,
required this.onPageChanged,
});
const WaveBottomNavigation({super.key, this.initPage = 0, required this.items, required this.onPageChanged});
final List<WaveBottomNavigationItem> items;
final Function(int) onPageChanged;
final int initPage;
@override
State<WaveBottomNavigation> createState() => _WaveBottomNavigationState();
}
class _WaveBottomNavigationState extends State<WaveBottomNavigation> {
final PageController _controller = PageController(viewportFraction: 0.3);
late PageController _controller;
@override
void initState() {
super.initState();
_controller = PageController(viewportFraction: 0.3, initialPage: widget.initPage);
}
@override
void dispose() {
@@ -85,19 +88,15 @@ class _WaveBottomNavigationState extends State<WaveBottomNavigation> {
final WaveBottomNavigationItem item = widget.items[index];
return GestureDetector(
onTap: () {
_controller.animateToPage(
index,
duration: Duration(milliseconds: 500),
curve: Curves.easeInOut,
);
_controller.animateToPage(index, duration: Duration(milliseconds: 500), curve: Curves.easeInOut);
},
child: Center(
child: AnimatedBuilder(
animation: _controller,
builder: (context, child) {
double value = 0.0;
final scale = _calculateScale(_controller.page ?? 0, index);
value = index - (_controller.page ?? 0);
final scale = _calculateScale(_controller.page ?? _controller.initialPage.toDouble() ?? 0.0, index);
value = index - (_controller.page ?? _controller.initialPage.toDouble() ?? 0.0);
value = (value).clamp(-1, 1);
double offset = value * 30;
if (value.abs() < 0.2 || value.abs() > 0.2) {
@@ -110,10 +109,7 @@ class _WaveBottomNavigationState extends State<WaveBottomNavigation> {
offset: Offset(0, offset),
child: Column(
children: [
Tooltip(
message: item.title,
child: item.icon
),
Tooltip(message: item.title, child: item.icon),
/* Visibility(
visible: (_controller.page ?? 0) == index,