From ca9f74290cfb0c35fe523bdb05033ef459ffdb0d Mon Sep 17 00:00:00 2001 From: ibnubatutah Date: Mon, 13 May 2024 12:40:17 +0700 Subject: [PATCH] Finishing apps --- android/app/build.gradle | 25 +- android/app/src/main/AndroidManifest.xml | 9 +- .../main/res/mipmap-hdpi/launcher_icon.png | Bin 0 -> 2509 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 0 -> 1544 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 0 -> 3550 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 0 -> 5756 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 0 -> 8086 bytes assets/.gitkeep | 0 assets/images/ic_launcher.png | Bin 0 -> 6761 bytes assets/labels_alpha.txt | 4 +- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 101580 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 295 -> 587 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 406 -> 1287 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 450 -> 1989 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 282 -> 856 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 462 -> 1947 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 704 -> 3103 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 406 -> 1287 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 586 -> 2837 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 862 -> 4650 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 1669 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 3717 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 1869 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 4352 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 862 -> 4650 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 1674 -> 7532 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 2509 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 5756 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 762 -> 2661 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 1226 -> 6081 bytes .../Icon-App-83.5x83.5@2x.png | Bin 1418 -> 6663 bytes lib/components/app/app.dart | 1 - lib/components/recipe/utensils.dart | 5 +- lib/configuration/app_environtment.dart | 26 +- lib/data/local/utensils_contract.dart | 6 + lib/data/remote/services/utensil_service.dart | 18 ++ .../remote/services/utensil_service.g.dart | 62 +++++ .../use_case/utensils/utensil_interface.dart | 1 - .../use_case/utensils/utensil_use_case.dart | 24 +- lib/init.dart | 4 +- lib/main.dart | 212 -------------- lib/main_production.dart | 4 + lib/main_staging.dart | 11 + .../components/utensils_list_widget.dart | 3 +- .../components/detection_item_widget.dart | 11 +- .../components/detection_result_widget.dart | 2 +- .../view/recipe_detection_view.dart | 52 +++- .../recipe_detection_view_model.dart | 262 ++++++++++++------ .../components/detected_ingredient_item.dart | 2 +- .../view_model/utensil_view_model.dart | 3 +- .../services/recipe_service_constant.dart | 1 + lib/utils/detection/bbox.dart | 53 ++++ lib/utils/detection/labels.dart | 8 + lib/utils/detection/nms.dart | 115 ++++++++ lib/utils/detection/yolo.dart | 93 +++++++ pubspec.lock | 224 ++++++++------- pubspec.yaml | 14 +- test/widget_test.dart | 4 - 58 files changed, 794 insertions(+), 465 deletions(-) create mode 100644 android/app/src/main/res/mipmap-hdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-mdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 assets/.gitkeep create mode 100644 assets/images/ic_launcher.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 lib/data/remote/services/utensil_service.dart create mode 100644 lib/data/remote/services/utensil_service.g.dart delete mode 100644 lib/main.dart create mode 100644 lib/utils/detection/bbox.dart create mode 100644 lib/utils/detection/labels.dart create mode 100644 lib/utils/detection/nms.dart create mode 100644 lib/utils/detection/yolo.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index c37f7be..89e5c15 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -25,9 +25,16 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + + android { namespace "com.ibnu.snap_and_cook_mobile" - compileSdkVersion flutter.compileSdkVersion + compileSdkVersion 34 ndkVersion flutter.ndkVersion compileOptions { @@ -53,17 +60,23 @@ android { applicationId "com.ibnu.snap_and_cook_mobile" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 23 - targetSdkVersion 33 + minSdkVersion 26 + targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug + signingConfig signingConfigs.release } } } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 2ef8698..51232f6 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,13 @@ + + + + + + android:icon="@mipmap/launcher_icon"> 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 Y0i2*A{@K{yBme*a07*qoM6N<$g3wQ~w*UYD literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e87368475c72b41ae3b07a41eb2abbc099694cfa GIT binary patch literal 5756 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 Muhrzg%Nhs$55&6Oq5uE@ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..880a8ce3345bb6a6ef1e8c6bbc3d41a70bc3081d GIT binary patch literal 8086 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 literal 0 HcmV?d00001 diff --git a/assets/.gitkeep b/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/images/ic_launcher.png b/assets/images/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab586e40f186f5017c885b71ef8827a8f8ea46f GIT binary patch literal 6761 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 literal 0 HcmV?d00001 diff --git a/assets/labels_alpha.txt b/assets/labels_alpha.txt index 1c761e8..44d73d3 100644 --- a/assets/labels_alpha.txt +++ b/assets/labels_alpha.txt @@ -1,4 +1,6 @@ -Telur Ayam Kentang +Pisang +Telur +Tomat Wortel \ No newline at end of file diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index dc9ada4725e9b0ddb1deab583e5b5102493aa332..cb32a6947d3921f2e1ef8839a362de9e5e34d6a8 100644 GIT binary patch literal 101580 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�FQs|O3{`usntY^KiYVCM!IeJK`CpPTjQNXWk<`9FTSW(#y z-)_#AphH`ck|F221l#d(p0*vSU4ioxAKOnvJe^#*+x+ZN2fLSyNv1IbPlkirCG5-R zqpS(y-5_+|t5QjOuTY{SX1as8vE^&Io`x&uqA`0CdrkQ@C9f>auZ`I;M+{e10b=Ul z859G^lq>r?+#B1#tR-tz2AaINFpQu9{ex-(_?-6BHkO z&aY0LR_d)t#_qmjbgV#7&sg!a5ZB_nHD6&Yw6qIYHez>-n0@8dCdt6aCM zqEDY*eZ=shOO$N9hP<|zQHqCkN_iyZwRxPH)#Esv*WY3<%R{f2{2tn;>N#=Q8R+R@RhWlUHz)Wt2Wmj&r5v8{MrP(iVU{lOY zqf-QPj5UE& zqZ`o$=CKfLX#XCL}%by(G!_QPRjY$n>8DVVJf&%b-P1haql{_6T%vcXchIG71hg@;&*0UFWLxPlpcpo|ul4HW&m(~z&s z%Jn!kkWM$pXX+Qr{}A$ERt$> zXH5QJyJ~`iP4||+>XoiNC=Fi6L>;W1ojC^z5coKXP|EDbcbPW^BA+uKS*Ohrsj>SdsUh89Yp`a2mgw5}fp z%aL--Q*!JL8lN9G@t;Ydnf~R$aDKhcH`!`t{QPdE-YdPcA7%@4bfTD9faP^4GUN~WZ3Il8d3@e6A_mq z@mVwMrJ|+w7|w6A#)zsXd<~t0g*G^?qdeWggHV+9HUfd|Wh_R!FKE$vSB^%RIV_aZLHyQqf!5gL~b^y)OrKLeNG{F z=KFM#ZZM5I=zA(FpI%w5y`f-#QoD;t!WV8~KJ=PBm}zEzG^_gi+d-XIjPrGyx-Pbo z#$cDm{7)mbqRAeeE`?rp9!n#pnBDViT;!u02gp>iP0V>uZY|_Hm*Wv`Qc7*|$h?m* ze;>D>zZrg9ivM6F5w`JDZs{MaUhjTAcL#Or!qIFt0nq>re>NITTTJPu(9SBBL#Sa5 z^5lgtf1y6@xwt5Vshh%L+)<5gDbYw*c0jHY-k3y-_N$Va5)RaS)D$H6RQUVnAPj!J z@UN_!=8JV{uEtfZCH&(9DQ+wx4RcU#)(&0(`VJ1nTVeaX<@Ea9oqsyNUFr6)1($xM zNvk(L9sAhMo1WClZ?-EX)X$xClYF5n_wdpS7C7~@?tjxfd&(Lm=2cqLGfjftjqd^} zw`4RV8X3pd?+c5sd;EnW4*sOQ9(~cE_1)egxJqU-!U`(Y!W(^wU_%w~w+6xdNNY#- zc}@1!x(^z*FgGqbh?U#8Mr-AHTdtQ6-zNF?20PHn5$+p`{w>?{ud?TU~+l&h25x>a#+JM5wz=QZT z6yW;nxx)Su8b@nCV^{!>8HouMA4(GlKEI#zju*N}r#&H_6%O|GCNK>;6&gw>g=ZpluUf+#CU?TyE<8|QBkGA=EWU!mb%}Yb`OdT-iz$({}eEWSKJRE z&il+zIbf51dB{?J-ym((W*;Kh;_kS5>kCs!JfUmM{hm1cMCGR+QkZY>^^uMR)QRS* z23doR{V^Z@p7!70X}Lqn3o_c^lKp__W?nHZzvH8T5s=J-?E}w{0=6qONzD_})7kLw zy-c7?OhqkAW6Rp4Fd4AJ{60v<#`$pMJN#H1By9!nxRG{U$0e`RyWO&J4WX{p%dlMD z3(gU|FuFfp_*%8&W1U^DaBJV4TRtmAGuadL5d~yBpD{!4*B5=p$~GD9$w6T=6R)eG z%9!?x%!NYVyr{As%BIs!+!QoI{4jV`MVS>=Nx<4|o;eRoKG-@48WSZ{KkUc%_7d-E z4UNe<&d1SfUyy&>dii;M_XUGcU>H|b)^)ychdDU~mTIqWQyYD)oaEEVk*B<~$L3(R zVb9OMka73P7UN>obRL;}Hd-TiLqUIO+v}njOqL4vzThLB89_@nh`KyB^miD>e9P77 zQGFG9mrIMO(M8c<(qT&?M&hD{M-Cido=(;7i*8VH~>9Pz3;7$uif_!lyB! z3m2gp#=pi1mc-7e!;vjyL)zD<9ne-)uMcm)wfq(nJ8qiOFMr@CMhM&JNz@dJX2#rA;FOIKG$wAXV5x0 zoFa*@>#d{8GfHh(qD&}oe8Yhq`2F_M#N2LOW(AoULRxh1IM?hmlr8_)i)HeohxAMg z2q*(9d7dXos9@g6>_{yY6R?SPamxXNyYDBGw4ZadcVE>T`IV}-*(7>R$LS(|b+qZ} zlaI!mWO}cs>3q+l?n69yOm4I$`I6QO&vNvptExUOFi7k=ycVK@b@iRsbLUp`1Aknl z_HEKIQ@(>E?1x`=)%o0I6{W1P)+JX9#Z=B zyY~>@UF#*}e;I(~>V^O{;lIn}qeHtT$W$0VcJEKpU+(5aRRc-HomYPPL9T&38=I+BT3&8-NrKG)n4+ zcyxc!8#gly$d{2QrL1HO;GlMz2kZ-k+z4&2dl$TENBQQa16 zRG9H4XmeJl&gJ&;8T1lGpAh`|^6oW#PnF|X7sV9Ng^+YNZDr#IG!{9ko}L&Jm11dt z=~&1~{nhcH`|4`_+hD7X7eG;2`^6(Q2BFb}NLXck2EB0pomXMqW1!c+c2@p+<+D$G z)QP|5>LAY>F94~tR5Yg)83uGVpe#Pa94^8cvBs%Gm?Hq{Gj**kONo9&h9>Ur&~9%H zl`S0Ae4Min^3f?QV=j}-ke;r+;nFv_0#M0PX`>z|?5y6C*e?Qp>NoH;7dDPG3J$44 zNCLx2EJ{dLJT7eX7%5mu^oLIhR%`7S?>-oT^0&47);+dVXmRyu%+=4{uIN;_NqO^J z{)`@lR|5sLRUhzY!*9Rtc(ZN7>~pNzx%;b+mtnJpo{z4;0Nm$VNd6D9CzwqX+UkRQ z`M`wFGryl?eg4PGLMUtTLi;Yj^K4h%#pKo6hY@#G_^6-e&}wWN@gC+VJG~R98lXK+ zyH`+{01QZEZ)Jq_vce}_5+TO#e-`{FdbyzZ1BnN9c3}C-t}h!OqD-obNu?5(q>Tv& zDX35wfPLq}=Cu9dU3wsCGd9Br>Zg){tMy9mLX&7xfSq8 zV&b7xmhaN90%s8=X!*P|Cwh@tDI@H3q00Np_G6?QmYrNxdPu#kuwhxCzFX9S{GYr= z6bu&W&f*TlxYbpI?yHwu9_A0QeB z02p@Y6@RAlv9by6kg$&J(&a4Z4o_6&NvvRBul|76DxHl!vvOnh4H8h(El3-6o~P^1+QP|>+Hws z%)sWpWA}QrgY&a)utNQ0rEIZ$Pb7YDns$H|0V=!?Q-=`2XaEpC0Wr`Q%h-;NFOp&m z8-8p*b;`r@trMP8J&5Ka52u1&3)xb~2EkBsXg`Akt2idGnC0@DLraC0B{y-kX{q_}L!KVA9 z2{z^zSt7(9c#I2+pPXQi8hs=`Dhi}BHbRUiYR*V#;vDiZr|l3X3rWFLBf$jYx1jIW zDFbl;Z7i~f7)$zT*QAut4ov)}M@HB!}1JnVJVE+G#4g4(`-IL#Tej(k zIUImrl>RR!bI3--fF61;#h{xTis~v*xaU0$yP7-eXC79=_#FwUG!M3SrC!G_bQAPY z`PGuv<0EuH>)o(d(tPNe@KN2|fcwv17YDa};jec~x0E`7<*%_AFIbTO&)`aLSTU*O zpxR&|QuO>Yk6t2seBhbRi{GDda7nzv`~zBrgAn9U2Xz>bWjB#tA`~+8w6}QR&Y<}# z%`52pTQd!&kjnovUAALQv>5|>C1QtBdA@EK?2JCR`MZ#jT)&yllgkPEF&=9mZbyc5 zR?9OZIN*zdQZ^^4_O=Xq;|Cchbf-R?IrZvyoUp?>XW&lzh-9BHfFojHsIQZ43%yMx zPoq}A^cjY>BbQHUUnZeam}Yfo;17t?5B_jByQH8TDK-8v0khcx(CK*^K@AXQx^sGq_57?6^`hd12-I@X*suAgXAvWCFLE{+$cgo(;1&3DDZ^$1_~@fw+|yE`nzKd#JL>&3`haI?Y$ zDw+M)!fqpWgBPQ_p8}3KOKz75QkU+M*SLO*oVqZNu$XfTe0TfB5(Iq}GJR`VF980M z!Kw(cHd6w5uw7-a4x$D4Ut{8fH)hJ%vj=y|NmlG=!q+CA>v)fEkydSEU<^5S%z|Rp z0P|IqK*sa(0?~M#N{l$NmKx!7d75|a;W9fg_540$&SIzL-2DSnXphrQ8YTrOX{#^iy`RlM_1`_COD{{b=~e zVT!vkG2t5_U0em{2`(JJToU8>JYv>2{V-{ur{&#VxhZoW2;8+DJ3tD*;WUiaWByav z%migc(<;zHHag#qK^s>p53WB6cLIiN&_zo1ue0TFPi_m@{lWc~8obQ|Pp6q)rsrGb zo4qu8mR$bZs_-17in9NrjoDEk%hCA3j3_ME05)6qd-~_YwHavYz#;aiT82NS>T)IA zDMefrKv$0W4)W#@pu)$d;EBzfTo7Koj>m|v+y!#Gu+gr0LG|7~|iB%v1Z8m0g;0F9(OQ5^e}M!{0hjUI+5w3{#~C0Oj`ki%8N=yhbLT263%8n$@rbv(au6>1w118 zUBm?Yh#8^oI!j;sbwCkA*{BzUR{un%*jYQ*8hh5_Y<*vBpRX#G# z_H~sJ?nF14!1~1To8C+}Fb2fp)ob#*kBAnvi=$_%#mp<4O`$!vt3vY4CckhXziftbET@?@g2SzaDY7Td3sIL| zvS(D}L-S;CcKyx0!3@!)J+VhWzP~LYfzM+H8a;AYNyU}Rk&6|U!=hxvU8G*&l;?b_ zP6H~gOhDtk)6_7$s~p^Ft*?eiLaO0T>?#d8MXG3Z!@DreMu9i)V(4Mem>dP!lgd!$ zv+7f7!MkLWGA#po(e3tvQEQ^G>uXqZrVJBNv0q844o{$fn0Hz=xhUlUqjtD*Cm@|B zLmZLeoe-49>)D1mxTo=A5^iJp?UK^GC4uoiTHDVsaI(YTqc)jD65-D#4IfiI(QrckqR6rvEIegWM9-P4Nw-MgKH`Dn-a)o7;z zc=9(iy1W)5v#uW@VGezj1^HiGz4`Xfs1R+mGiTiWhdz9asWg#ED+{69KQR~(>Zegk zv`RV}S;tb&KcPbxvciT{bnaDlVxuIdXyBd%GT;N(X~+#vwf9r<*d_;LU|&=LXR0=a zqdRs@F{V_vTd*rPVYfUVQ;wZa2QntCgwBl;Ty|w7*@4-Se#f1{Bg{9DQJuDV!;MVh zHPOXs4tbZfX9xtkIBKc_Wzdk^f6n=079!uUHfR<805W>Ciqzq=Yn5~_$Q+M957`s} zPMh<#Y@nk${vlEeZFRB(@;g2kqgel&m$oo*9X1k+4HAXW`0ef|h=uMF(?PQX%JQ$I_d0cEfMOQJ3eeleFE zFxW!P3rlO)f(XTs3749@uHZxP*VWmEtB)?fLUB=tKe;qjTqQ!^-~eXddw2y#=P}@8 zz|23gSHcYJXJwI&?X?$4Im^hT7B?5V#*oi|OFKCI6}7XDEh*QMpMwFq3~)$m!gpi_ z8AJi_$9QVPs!gq zxh5YtQ?23}z#=0+TMF(edhYOY)qFGxw;jEHsnkv4*~>ZP#_b*r6}3q41I^C|sK14# zjeD0YuG@R7GgHV`&_9yoxWxn59cPWWlwiGwR=}(0ZAGa2Qb>#as9YZWS|qUR@NrKs zPLoi^qB5loKRGql7boWN=Keb%EFQeOh0y6Hhh7jF@e{9DU@>35f32J+*<4pIBYgP1 zhReE~5&<5`O9k;NkIJqx=>cd>pJUt|l7bgr+*a=Pp%%bTLH6n~L6{Y``+Pl*g6I9} zAyPR0MGEpB@?0MmAV2*7HA{@;Z2^ZJw)jj%)~eqj2!_ZY!WOR`8O;&BkSk5d~hd|jP_Xj54)lmud+nou!_WjxQb{cpsbWVVF8 zLPYL^d3gOrGQjiwY1EK3r%;j5H3zh>foGG5?{KK6uYXH_2m@BR8^nK-(mKNeOt&`! zNpEmBs<#7cQ$ut3Up*&J=IJY~#R^RGV=2+C+L)#hAKX6X7xB$MzScR|tR{$E8~55A z2Is42d1cNIK}QyR)^ElhoFFQEgZ9XJYCRf!LkVntiOl?#w zVjRGhrpNJL>^bN5qlb9(i%pwis*qJ9c=HR9P7tdCW%uVD)Xi(}|N4&YdKmhHy~i|w zRfd?-FWQNMB~<-k(#j3(v*GU@NGNb$^gwR0%PV|6g1!XhH}8Dka=AGD?#NsS)*;1_>tZZYbh}7Etts( z`mh3;`^Y^|bPkzROh5#k)iGpPb*4j4LlafHXHT}4cc(o&hacU(xP9Rhz6(nUQ%m7a zd{Hgt;{Pti=B0Vn)x3A%aSm)8uZ|v+-#n*sZLFvDO~OcOH>^$I$Im?6RPT^Fl#z*stuMMVQ3EpS_JGKp{Y51#Ke7Qhh|jTZlAfKOh5auoaboy`VOva3yFmF ziNb!};I(E#l2z%v`j` zNGRX}zpNUnE;Qqw!0mEIe(j!nu7g4G&BMo*Liul!Ik`G+kr{>ovJBGvRJFdAzB~86O9KlghDv#iyCODr*&JUeP2A!gD3UbB5l7^^oq;#+eIdw_4vT;Azj5=R6t4DKnHEuhKmbe_;o(bX1(40C&s%)W zXKf@J>QZzm`>H6NX_9k`^G5Ua(2}38_MP?Q>n{#cxMNii8M|jDg465F&$F08tsYeu z+Y@zmrsOXPT=$6TOCXJioL@{%ClH=5Lcc~XA9U*RE<=_IQk#+$UnS)rpkLd;NN;5M zIy@1epw~1EX6bQ_r#)~=9LV8u3=EbOivxaTj4X3eFv}@KTpobkVrv-?s=oOgb2sAN zZU%|CvSEt#qE3SHPH!Q9{GHydP6xQ4;JbeWJhs6)aLL1%-)(wO)E!^~kozYug<#7?y&%(6g$fNGlNCg-ZRRE=B})1=yRY~t}jMB;WtAxfN7If7&W z&9NZCYeX&j!==AL$qC0=RoH#PS@HL)1f(UI{4Vq+J?)6xr19bKy>YgsB$;#+eAR}7 z=b=V7Y{le)P+;4qPw!?F&xoygJh8d3K#LY7#l6Xl{(&q5)z7$xYiOplW_I&d`=v)x zXfdfwv+4-~JjvFFbj7>Nb-IKDA*iP(2ZzEO@}*yixIvnDd5H8_$2c1_ybWXrM_7P= zhDwxzD*CPD!@p5cH~+7$9T1w>FyXHZa{3xtc2zmh$q{QIzW9guQRx|edbW5Txi#^ zVD|m2kH~P88D+g54QCA`%)ETj9G0H3KnWD7`P=PN1hlE5+g&NpB?Iv5&!L0LJ8c{c zP&z7j7jU@Y`v@Qi-Iu^7u2{b85=+@u=ZxBmHls=%<7tc0MQ3*MpDC*!c0`~r-MD3`BQrnlF+H3#V%&`S z_soO_EgvFo@BFX;Z*ilTgGdVVt{g;tIdhU}ugs*lenQ>>TvTkpof+bmZ<^dIO4cyv zrPNfS-Xr8^_X+}P+h?6G>csn>#?S*!KJD}Yw=5^w`#{}cm{Jl+?qb;jRkBq4qSU+# zf+S)@X&3iHc2&f z+Q>3jO^QI-!HCZ5XSpxvKPd@Hz3=cPiu$I(n3o?gD^4Je%&G(i*|vYP z?p*s&c6e3@(+v|&w~r#cws2ZJ2H0ZnV^xOkXKvB@XT$^eX2Y+7y+>k3_);mpg`;JO! zIld7JRYca0chab zf*L9i!r4gtZ`xJpVB>faf4&7rU6Uazp|#_0qg_#UY}XW8NzV={^?eH&;>)ZvJX-W>>NHRZFY5uv*pU0;UCZ zy(63LwjB;=rVUhs*gLVyDkzPFGQ1_FLjX+9emD?*sh0XEC4Jq+oWy96#NYbIXezbN};5e!iE9ju{R z;xR=+X4paIu~L1oaL!LH{_8#aidu)Qs2%We85C9XTyU-Pt!O1k3U{Y&uvA@Z+_kQ* z^1AS4&*yJ6_^C+zd5;AxU-hy#yatQ=<=;0sQ5ClLp@De@qe4jP!7Ohfqo%Xk!CQ&l zw2D85-siNhA@5UmiZB@HN+6Ek28Z{MRMFytBV_-TquCxKnmR4INUt)tfcOhi$o~WXWPR{u)zIjr(I_QFlh58 zA2E7V;01=8P@l{X+EHW9pLLnA?0X*55#t zJNETb9)DiwFr}m%QFqo*>B4O}aV7sL*kB@-`sYcgdEk$)n=s|c3nV+yz5>h{6fc+x z8vsLn+n))H#hJ+b!w#U_Bp^BfZ?U6QKu$08Es_uj16r@1><6pPs+*ygM!Sr9Yo%I2 z4$|>mlIt@E-Hn%dg!`vx)5YnHUYaw*I}4xES6Nb9bC6{XuUY1iFVs`rNc*@~b{)>R zd0FrfUVHN8nC`n`V^Uh`tCFb(Z073)e!*Dn?Pnlyf(Mj+z$BINvY&a5VvK z(EFnxZVmHcy4|EIvHtY|=CwxHop8FlcUX$48~9qb^BE7J!jPgF5cKpaJKv^4AyC4w z<+VA}#CNI7IM;M=!vvO122pz4hobC21BD78NgfM)(v@Aa7BhIm<)E%Nt^MzTZ+@C3?Dv7lM@$C;!H@L6rw{jj!!5dn#t@W~kja_k4Ki_Mzk*C@ z-$N~j0cAK8!^J&!aBCYyh?tUXmel$>Do=6yWEIwXfaxB^5FlKi_oz}{04;EmN1fGa zww_4^^Y6iqj|1+vyaW0IgoDdQ7xJ(#(wY&th{O;Ty3tI{W zt>(b|9Mmc8Wfb$pLlIK{lS%OGI76Neu`+?^{7fM2E3&m^`A~*ak>Xd%4!w&Wa)F@* zZmaqy-A0Ez+{hOZ%qR94c%9;KU`r5?5&k{K=Pmy4xlHvy?*q%_Ltnz`5~{EF68doeoT znVa;QHS=e7xtnPc#y=^yK#T=Ya~Z9)?KO6lMATj4sT%_oV<7${fmi9E9v+&`;6?!f zRSJa#&{@X_4QNIq`RA4AwmTf;({kIEr7$WhJ$o8UN^q$+qZI#4kK_?uzVScce%3^b zpl7+x-b;F@=TR9DWHod{Zb)c?zfzBvLN=9YWnVS!Ko^YnS4;_Pn5;lbpRd*IBvHT( zf=dI!B#+rt`o^ag*dL*3w2Y4F>pd?MPdP_lPdiW6?%TX?#(IFoKe zQ(?~q7Cr-(w^;hj-ln&Wfwnm*Y7NIY=$mCAf{~{+NQ!DGJqrri&KZJ@D5VNsojp8s3Aa`sD0Mk6jw?G5y z_zuz`rb3i*7Yf81)J$9$F`4ODtM6D#Cg#O+QNOx;)E$8+7Bfl-|{L9B>%eH_Yc)=-hGx~&Z@N&lD-yk#FN z1yXP;pJWhSR&B50mmR;4Ng$|on1;2~pm_AXXTSLfI(Bq8+bYuPs9;+(}xkbf6OanuzMU&rzd7%5MX)w=>N%DAflTEP(JQ-^;_R9+3xdSBCG7@ok#?W=p+PaElOZP0C1IH9DV zK0&~G+96OQi!vsXgI{SzQot!3grbDQk7o`_|6CIQfbwJaJtWX85C4pET#qq)ygV2k~>B=SO5Tf zJTAbb1+X8kU*NdEEB*9p6!lOgTDUsdGyg$0r8U8{aE0j|FLexo3N2C18KTm3aL*dm zI{1js{9xh?MQioy7LrJ^@oyWq3AAR19jm`d$AKo`oOQ8J;|?p64rwuSX@%{b0Cv@0 z`Vg~N49t*{+QEyV!y5Sy87$?KYJfI;N-ww@WJn?&a-RPAWvd>2|Ieqi(Oy#CB&Lz5 zFW8ny#+#v=oiez{AIUJF{5ZV|;1Wx@-k9-HZ$#IPgCNY9@)9Kmb=e-dD5kKJ6%Ma| zJxX7;_@(Y_NLqpf$x=fFUb2OgsGsAM%?JN3Rj80LS4F|$U7}4rIC_=#B#c?xN2Hd zJ`oJg-N(;=@G0)UyY6arBm}8!_Z%7r2zhHkW#-pLu}qY(An8e{bd3U14|T~@s{@l{n-ml$ zsSX7h-W%1B_(vD3*YlE%*P)}gIi5(H%*SVFKI+bK4d=sqLWrRUYSw2FyP9pZZrfKG zL89I6J-x$aG6d-kz2BwDIK1zY6YA*bSfI8YtMmZny)BJV8ToMoGM)P7P)}|Qk2Z;l zDeqq$13{9~)QO7qv00a)Mb+&hQOI8SUQigsC%_4Pkj~t($g>^wT6|kL;^$r+)5!|7 zJ5l5zPD=@sH~?*%eq~7=dSPQbUSmVZ9WVgxb$lm6f?QPId3mQcW-s_^E~y5dO(5#| z5H^I!3zC{M(BNV0@Z+ZdLtP!r`JKWPk|YHTz%+qn8`}Ng-?u3Hx;I~;$4Ju0CjdaL zO%=O_wn6K4NHP6O#t>Wfj-0hIV-BW;?l<(ZG@%Fi|My^~!TGmi9ZoAt8d4y*p-ln_ zrwaM{@L!q+k zt0uPkzvhi2wTwm_Dh#Kl$|k>PION z3J>rtHK8lrTY6qVdfYt$&gF1MXyGLnjwg@QO*QK+xpDfs0Mud1*9&}qPx}h=Z`)%% z3plVZMW=)V6+aEJ-VaER)9j&REkDj51P=WEY-yomf1Ji_r9dS3pig{QR@Y+%w3;@beR+yrRegzjz5fH$}E(cjiAV7Mg<%u zcfxX5L&}(b3!+hB+URmRDAI`k!At|!W<}>h-85Ry9COMhv8D?gqPY{4;bJ^cAdKst z4LW5(l99gc_Kl~diD(9=w%RR|?GvC01HLwitai8W+5hu6B?Ul!%1h{7_rr>>1s7&< z98nfD$?t{+W)&c@rgw4}l;kOR_C*oq`YgST+0%y^1srHe%B)HKzf2mO_AahkEXr@- zYAvAo@-nHqtpWxx)3?x=!tAK1W!zvlwd*t$`=eSQwg(_(`}okcYs#-NYXB7powQU^ z{(TzOxTgF~R?0sgO(e(DyX>Hb>j)OpQv%rP6;q$8WzM4w4`OUf3j`!hXpETQwKUWI z(tynZ;F(RcDsPE83JY732_9CV z0qBqYB#rXqG__mSSKrs016eM0AN-m1x(wT{G_nC|;B8l{5#$W#-0PUKBrdm?Z-;=n zR|%DI(D6;h29@vt18u zcQW4)tDJ!&#mj_(a-&6Gq#zRyH)b^I^xX+fuW9v!pz6^R9E8n^B5wc2jMD64tG&1} zrWW}0*qq0$xPjgY6KYgZIiPa!ipCE+g=Y+Z7h3vhalFjHQlO?H&HW!NkU7@^*}41s zeoF-?CA*PWJv=R%6WWOX8(42h2|aWhZ=bBwyTg4M=!$;b7VNIa0d~(mnG%sI;dd(k z9($wkdZ6iwz!T~H!wLlUEp3m2m||34dM0$IY<@Ua8_}p}3z&8hMH1-!4 zdvN=-j5$%09qOE?wJ%g2CT%gk;dq#pwIxvLgnCjoTAQnjc7SfQ>6DWZaNqVNONz%< z?Bz#!<K3K_iF7Ml-N-F>+F4A9$$ z#Cztkml8PeFdK6Cn$^9AZP1YZm<-cRp||T^LrP)XK3vBvI+kQ;+mX#kqJ)@lsi5Om z6p9`UJ_YpXqREHQm;2GsF9_&rd=Xid$|CC*aM9hQ-`!Oh!9H6d)zTNG1%%E?{$aKK zx`p#!vE`0C^uk}-SCmsKhQ1Y|esaIFd=~CCpRB(HjMLi5rA-xne-4!=8dZayyIqj8 zpq2(Uu5vBN9$It9abN%lOLKDN5Xcev@w&@LXY`!$+31~CZvF_a*CkhWcMGSab3Fh> zBd0+G z+WJaqS!8W3u*(4afNn!IffJcA;WFmS2JXE#fqiz(+Tr<2Jo9&(Rn>|llTR%uNcq>1 zqYn0tA+a}XS^Q|)uE@o6KrakD$xp`;PAty}&upqRSD-vb)K#f4o&L`hkbkt>X z^tG442jPH|$B*P9=qu=?6G;-5b_u+Z124>mJ$ux_-zKlddU{UV$MZ#STo3BnJ~nf{U+Xgl8`79Gp}hd=Oh9areL~YR zIkYhA5&6h0Ny@!@38CCn$uBtGcx4&iV0Y5;n!6s_HF1`{yUoUI~C2cIt zQi7&S94I;mU}*mg=tHy(hr20(`jyw5FCH`6|5#Nf_bzqOb+O3oBTKT3!63zg>w@~B9 z+wJ{781Bg8=bElD@)p$?!s{iBI<@g>V8{*~Q2%;UM(Y_#H5S6tNM30`)Y7c((CDgt zg$Kfy&-!G(!rN|pJ)r21p=3$%ctu{=epU%g5W1q-{gKOl^uoz{|SJJ+i9oXjxF1ri*&*=1Sf>Od@J75%M@ltaggl4FA z!qWP;whce|fwx)P3NOce`|@cK_0(28t#1a&2l$$xw*0NpQ!H=XHTewBZ1K-ODfb>Q z0o~ULo_ru^OQZ&D_K{F^H$)KA^CwdiefKg(Mh
`q#o)$Xj=Hf7fyXL-PG%t3j2 z2I0waQ##=@VtdMf8wgbIUFuIJ7Z2pe5KCgfk_575`D}|hJp`nHAB1m0h6_3uS~8?m z-R1R8tT{h@fnxt*!!@<;=TOh@E~t||zxM|pKsI3rRY(6=Lz8Zqg)Xk{70T`Q_Xf=U zedHvimM6Q0W@rTMFGeneyyQSk`0;3J(N3ur)bR$i-sPu?E|W?Q`jZ65DCbPvE_B+% zO^f-LY=L~?>0FhSj3=;fbe}sixsfZH3QnlW|#Gdu&|Ho0Y_@DQE(F*Kd_-< z5Lcg&GEi}0?+>VUBm>GM-GuUMEUWVftoWj~&uY?pPcqLL-GRBi6AY9Whtj=Z5g`ZX zzf_~-I*Qf~`)A3n0N(Q_X`Tp5ID!R>NPSAYELjK#?W*YW<2g4|f4E-hpsoFgF|c14 zyc+_`lbUXI0R+F)bI{XEQ*Ur&>Cqo`tgW(4PoVt6Ac1(GUfP7(*s8D!lc3OHQHp>h zney;JbPQGIJ&+AiXPcGa@whS{cMUmB+d@P+{4{-NAiw2>gN@?UPxAw4uWoJhEp`My zXTuLZra<~CzH^>ZPk+ zfyS8jO_`MUs2k8brqxd9BI&n&Dc&RNlgq{{*MAqbv2k1d=0JWzP%#8-sCJL)Mt#H8 zr!6y7g7$E?JI`=#Al*TN^@l%t#IjpDD0bpy3dsMHY+jAw5Hv!fN4qJ(-jG!M{|#;Y zZ6sV z3SHF3f;A1sgB!64Svx5gj(3Dk?ygR3aS-)n?yrT#j>Jo`SohV5FAbQaT52Yail6Ae zVn&pEn+wRRYP6aeHGcgX1-ha8zE_1og1J6uzr2A(qkH%Du<{gWEa&6sG{AQ^d zN*&29?Ag~qUaB?`O8h<%L)n3rP5Pgi`=5(G!eXwN=a4hJP4PDP_;=>&^tuWS#3uM! z=uR8I&RV*JWqUUG;&@=Y(?DJx_7Oc`NdV=($&C0?6jv?*kM!PHuLz`dqtXNs?9g08 zs7{pgk2Qj5Q`5E%j0T5n)=P_DD~l$ei#$b<>z!jus6mzu9FXENlIe@~fDm`XM3%!R z1{j{C+?0(3Ti&9@a*(3bquI|m$^{|6#&i?ncn?nNMOM|a3mVc}7RpiVeK1fTEKNcGo_J)drQiz*BNEeoOs0kxfR+c0C$3(;2ji)mx6Dj z^&77v)`MDPzCKr`0UlpQl!z(MXt(L7*ua7g!47VUi!Rjp^#hfjJ5<-z<|lYOZ(R7r zzE5$67k4vyya;Fb#Mt51;({Mw5+dj%M|yZqK1r$@)8aWR-s=I$fUFa{_JCuE2Vi$G z-()cdwk2g)Mg$S$Uy=vvZ0K$~5rfm;Ff_p2;z&C#CjSPMt=VRH!rvjhagFA1_)pQc zTXt;(x-=q+eCmFR0!3aeaiIg6N7xBm+4MveyW6AHv4Us3(EqZvj%RrM^Zymw`Tvh| zm3|9O8)Lxm<$$o|TN%4!iFv57+mxp~S$l^4bO#R>W<$L0j4qA}5EhSmtvAzx1^9@M zn*U=V@BRw9HMkMFs|GoWPuwZeFBn)iuAV78#o3~{!pU}RiWIWw9}s4Ch=2T0zA;xx5dX)oXb{Ud
  • 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 P{M6#K&8dexY9p literal 10932 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 LNkvXXu0mjfQAi8n delta 279 zcmV+y0qFkA1g8R!8Gi!+006pI?LPnj0Blf9R7L;)|5U~J`u_j-{Qm)0oAmqtj@kOz z^8J|I`-|B6ht~R5kG+%I`zf~eztraM`u^bc{`dO)zUlmg)%x%C`E}6wSI77~z4s`y z^XT{f(eM4n?EUff`e@AgO~UxV*5*r_%Uhbj5N)LaQj!wdIe!-b004GLL_t&-)18pX z4udcZ1u-#g(~z+5JN*AY5?>Gw7hsN~k)CYt4dQDFxbs5*_&e@Hj)wtt(&JE<3Eq*D z;_gQLvqXoKv=I*gWqM9C(Tvu0>=?hTbOp9!6k6AF;>f6|S5%jGEE}TA9h)e`Yuiu8 d7)l?o1NFcJg%EAfM$P~L002ovPDHLkV1h)tnyUZ+ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 797d452e458972bab9d994556c8305db4c827017..b928ce29561dac99d84f518a6b6e8abd51edcd0a 100644 GIT binary patch delta 1278 zcmVa`rL5e&=P8CGyYJ3viU8C}!=cJ^4Tp%cD7h`PPN z*;pt@60GL;ASYE!Lu#thGQVk=arE@S3yG7)|Atrqxu!zM<%S^yUdru4MV6te$gous zLF-^In+BW=MG=mN*_FGHm-bhL9{p4_4kLY`2lvs~jepf8kX6+>Kmv)ldtn(f)r6y< zJl)QuVZD%tqAY<=a6l@SfM;Wa@Wa}&b$}Es!$M6_j$EhZ+^Lj|<1IymdwaVu5$cB? zn+@tFvS+wz3>a(Yqn5K1D50(TwT5c(<2k$!M%1EFz9p}aC4jMuv*wNJ56WZ zOifiDnHd$w){41Krs%xgqD(#+j>2d#)N-9?ZBWKBy+c3m81TpSWf<`I4OclB1V#na zX>tjv2$v+09B};hyuvW;yZwNp^OGqBY?ivwtC&!-}OUo*tes&Z&^*HrC8cWe%`_`|Ina zMesQshUAbBAC!~y|bS}^)SvcdxHQA?Wz@{B>B-*Ad{+D6%=B^OX;lKvpv&t;8F zTLNgqDjo|&U_96lizp{6_@Z=payDY*j+<(;hm)(EhZ z=(wAq)}MaeibF5%b*M>_>~y=jHsPZ}Q#G|#t+Z5K3t+WW)_?lu>g@EZuS_wFwclq@ zh4i`E>)-CCH(NeSv;Zn~Mf?1tPj^1#I4*wr?3rm!;CZkhbkw9+>eB z?J{?+FLkYu+4_Uk`r_>LHF~flZm0oBf#vr8%vJ>#p~!KNvqGG3)|f1T_)ydeh8$vDceZ>oNbH^|*hJ*t?Yc*1`WB&W>VYVEzu) zq#7;;VjO)t*nbgf(!`OXJBr45rP>>AQr$6c7slJWvbpNW@KTwna6d?PP>hvXCcp=4 zF;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f=f2nK>z>% diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index 6ed2d933e1120817fe9182483a228007b18ab6ae..96db265c882d58159099ffbaccd81a2c113253cf 100644 GIT binary patch delta 1986 zcmV;z2R-=01H})J8Gi-<0027t*>V5?2aHKXK~#7F?OIuATvZtUXUQa!Su@FGZQ3l2 zO}d(Di>Q?$pjHF-Av6 z$-Ul9v82hc8XNk%Xt9!xzrX$R+a=d6N%+A-2dTqk+q?aqyAG`1IM^j|f6@{3%|w3w z`kU{c+_mT9Bk#SD4NrutuB%Cy$r^@x2VcH(|Gt+<*A05HsBE(`;A!{LLkAvzEHLeR zdffN${xhF_6@Lu`0u}435{4Ul4c5ISvPR{*m4H&b8N6McyY3j-aX7l}#IsCTU%aj= zVYAb0+B^ zS}EatHftgPsGTdj8jE` zNkp+&th#@t!lT3Pq+2_C$l74J?)pGWD}~Z2I_aCBST>__3l&gCc(|>DZs7x%jz=lN z1oK6W8qE#V#Sfyb*+zRdY@|z(AQ=q?D(X5#GieGW6JnhzC?VYKaM7j`*<+JeXo?9h z#M$5sjemBoqh7aXeq9+ktw1MylQbEdRk1ZSg!^0C$iP;+7L8Pp1vozlQf8xxEM^l0 zQ%N%M`W~m7n%Vt#cJ+!_52g~*_a>b%+|$+6#0g0kglj?5i}cInBYk;}4` zt<>RgQY4eA>-TVFxI99_WHhdQ!oYYWL_4?~4SBqrb>kG`7+on)vW!eLozFA*y!5>( zA$&C&76}NkxVxv1PR&fx#4=ge+R#8lt?ktBZWR{35Dq92CQ1mSrXJ&jbbHSR@;2LP zYkx<#sKuIIo5G#F1LSCI5@hjkE`@_Cwx&*a++w6(o^$#t;m6kK_UIF|wCgip^*34hmiSQ?j{CWKQd8VgLT-i~_0S#Ab?pT4I0 zzgaPq5{5K{Vk#gumvL1z4;IeUaOrG8t1H>n10{slyF9e9)k}7EV|X#FjCSwOz)Xcy zM6$Z2ZBB5M31?VdUYQNi*^pm)OiL%c+1tg6$tx@itKw+lrhkxSrpIcdpRZn;Cx4CX zjP9tz?hwRKyJ2alu3>MdkeFkBxp6I(FqG2964`J%MaMaIp^1msg3#41)@CNs!BTTd ztl!}FP`lkO&d+jdc%CiVz$I)OD>F#b0q(2EBSCQwS&&M&)9#!f*C0{FOY^Ef*h;Nz z-PUFst#h`p)qFx#^|2eHolNC(bbl^1BYvk9isH9e3(vrMJP28kO4!8~1~8b5FBr}t z3ZbPz0wSc@Vxb(zDPkPJ9BW}xE3iPpHPmlBD4Ambsf01I0Wg4Xa!mz!Kh zGzxcb7!-*KZwQy$I8<6c$1$WNgbCcd-ZvL3fpo$sB|lxhz)eKEX#4s&^P)*evR=ke zem0YyZw63$oJ`bfa|pt79afPph69`fd^Kla{{%{67}*zsA2k#&#kw3W;i_frTn!)x zy?vg$rf9a}(+p`)I)Cv%7lil2HYVE1R&2G|#cZoA8=;iYDW;;#@UW2S$b; zxdFdS(=Uzvagq&IwGLJ#oQNf~@4h(l`OZCe9~j!UWwVg;Yk!=0X<(wqB9Y9eZ@>Fm zAy=qc#B0THG3@t;Uw!V-Q;!~e=EYt2?%mg9EA@A46zs;ii(_MBpS|<`>le?QIjR+^ zj8UjIVO=lk@n|4);lo!BzwpVMZ@Fwv=b9x9>t>S4Oe&FxYnm42Ruo^;)Ma5R{UE|O zNG4)&KOY!atvhAM#(p8;a#VvXuv}R}WMoUnS|$su=oLjhby)3t%vHio;qhO`Ul4eJ UZ5=eVLjV8(07*qoM6N<$f+m{DVgLXD delta 435 zcmV;k0ZjhI55fbG8Gi!+000dlDL?=K0EAFXR7L;)|5U~JDYo_jSDRPH_*uvJ?fL$s z;QQnD{*>GM-ShrilfUZt{^9lhT*&z4_x{-O{Rv#2V9EI}xb^~1iQe@7)8g(7UZ4B@ z|4zgB>+<*9=;^^)>d)H7pzGjuM>Jnezy3`@G2r z?{~a!Fj;`+8Gq^x2Jl;?IEV8)=fG217*|@)CCYgFze-x?IFODUIA>nWKpE+bn~n7; z-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGrXPIdeRE&b2Thd#{MtDK$ zpx*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{HY|nMnXd&JOovdH8X7+?%-nfq z;<=+88?EgGNA!eCE;p0&yZ4;`Id`1!56t;rK!-+BAZzvkTz{+%g-jk4McEvB_QLt& zrzR$@h5Di)yP!g&NuED_a(Vjd)O|uoCp12kaGV?;zaEN4MxoudiwRy|FPuIzaqGps z2M@CgX|)528)AHcK*ToM26OeeeQn0&#c8brs_QzmVe1o)g!>>Bi~!3pP?HF}U(Exr z$e>$@jIOuLxqoH#QdrFAhnMLuC^Qv@f?+r@JOU2MqYg*o0jsX8LqDvoz_H|R z5LFcle8XJd*~7t+SRB%|vi;D8EWxMJDnz`!9nb`Zy?=x`{ajkJA4-j=iXk9+vULk` z9%D1zSXWSbLWjcvZk9FI*7zpmoAti~^>aHQilL=B&DJVrMGs;b(fTbD0m`DVrH`(l zVUHKa5-CG0Nq-2Uo?ducScZdrF{5@@@T6nO6uil0U}ZzT{|HKJl!lOYpa=pffY$6V z=65c?WPd;%_(=pp_CZ;OHM$Trwbe4ZkP}-WgZb6Iw>K5Poesu|J8MwddG?1)b9#8BiyuUSh;O1L#gcvM}MJ*jiH!wP!Wl_PD|-f{~$1kE(-JZ zLTN~osLsO!ap0UzqVWoWvx?Q`bys-}=;!@S{5DB%VD?v2T*bC)h&;XEFX^?h#x)Kqo)=IzN^ zu|+KY0!3@Tdi40t?98(nJE4j!$)Z4VI5qR|b52EBlIC&P#ay?JTG~uV_PzA}#=Zho WooO74aQeUi0000qVZqE6)=lqo0`vF#&*75!I`TIh@_d&k*HoEtQyV-iD z%Xz2D9EQRbeYh5Nr~y=#0ZD;^+vz0$004MNL_t(2&&|%+4u6C&2tZM$Wf&dzefR%A z(^3-?6X>hnCz2Ba@RH&`m!pgy?n@#@AuLYB&}Q)FGY`?vcft0!vht0Z@M&ZeNCWXh75gzRTXR8EE3oN&6 Q00000NkvXXt^-0~f;t|B&;S4c diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index fe730945a01f64a61e2235dbe3f45b08f7729182..2a6378b94fa8c14237fc84bed6a64c168dc63144 100644 GIT binary patch delta 1944 zcmV;J2WR-s1Dg+!8Gi-<007~;N+;lWeaxIq@ zTB&W?w59hpeW{HPnlx#A(+3~yW8;6|AKkXl7q;9}N!=7hYHBM4&Z5XU|{QUg36~-+Sz6m$%&Ow#Cvl z!X!n%d*jCA17~Kw`Re13E)D(p$Z}mlqG#W`u;cZ!Z`>r)^zvK9G)=o~T_a4|)pg(~ z|M7M>oqqS`mw#V>-rL*z%qmNwr_P*G%H1XBb0lrHR0d$9vZr&$`}eBKz96t)0!yNa z*`%^_|GtB?IY=(TUsttCV!_xrHr9dI5|s$kuZ(LV{85& zR$$vL9b}7Oa3~5LZf>JmPq}!XWrE3UhDub8>b&Lrs-Vf4INca|DySl(XZhyZ30sKn zu5F|MlT7Pbx*r;+q3E}9o&(v(;SkNSclS58kW*FXPjCeI%RF>s%U0?g8=~P@M7CM- zi8fbOiO?NjFXofX2Z*HD+ZylN2zwHquIG?`rKXPdH8fK)lcA~Pj8wa%6ZJSt#P3)t zx$L^7A&Q%V1lAd-r*?l0O^s}DqG=9Uz@<4?{eRhM&d7kL#3j`xKswQ}M3h>6ei6b0 z(^Dcui$yu_ZvcB(Hl!1sNW^J09;K!VADwLLpj(_=CTCX;!$6srcGT304E#6WAla~` zyxbZe<{r^S6)Y5vwY1ZfCl4r|wr*&Vh_I%L*CP84MZ+|nh)K7}7NQy6r`HFc(CPM0 zQGY_5D*lZ%Q6w+FyNnF>#{8m*APf9QQ$agTu{(54LBMVj#lSYAD1RG}bXiVF`U))=I+zm9&W2&GN?@$Y9@!VH zbh$+vR>J}S1dvT3Aa0M3h{ih~xDmVS8d*j8guurhjj_n@o1BndOQjM;i*};5UDVE8 zGp+LGY+*SF0r4x>)*M-MIES{hiAEf2p^>rH$2Aqle;XcPl_ig?RHA6JKoWxCcYii? zdTv&DwyUXys+d4$ppI^Hf&!q2YrS6fqQNq8m_}kz7V{-^m`Os^ck;D1BvH(S;2q#z zXq-Z`^KBSH5ZZNnbuD|=Pko^Y;puHvHKg#*2=}Ig+`9rXZq<5N8=qiFh&dCsL3D+7 zuUJSUip~Rj4q>=-e}xy?FL=Am>3`&eqc65%@OnPbsv(RaFnsO}NK|tun5&9VT$*L` z-#a)#Ir84?#(zZuZWOKo;KoU_Pu7K!*{m=U;Rvs#^U6f&LK7~M4zI&GOa?I(#M*q| z7@7dkpUtFYnJ15EB9#&&%`)yr+Wi6gV{~xwTvJ8m{2Ff6U_3}nagU0bFMnPSxSZ$< z@^72JM$}*=w5cNc*kU1#C`38Nn#jCcxam%@=P=-c{KI?~-oykj7pM_4&bA=D)Nu6T z@IFdPBbOO;JDBPAj1EbkHb^H5y?S-vG40`OiZDibspB#N0&%Xjv)TDXQ>r@oX1GM% zg`z_Ffr#&AfxjsR*Z}qz1Oq%-@2wPKA1z$K;}oO-)Lk^%c;+%OlMwTzFnfJdP66?x zEFv1|anaqlS?=YgfqxM0C_TAnHFjg&z9I)NXHt5hIkxSvCTe8J&?V}xbpr2mQ_rL< z2UM0sXChIv|IXckeJ781DVylKMu|vt@iUU zTrTUT*t0=?&4fnB5cl%t8ghZs3l)OlQ^5h#O63I?fJ{+n<0d6D?^O`R)X^0$vKjF5 eJM}Lb{sC5 ziGV;=={^- z?sLQGb)?A{hr$_!z8HbH7kH=vM0x-*R~t>;jsO4v^GQTOR7l6|(&r9>FcgO2dg?%> z;=sK?5%;?Pn^T7LL?Y$@5u?06NuIR*0?Yf$Hf5Afk+lM<^ch*jvO$sU*m9J?JI7eI zGFV6+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9R%3*Q+)t%S!MU_`id^@& zY{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&p6kME1_Z%?`+u)^el0!1<0sd p?Eyu!OMLDifi)An*I;?S-wj=m4RYIt!kPd8002ovPDHLkV1oR0^cw&G diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index 321773cd857a8a0f0c9c7d3dc3f5ff4fb298dc10..0ef47e3718a0295adad16d2d5a8e95d2c61568dc 100644 GIT binary patch literal 3103 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 delta 691 zcmV;k0!;m%7{CRP8Gi!+002f7DP8~o0Jl&~R7L;)|5U~JDYo_jSDX9(|M~s@SH}2N z#rS{J`h3&+@cRDr`1>4br2|=<_Wb|z`~RBV`-<24{r>;E==`tb{CU#(0alua*7{P! z_>|iF0Z@&o;`@Zw`ed2Hv*!Fwin#$(m7w4Ij@kM+yZ0`*_J0?7s{u=e0YGxN=lnXn z_j;$xb)?A|hr(Z#!1DV3H@o+7qQ_N_ycmMI0acg)Gg|cf|J(EaqTu_A!rvTerUFQQ z05n|zFjFP9FmM0>0mMl}K~z}7?bK^if#bc3@hBPX@I$58-z}(ZZE!t-aOGpjNkbau@>yEzH(5Yj4kZ ziMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_stABAHe$v|ToifVv60B@podBTcIqVcr1w`hG7HeY|fvLid#^Ok4NAXIXSt1 Zxpx7IC@PekH?;r&002ovPDHLkV1mrIYexV8 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 797d452e458972bab9d994556c8305db4c827017..b928ce29561dac99d84f518a6b6e8abd51edcd0a 100644 GIT binary patch delta 1278 zcmVa`rL5e&=P8CGyYJ3viU8C}!=cJ^4Tp%cD7h`PPN z*;pt@60GL;ASYE!Lu#thGQVk=arE@S3yG7)|Atrqxu!zM<%S^yUdru4MV6te$gous zLF-^In+BW=MG=mN*_FGHm-bhL9{p4_4kLY`2lvs~jepf8kX6+>Kmv)ldtn(f)r6y< zJl)QuVZD%tqAY<=a6l@SfM;Wa@Wa}&b$}Es!$M6_j$EhZ+^Lj|<1IymdwaVu5$cB? zn+@tFvS+wz3>a(Yqn5K1D50(TwT5c(<2k$!M%1EFz9p}aC4jMuv*wNJ56WZ zOifiDnHd$w){41Krs%xgqD(#+j>2d#)N-9?ZBWKBy+c3m81TpSWf<`I4OclB1V#na zX>tjv2$v+09B};hyuvW;yZwNp^OGqBY?ivwtC&!-}OUo*tes&Z&^*HrC8cWe%`_`|Ina zMesQshUAbBAC!~y|bS}^)SvcdxHQA?Wz@{B>B-*Ad{+D6%=B^OX;lKvpv&t;8F zTLNgqDjo|&U_96lizp{6_@Z=payDY*j+<(;hm)(EhZ z=(wAq)}MaeibF5%b*M>_>~y=jHsPZ}Q#G|#t+Z5K3t+WW)_?lu>g@EZuS_wFwclq@ zh4i`E>)-CCH(NeSv;Zn~Mf?1tPj^1#I4*wr?3rm!;CZkhbkw9+>eB z?J{?+FLkYu+4_Uk`r_>LHF~flZm0oBf#vr8%vJ>#p~!KNvqGG3)|f1T_)ydeh8$vDceZ>oNbH^|*hJ*t?Yc*1`WB&W>VYVEzu) zq#7;;VjO)t*nbgf(!`OXJBr45rP>>AQr$6c7slJWvbpNW@KTwna6d?PP>hvXCcp=4 zF;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f=f2nK>z>% diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index 502f463a9bc882b461c96aadf492d1729e49e725..6b44d4da2480bc67ec10c2fdb7366f62160effcb 100644 GIT binary patch literal 2837 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 KMNUMnLSTa6+chWv diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index 0ec303439225b78712f49115768196d8d76f6790..162138e975880a7507d2363ad210160acfc4d39c 100644 GIT binary patch literal 4650 zcmV+_64mXAP)5X#RN}&abj&2gtw2LO8X*X#Sj2{>RB>n{2X+Lbg0U8Lc z16HvKwr;>K45D8GB|m!pTCKeT}7!^6Xtp`jtA()B7P`0GzS zCVge!KGx}Vf9dtJCx1k@*)B;^1{IY#iTFyFz2RYzB=rYRJQDu?qP^rH^dE#L%wOPqEQC~osEuN;PJwHA8;A`K_?=_5SS`CCy3AC|>jYJ@I~4vdTpy@kp`IQDX%N6HXCz!+`Ij){oNLSe3A$*Ns7xNcq!$!SX9MF_SZq)o@9#e zI)W}bk?gff7Ef9&J(*Mv!BQ$7x1>`kiy7x$AE=7LWL37Ll9{>?%uGZ;NiZIYESsA7IzpAp%Q=)ou!=iJF{paBTdb_f;h=|;xyT{0(Q}xRlq|EQ zbc!vel5CN_3J-}%a-AfYFRvOb_O+0!H`vzB27K+zYj;o#x6*>(mP}>RY&0^*Mj|0j z_>BT#>%kzlv#FUA+vWAr^VMAg+>uV3oo#9FV12DVHXe=KFhmPUFv#87-pOtXbn)-Y zd7X!(d~2YS^|rLKk0&m(aD1tbpY-}eID+j~E8EuI#Rh%;739L^%G~Z|xb3yl-#f@2 z!#?9zrJQeqKfPqDcl7kLA8i|Ctr@g(SoAr|2hiSn34^iA5T3le$ zWY0x_5Cr4mHrcOwzwnS3Qpvi%FW%#m$uZ`%+E_8sg{~B3OhVN(h3XAN9@^ zwDNkzsPLS}qH`=jVV0&rpsJk|UqhuE9bynnWTxptJ9AG#w%#7s8zG8^6_QtL&hNI6 z!{@R&OoD3##IkUVU=uYUMje}okfrN<&5Qbo2 zj4tdJe+P5qj3H?5Z*Aied_Fi;bG7LsZ~317!MuERl49=*pTk^<-^uq3ol#dpQVBkVH$QF`Gc1veB zYj(Q$&!DpL{q~M7HoFw7Dtv*;N3B^Zs5L`7T$-C@pUqBJ_4(Hu!VwH9LhU!6NwJ;1 z8@bb^kzwUUd#LZq2!yx@Sx%K|l8KblAgQ&d(LfeZwOB?fQEK7(0Ocj*6eaKTZNlTKpD@|4TDkB zMsTozh9DS#J%)4D5Hr9vM8gnlqBu-~8yrFs3`YuHb9O9L;*Jr*8RU+u-2n*64#dJ} zD!_YSIgF#C7A;B_haN%^j5rq^9B83wwmbRkF91?O?(EVcZ_W$T*K&&xAhy-z;^QnB zHgj07UK)jWb;jA1`FRS zV34$%NYbYvaq+Qn3i_i$WNR@54)u&yo6Y`?<-!A`E!$Sx!;X!Q7PZM})@$>4@_q(~ z>h$yk3ob5j6%1|N>~Qg$tkc`P{Cgn$*3Mpj^Q=eneWfro!Tm*Y%pmuJvEe+A78e;0 zOz_{`Kg2g*(Etq)Ao5|C^?+3Nk;5hx6c|67o#FZIWzcK4a$roUu#l<`ly1lK;U9dj~ z=7RIc)d9BrY z6YR+CW2q4ghpknoY5_=hp&Bm)2G0=>>j?(*Q;$Z2feE%R?^~r|fmeC19hl&67t=}B zp*x=o>e_9)stwTjp(RN)@Jv++Lu|!7a!-xgcIyGd5)AcOSoD)iOciG2l@5ce;F6(_IgwGq1-@3-26D?jSAKRXPM&p4 z7sg=SsfBs&{c7SJ?w)R;O<8F=qX!x9W&o1`HkO`lSP1nuq{U>E0RdDaRS z7b^LtKqs#i7uIs8Nfj5%GJ$Z6g?1IZ21SeA8wUBHIa+c-D00?Fe->7hFv5!7X#+da z#wHk!)<+YU*&W^ec^i3KxxMV*`*lEy@O;JY@AO|J9_K^bt6_%7$DWhj1$Nc%X=1zG zo@L^+Iz2+Q-j`)9a)Jw1g4E)~7VOgzU!zmRC=h~R0AxYk;`{_SUf$dR zSde6>NtE+2l@N+A@yUd8o9<9*#Fh})7YhSyp4=HsYVME^45CFS9Ev5AhOPY;gD?aG zAPrp{cmSH3uGKaUNPs|+MNqw^LMVa@!B3dK-XFr?5Sm~UYeN`MoWbt7~L62KEMHjmwY)AW*6sz*@DD605=!TZa``iWksB-hHRGz zwps{+F;URw&K3|*u0!044Z+d#TYbLA0!0X!s~YlTsu&qX#K$rGe2v39Y}5v&u-9jJxRA_{~d7(fXR2T_7ZOcEA$ zGg@*IcypkeA7BOhjIH;PR)k}e$*FOqBB6p^xt?aM1G|bmcd`64)IW0DC=ISP%w{wQ zMKAyfJv%eWClD~@hqPj08BaS1n%@APRTe4%+HSMwf>UgY)W3*H72ychfC2=@Lt&FQ zkwj}-C>7ewa={OXCQUJyz`%Ee+jh~URu5qb2H;GgppOTd=HTt3mWz|gP!&Sesn|fb z26)3b4=Iy75E=!3>=FP{johVC4umFH5AOqvHd~5@)V<413Hg zM5F~UZv<^1(m4#}pkW9ugtliEr29rj!xC&F3zOgmhe>dQqb!1L@wl4FWRM3GF(ecl zbj4*^krh=@t%*d**S{=+BZ-Lm)^A=L+qvi7sAQ4+Yrn!oEs#ABTVady(aEvTFU~pK zmbwruB`BOYb@b?BGLaZ}c|3kokk=2X1ch|L;AzPr$EPm`>q4-~;+#?S_&<)kx91yQ zyPelxj63_>5XcT#N^&$5N*sRe56`PhoZI@S=x{hJ_w@9re|+)fmu|Xa$9FnR%l_E3pbJ$!km^||4pI?6CS1-Td z^f*)TPzZy_btRZjaL8#nVRbl?$N%-8_l~`DC4XC*{NXn^Hi~=*&VzGGs z`pPSBQ;2rBXX8M-!{u^h1>Hp1P$l|bRcFR0BI$HuDU-}7q_5-TL8H45Z6qMLtczPo zCQHe^QB0OemSs7fPN!XDFYFVeBXP-UL-pO%)0IJm(2%gmnKUm#<2s`WJi)F?Z&}*0 z(p05JGPlX}NRn2zrIIOHFIC;aMJ6;Yi3hGN$c5dlD1%r{E?OfO9|UBh*s4jdDZ!ON zBT&gbWZm}_q1s}DcDHFC1~AF39;)tZRSs*ds!3IU5EJ!*SuSjFm;^UCOoAI6CczC3 gli&u2NpOSX|58;R^?*eUM*si-07*qoM6N<$g5vt-F8}}l delta 850 zcmV-Y1Fih3B;E#)8Gi!+000iU#^3+|0OwFlR7L;)|5U~J09TtSw)Xt~|5(QO`~Ck( z!T0|D|3<*~RmJ%E{r+;#`2ba!klFf7!uJMSo%Q?vP{jByxcAZE>;OrUCbaZYjJo^$ z{nGILmD~Da$@upC{`C6(Ey4dPw)Pyc^>5DkHoEo!QcuK-Jwl-l}t(fQKv z{dds$V#@dygS`PvhX6is7Z+@*x-d;$ zb=6f@U3Jw}_s+W3%*+b9H_vS)-R#9?zrXogeLVI2We2RFTTAL}&3C8PS~<5D&v@UI z+`s*$wqQ=yd$laNUY-|ovcS9~n_90tFUdl#qq0tEUXle|k{Op|DHpSrbxEeZ5~$>o%>OSe z^=41qvh3LlC2xXzu+-2eQoqs1^L>7ylB$bCP);(%(xYZL1 cY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$g3No#=>Px# diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff43d0994d8868c6d0aac81e412abbaf14d8c47 GIT binary patch literal 1669 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..fc136a66cf20cbdf9d19d5fcf7316efe6e4b68c1 GIT binary patch literal 1869 zcmV-T2eSByP)&x{yRBV&dQR)}d%MmtPRDTXVO97oCuck7?dkJ7&-*^l?|I%? z=_!D9qYZcxct-O7f@dTnkqG(g{nXmA+oft&^OG`at*{gd6dUSE7m{kev$M18xUwW8 z2P3ri_^G`ojvYPY^ZWPXnMN2Y0YjHBT>3<5bbfv9`-{2*bVF~+d-tXz^ z`i6fWS~)0IWXssj{Qi_e&wBQB|onNhOK3SMTwXn%9H} z%i+#gocg9Fm`qL(cUo<Dm_CMq>|JMc@aRoJoTzMx+WiUeJMP3tJtfU?iEWC=%1dXJ)uTA5N@H) zp}!vR*lO@|)Wy2Qdd#lzGi!x(l0(TUYW3HOJo$2KL`2N-^n7^(*lW$zeqNIy5q+J{DGo^EvQ08Z45V2A{K+};rIu|h z2v%3Xc1zKOn~4}t^$8=)shsu)l#x*|jAWJr2&SOd?xbBp0qFx#7~`^QvCyIBE#$CTDaApjm#Ywzk=yI)Dd2L`3w-ZF z-(A+Hs_@#O<~C7cE#z_{r{?(jcCJJ)1NMhE)5X3X*1~c;Dve~wQ!NO>8`npNX);~( z#JrNB!z>DLZwu=Zj}67sm)W%W0x20o1&_ z2rG@`EUzbsw`yn6VIhu{tX)}<>PhrzcGZVP5!~pj z5!aC}R86Bl#z#4N7V{+999KsML|YQU=-Aes;yUuB#=+=Td_?qpWI?JJz}p{7%~2$P z+~^W{5<&pgetJbIg(!NF^X3*7@Aa;t;=xNm7jI7TR)Ta{hvbgjw-z9U^iCwGmlBU2 zybeewS?~4=ul<{i9dzmtq~e@AWvW-HBoQeg*AO^vu>KrfmgpY^=-mU2Eh6yzGI)PU zG0A{blF+OPUXvk@kDhO8r361z_^^-WKR z{%f<(Pi=uZA?d0Y1;GPjnM|4k6*hqonH7WjJce}!5IOtVc=S@Cf@-)p_BtFwEZ`od zHtNgiOj^3JU>B&vL@Gb8pL*9v`-tL#WsG|JemOR~S`PFl%iVs@va$yE9O$0ML} zP-DA?_3r7COwG(`-+gxWi?>g|_mRb7c~qx=!@*0s(0!%r>fIZ+?&#guC8;Qi`t!MS z-#V+D%_rYE^{(6JwN|P_bJ;9)U%7Ja^AA2e&35a`ta5=zRkOLtAI^UD>E-i3{n*kT z*&yT=6(s)#5ob6{nX2$U00000NkvXX Hu0mjfs7{u= literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b192c757027fc25e291638288c15c533b0e3b968 GIT binary patch literal 4352 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 delta 850 zcmV-Y1Fih3B;E#)8Gi!+000iU#^3+|0OwFlR7L;)|5U~J09TtSw)Xt~|5(QO`~Ck( z!T0|D|3<*~RmJ%E{r+;#`2ba!klFf7!uJMSo%Q?vP{jByxcAZE>;OrUCbaZYjJo^$ z{nGILmD~Da$@upC{`C6(Ey4dPw)Pyc^>5DkHoEo!QcuK-Jwl-l}t(fQKv z{dds$V#@dygS`PvhX6is7Z+@*x-d;$ zb=6f@U3Jw}_s+W3%*+b9H_vS)-R#9?zrXogeLVI2We2RFTTAL}&3C8PS~<5D&v@UI z+`s*$wqQ=yd$laNUY-|ovcS9~n_90tFUdl#qq0tEUXle|k{Op|DHpSrbxEeZ5~$>o%>OSe z^=41qvh3LlC2xXzu+-2eQoqs1^L>7ylB$bCP);(%(xYZL1 cY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$g3No#=>Px# diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index e9f5fea27c705180eb716271f41b582e76dcbd90..baf8525930c61db3c8052c3cd3d4efa0450181e1 100644 GIT binary patch literal 7532 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 delta 1668 zcmV-~27CGJI*JXD8Gi!+000UT_5c6?0S-`1R7L;)|5U~JDYo_jSDRJE`2GI>`u+b> z#Q0do`1}6<{Qdq#!1wR$2T#*AweE>Ub09v4>;QIg_I^_2LtK$20(D{zn_^HL*3Rj70 z%=tLH_b#{gK7W9-03t&#zyHMQ{FK}Jd(rva=I|w|=9#+Ihp*3ip1$;$>j3}&1vg1V zK~#9!?b~^C5-}JC@Pyrv-6dSEqJqT}#j9#dJ@GzT@B8}xU&J@bBI>f6w6en+CeI)3 z^kC*U?}X%OD8$Fd$H&LV$H&LV$H&LV#|K5~mLYf|Vt-;AMv#QX1a!Ta~6|O(zp+Uvg&Aa=+vBNz0Rs{AlWy-99x<(ohfpEcFpW=7o}_1 z>s&Ou*hMLxE-GxhC`Z*r>&|vj>R7LXbI`f|486`~uft__uGhI}_Fc5H63j7aDDIx{dZl^-u)&qKP!qC^RMF(PhHK^33eOuhHu{hoSl0 zKYv6olX!V%A;_nLc2Q<$rqPnk@(F#u5rszb!OdKo$uh%0J)j}CG3VDtWHIM%xMVXV zmTF#h81iB>r55Is`L$8KI@d+*%{=Nx+FXJ98L0PjFIu;rGnnfYn1R5Qnp<{Jq0M1v zX=X&F8g4GYHsMFm8dDG!y@wy0LzrDkP5n}RZ}&a^{lJ!qV}DSMg`_~iho-+ zYhFY`V=ZZN~BQ&RAHmG&4 z!(on%X00A@4(8Rri!ZBBU(}gmP=BAPwO^0~hnWE5<&o5gK6CEuqlcu2V{xeEaUGt9 zX7jznS5T?%9I4$fnuB2<)EHiTmPxeQU>*)T8~uk^)KEOM+F)+AI>Y`eP$PIFuu==9 zE-`OPbnDbc|0)^xP^m`+=GW8BO)yJ!f5Qc}G(Wj}SEB>1?)30sXn)??nxVBC z)wA(BsB`AW54N{|qmikJR*%x0c`{LGsSfa|NK61pYH(r-UQ4_JXd!Rsz)=kL{GMc5{h13 z8)fF5CzHEDM>+FqY)$pdM}M_8rrW{O4m<%Dt1&gzy8K(_+x-vIN$cs;K#LctaW&OA zAuk_42tYgpa$&Njilse`1^L+zfE<)2YpPh<)0mJ;*IFF|TA%1xX3fZ$kxPfoYE=Ci z)BrMgp=;8Y9L43*j@*RFlXvO-jQ`tkm#McyC%N^n#@P}`4hjO2}V z1RP0E%rxTfpJbnekUwBp-VB(r604xuJ$!t8e0+R-e0+R-e0+R-^7#e&>dm?Lo++vT O0000 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 Muhrzg%Nhs$55&6Oq5uE@ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index 84ac32ae7d989f82d5e46a60405adcc8279e8001..2bb3fcad991280eb919582c62a938cf1b96549ef 100644 GIT binary patch literal 2661 zcmV-r3YztaP)$$Ez@==)gU?&0*Mg|R)qyC1QJjXyAdpg(JX+?pg|*$ zV8vntt6?!4B*cct2&S6pq|<5|N}IHK`4KygV>@N_IgQV#}H@P~y$Ygl30kg)VSSC&XU0BG#;5Ulm%R;wC9S zHR2dSQ++Oau78ls#%DdA!wB`*I_S#i1O>L@bT_z4>0D0sWmbe#!eFi!-D5P?-79`p z+2vQ`n-oqam=u-CG?3F~BX3VXIjuGt>FTClo1NBE39_2Z!usH{;p7&rF`4-m?A}rd z15qAlk2pr0y1DX*l1xA;)>B)ww7Ef-nAj0#H+7iJysq!5b58XR@cJ};;9C;UG9isH zBfHue*RXK8JjaMx|MD|r>A?FR@%u)DmxdfpVTrITL^?aiKE%8(w!o_%FTKC=n6|PR zS+^mNFek^Q4zooZ``8Vm=~UJ8v15MZTc(~4JH<2Gl;JoAmxjfi9~vb$yK5(tcX?!- z-dmjKTt<$2N+Ya;V-Ri_acGTWRxMBqc@f`qfRdD|3hTQv>ZL(Pm)Ics?1*#8=3Mw5 zw5G0gNMp#c%g%*^EJ+-~#k*~7NEl)etP3|d+~p)+V)Ia+m&vQbZ4nzwbzHL{jj%ZH zW|@4BmA#opd8b_12-9YI`@o+!V0Q>j2V_{1$bvM&U=5#y0zxj}MiH!M{VV$h|8nT& zxP>f1-*Lk%MPxy03|oywX^>N)an@sy1=qY&^dJ(V|8P921+Y$UZ$C}44nvjz7hj03 zQ!-m#o-_l}gZ?LLK5UibVbWk}6Fq(OkV(r`$=`Hb@k~%(N2fRjS;!LZ*GP7wAf2!* zi_qD?ipZ13S;2!eMcF^c$9eXmj)Raza{h>|s~|Z&YFWFi7K^HcAm@?u8|6#L%|=`F z7iFU57G_iooJ{u%H>(DmXEGRzYnxx#tb~>k7GWu%^$&7_ZJ={5cg^cGu~v?%FNc;9 z7TQYC9P2U^6RoD&E+fmr_i;2r{uWhYftC>lOM#qt%sU;b7`4>GkzO5UvuFfb9`r$g z>>}V{Ae}H+5>z^37bFzitX3@rEoL>E$i(Y&yh&v0SlcK_B@7AkY1a_-+3ZEac53v? zoHETv!j#v_yBml?o&QsP1Jnuk<)5(@l~(An<;|$HwwyG=uoF)8yLKxK0B#&r)3dH& z8sZ%DmVa3gSPEF<3!JDU2UYg0MLzocu!n{nPEk~p5#OW`2J3i^$l?jx$vA&Kf}bKPta^TYdT@5 zFq~yK)U9J-W1Z&0f!)}%!tVIFF|Q!4%W4(1GIWgqkTP5(3q&Ia1z`a4$O+CxpLcu2 zXJZ{C$HsPZHCodN!%d^72*7d>b4mj>+G>l@jU5Z*e;`OF43?!69bqE;@u#b_h<(Ts z&?tec4>`JyKVfLd>WFTqM8kG30*Or)umgge((}7Yj*)QhbvFchbjLy1-t(J%IMNqe~+mF$0F}f3E}xCgPkLEj^P=L$|>)&kPI|#{xRU zLkHX)og)ZY8IYDsuEwKc3diH@rC!!eh(869K&M$_B?MuWDi7!og_v|$C&+^IK$$wu zR*GUG^qnk7tyW-M0BO-d08(TUQwc3EARaeJBg}3#)AZno$Q_X+Hv-5z(K(099%itm z9!Mh$U2bS9lwzL^x zJVqR!dfc#C)7B3WLSAVg&^1ex+F5kO8UlVSitID8|kqRI$@}`Q|5>JXjhA zOG2!{przE^Chtx~7A2xF-d(XnmgbHq<$SQZRJH=rEJzLd`t-Cf?i3;vlQ_DHht4|P zKPaTdZdaW37v6t5!PW%%k2fP?d`foPP5LegLXiF-?Lk?3vd<;z^~T~951x%>Mli7s zu8VmvWCOChMLJsA$VHxs2ZA`<4VH$na*L>;X~H$rsw&(RR<(^e*;ZX}5l2FYp}zxwA{lZsY{vlPU$F~g>(jviN%J*PlHntu+*q>p@WHR|b{^qy8 z8y+A3;?()+vtr{{+UxuBTJf)a#5bbpw}1JopR9+&QL6Igo~neYs+xT3sPtHuw*c}dym1Lu@yET9tvQ!EA{o8+d^Q~9!+=_00000NkvXXu0mjfdj=4% delta 749 zcmVg;Ps8|O$@u8^{Z_{KM!@$5TAfS6_e#O{MZfpz`2O`0$7~@NRr(1{THzH08y3x{{PYM{eL;T_A9^tcF_4Sxb`8l z_9V3RD6;a(-0A^Pjsi!1?)d#Ap4Tk3^CP0(07;VpJ7@tgQ}z4)*zx@&yZwC9`DV-b z0ZobH_5IB4{KxD3;p_6%|f=bdFhu+F!zMZ2UFj;GUKX7tI;hv3{q~!*pMj75WP_c}> z6)IWvg5_yyg<9Op()eD1hWC19M@?_9_MHec{Z8n3FMs~w_u?Av_yNBmRxVYrpi(M% zFMP21g+hmocQp3ay*Su=qM6He)*HaaTg$E^sym`(t%s3A)x!M+vfjXUBEpK6X9%iU zU!u9jj3(-$dM~sJ%Liy#?|+!6IY#MTau#O6vVj`yh_7%Ni!?!VS+MPTO(_fG+1<#p zqu;A#i+_(N%CmVnYvb>#nA{>Q%3E`Ds7<~jZMywn@h2t>G-LrYy7?Dj{aZqhQd6tzX%(Trn+ z)HNF}%-F{rr=m*0{=a;s#YDL00000NkvXXu0mjfkj9xD diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index 8953cba09064923c5daf2d37e7c3c836ccdd794b..8890b3d5e09a217706eb2cf20a1e953c649d3eed 100644 GIT binary patch literal 6081 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index 0467bf12aa4d28f374bb26596605a46dcbb3e7c8..13b0eb7442eb09a2031c917c024d76651e135946 100644 GIT binary patch literal 6663 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 UCZHpF81P`JzksOJC|QO754J$DG5`Po delta 1410 zcmV-|1%3L5G>Qw58Gi!+002YCyxsr+0P|2xR7L;)|5U~JDYo_jSDRDB`2GI>{Qds= z{r_0T`1}6fwc-8!#-TGX}_?g)CZq4{k!uZ_g@DrQdoW0kI zu+W69&uN^)W`CK&06mMNcYMVF00dG=L_t(|+U?wHQxh>12H+Dm+1+fh+IF>G0SjJM zkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJTkdTm&kdTm&kdTm&kdP`e zsgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>VI$fQI%^ugM`#6By?GeadWcu z0gy9!D`m!H>Bd!JW(@avE8`|5XX(0PN}!8K>`dkavs;rHL+wy96QGNT=S@#7%xtlm zIW!++@*2zm-Py#Zr`DzqsLm!b{iskFNULSqE9A>SqHem>o31A%XL>S_5?=;V_i_y+ z(xxXhnt#r-l1Y8_*h`r?8Tr|)(RAiO)4jQR`13X0mx07C&p@KBP_2s``KEhv^|*8c z$$_T(v6^1Ig=#R}sE{vjA?ErGDZGUsyoJuWdJMc7Nb1^KF)-u<7q zPy$=;)0>vuWuK2hQhswLf!9yg`88u&eBbR8uhod?Nw09AXH}-#qOLLxeT2%C;R)QQ$Za#qp~cM&YVmS4i-*Fpd!cC zBXc?(4wcg>sHmXGd^VdE<5QX{Kyz$;$sCPl(_*-P2Iw?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF34$0Z;QO!J zOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUCUoZo%k(yku QW&i*H07*qoM6N<$g5-$I@&Et; diff --git a/lib/components/app/app.dart b/lib/components/app/app.dart index 2d17351..ba3885e 100644 --- a/lib/components/app/app.dart +++ b/lib/components/app/app.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import '../../main.dart'; import '../../routes/routes.dart'; import '../../routes/routes/main_route.dart'; import '../../styles/themes.dart'; diff --git a/lib/components/recipe/utensils.dart b/lib/components/recipe/utensils.dart index 66b6b4d..cc2b53b 100644 --- a/lib/components/recipe/utensils.dart +++ b/lib/components/recipe/utensils.dart @@ -11,8 +11,6 @@ class UtensilItem extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - height: 32, - width: 108, margin: const EdgeInsets.all(8), decoration: BoxDecoration( borderRadius: BorderRadius.circular(26), @@ -22,7 +20,8 @@ class UtensilItem extends StatelessWidget { ), color: isSelected ? AppColors.copper : Colors.white ), - child: Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8), child: Text( name, style: TTCommonsTextStyles.textMd diff --git a/lib/configuration/app_environtment.dart b/lib/configuration/app_environtment.dart index 816797c..fa82ae8 100644 --- a/lib/configuration/app_environtment.dart +++ b/lib/configuration/app_environtment.dart @@ -1,24 +1,18 @@ -import 'package:flutter_dotenv/flutter_dotenv.dart'; -import '../data/enums/environment_enum.dart'; import '../resources/constants/environtment_constant.dart'; -import 'app_build_config.dart'; class AppEnvironment { - static load() async { - - if (AppBuildConfig.instance.config == BuildConfigEnum.production) { - await dotenv.load(fileName: "production/.env"); - } else { - await dotenv.load(fileName: "staging/.env"); - } - } - - static Map get env => dotenv.env; - - static String get apiUrl => dotenv.env[EnvironmentConstant.baseUrl] ?? ''; - static String get imageUrl => dotenv.env[EnvironmentConstant.imageUrl] ?? ''; + static Map get env => { + EnvironmentConstant.baseUrl: const String.fromEnvironment( + EnvironmentConstant.baseUrl, + defaultValue: ""), + EnvironmentConstant.imageUrl: const String.fromEnvironment( + EnvironmentConstant.imageUrl, + defaultValue: ""), + }; + static String get apiUrl => env[EnvironmentConstant.baseUrl] ?? ''; + static String get imageUrl => env[EnvironmentConstant.imageUrl] ?? ''; } diff --git a/lib/data/local/utensils_contract.dart b/lib/data/local/utensils_contract.dart index efa42ff..e798f0f 100644 --- a/lib/data/local/utensils_contract.dart +++ b/lib/data/local/utensils_contract.dart @@ -22,6 +22,12 @@ class UtensilContract { print('All Data saved!'); } + Future deleteAllUtensil() async { + final Database db = await _databaseHelper.database; + await db.delete(DatabaseConstant.utensilsTable); + print('All Data deleted!'); + } + Future updateUtensil(Utensil utensil) async { final Database db = await _databaseHelper.database; await db.update(DatabaseConstant.utensilsTable, utensil.toJson(), diff --git a/lib/data/remote/services/utensil_service.dart b/lib/data/remote/services/utensil_service.dart new file mode 100644 index 0000000..c27fb94 --- /dev/null +++ b/lib/data/remote/services/utensil_service.dart @@ -0,0 +1,18 @@ +import 'package:dio/dio.dart' hide Headers; +import 'package:retrofit/retrofit.dart'; +import 'package:snap_and_cook_mobile/data/remote/responses/base_response.dart'; + +import '../../../resources/services/recipe_service_constant.dart'; +import '../models/utensil_model.dart'; + +part 'utensil_service.g.dart'; + +@RestApi() +abstract class UtensilServices { + factory UtensilServices(Dio dio) = _UtensilServices; + + @GET(RecipeServiceConstants.utensils) + Future>> getAllUtensil( + @CancelRequest() CancelToken cancelToken, + ); +} diff --git a/lib/data/remote/services/utensil_service.g.dart b/lib/data/remote/services/utensil_service.g.dart new file mode 100644 index 0000000..42abeaf --- /dev/null +++ b/lib/data/remote/services/utensil_service.g.dart @@ -0,0 +1,62 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'utensil_service.dart'; + +// ************************************************************************** +// RetrofitGenerator +// ************************************************************************** + +// ignore_for_file: unnecessary_brace_in_string_interps,no_leading_underscores_for_local_identifiers + +class _UtensilServices implements UtensilServices { + _UtensilServices( + this._dio, { + this.baseUrl, + }); + + final Dio _dio; + + String? baseUrl; + + @override + Future>> getAllUtensil(cancelToken) async { + const _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = {}; + final _result = await _dio.fetch>( + _setStreamType>>(Options( + method: 'GET', + headers: _headers, + extra: _extra, + ) + .compose( + _dio.options, + 'utensils', + queryParameters: queryParameters, + data: _data, + cancelToken: cancelToken, + ) + .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); + final value = BaseResponse>.fromJson( + _result.data!, + (json) => (json as List) + .map((i) => Utensil.fromJson(i as Map)) + .toList(), + ); + return value; + } + + RequestOptions _setStreamType(RequestOptions requestOptions) { + if (T != dynamic && + !(requestOptions.responseType == ResponseType.bytes || + requestOptions.responseType == ResponseType.stream)) { + if (T == String) { + requestOptions.responseType = ResponseType.plain; + } else { + requestOptions.responseType = ResponseType.json; + } + } + return requestOptions; + } +} diff --git a/lib/domain/use_case/utensils/utensil_interface.dart b/lib/domain/use_case/utensils/utensil_interface.dart index 5c416f6..72756c9 100644 --- a/lib/domain/use_case/utensils/utensil_interface.dart +++ b/lib/domain/use_case/utensils/utensil_interface.dart @@ -5,6 +5,5 @@ abstract class UtensilInterface { Future> fetchSelectedUtensils(); - Future updateUtensil(Utensil utensil); } diff --git a/lib/domain/use_case/utensils/utensil_use_case.dart b/lib/domain/use_case/utensils/utensil_use_case.dart index c6e164e..4cc9b7f 100644 --- a/lib/domain/use_case/utensils/utensil_use_case.dart +++ b/lib/domain/use_case/utensils/utensil_use_case.dart @@ -1,4 +1,7 @@ +import 'package:dio/dio.dart'; +import 'package:get/get.dart'; import 'package:snap_and_cook_mobile/data/local/utensils_contract.dart'; +import 'package:snap_and_cook_mobile/data/remote/services/utensil_service.dart'; import 'package:snap_and_cook_mobile/domain/use_case/utensils/utensil_resource.dart'; import '../../../data/remote/models/utensil_model.dart'; @@ -6,16 +9,25 @@ import 'utensil_interface.dart'; class UtensilUseCase implements UtensilInterface { final _dbContract = UtensilContract(); + final _utensilService = Get.find(); @override Future> fetchUtensils() async { - List utensils = await _dbContract.getUtensils(); - if (utensils.isEmpty){ - _dbContract.insertAllUtensil(utensilResource); - return utensilResource; - } + try{ + var response = await _utensilService.getAllUtensil(CancelToken()); + List utensils = await _dbContract.getUtensils(); - return utensils; + if (utensils.length == (response.data?.length ?? 0)){ + return utensils; + } + + await _dbContract.deleteAllUtensil(); + await _dbContract.insertAllUtensil(response.data ?? []); + utensils = await _dbContract.getUtensils(); + return utensils; + } catch (e){ + return []; + } } @override diff --git a/lib/init.dart b/lib/init.dart index 27880ae..2d5455d 100644 --- a/lib/init.dart +++ b/lib/init.dart @@ -2,6 +2,7 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:snap_and_cook_mobile/data/remote/services/recipe_service.dart'; +import 'package:snap_and_cook_mobile/data/remote/services/utensil_service.dart'; import 'package:snap_and_cook_mobile/utils/extension/dio_extension.dart'; import 'package:snap_and_cook_mobile/utils/interceptor/platform_header_interceptor.dart'; @@ -13,7 +14,7 @@ import 'utils/session/session.dart'; Future init() async { WidgetsFlutterBinding.ensureInitialized(); - await AppEnvironment.load(); + AppEnvironment(); await Get.putAsync( () async => Dio() @@ -29,5 +30,6 @@ Future init() async { await Get.putAsync(() async => Session()); await Get.putAsync(() async => RecipeServices(Get.find())); + await Get.putAsync(() async => UtensilServices(Get.find())); runApp(const RootRestorationScope(restorationId: 'root', child: App())); } diff --git a/lib/main.dart b/lib/main.dart deleted file mode 100644 index f0bce5e..0000000 --- a/lib/main.dart +++ /dev/null @@ -1,212 +0,0 @@ -import 'dart:io'; -import 'dart:typed_data'; -import 'dart:ui'; - -import 'package:flutter/material.dart'; -import 'dart:async'; -import 'package:flutter_vision/flutter_vision.dart'; -import 'package:image_picker/image_picker.dart'; - -enum Options { none, imagev8 } - -void main() async { - WidgetsFlutterBinding.ensureInitialized(); - runApp(const MaterialApp( - home: MyApp(), - debugShowCheckedModeBanner: false, - )); -} - -class MyApp extends StatefulWidget { - const MyApp({Key? key}) : super(key: key); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - late FlutterVision vision; - Options option = Options.none; - - @override - void initState() { - super.initState(); - vision = FlutterVision(); - } - - @override - void dispose() async { - super.dispose(); - await vision.closeYoloModel(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: task(option), - ); - } - - Widget task(Options option) { - return YoloImageV8(vision: vision); - - } -} - -class YoloImageV8 extends StatefulWidget { - final FlutterVision vision; - const YoloImageV8({Key? key, required this.vision}) : super(key: key); - - @override - State createState() => _YoloImageV8State(); -} - -class _YoloImageV8State extends State { - late List> yoloResults; - File? imageFile; - int imageHeight = 1; - int imageWidth = 1; - bool isLoaded = false; - - @override - void initState() { - super.initState(); - loadYoloModel().then((value) { - setState(() { - yoloResults = []; - isLoaded = true; - }); - }); - } - - @override - void dispose() async { - super.dispose(); - } - - @override - Widget build(BuildContext context) { - final Size size = MediaQuery.of(context).size; - if (!isLoaded) { - return const Scaffold( - body: Center( - child: Text("Model not loaded, waiting for it"), - ), - ); - } - return Scaffold( - appBar: AppBar( - title: const Text("Yolo V8"), - ), - body: Column( - children: [ - Expanded(child: imageFile != null ? Image.file(imageFile!) : const SizedBox()), - Stack( - fit: StackFit.expand, - children: [ - Align( - alignment: Alignment.bottomCenter, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - TextButton( - onPressed: pickImage, - child: const Text("ambil gmbr serah"), - ), - // ElevatedButton( - // onPressed: yoloOnImage, - // child: const Text("Ya test"), - // ) - ], - ), - ), - ], - ), - ...displayBoxesAroundRecognizedObjects(size), - ], - ), - ); - } - - Future loadYoloModel() async { - await widget.vision.loadYoloModel( - labels: 'assets/labels.txt', - modelPath: 'assets/yolov8m_float16.tflite', - modelVersion: "yolov8", - quantization: false, - numThreads: 2, - useGpu: true, - ); - setState(() { - isLoaded = true; - }); - } - - Future pickImage() async { - final ImagePicker picker = ImagePicker(); - final XFile? photo = await picker.pickImage(source: ImageSource.gallery); - if (photo != null) { - setState(() { - imageFile = File(photo.path); - yoloOnImage(); - }); - } - } - - yoloOnImage() async { - yoloResults.clear(); - Uint8List byte = await imageFile!.readAsBytes(); - final image = await decodeImageFromList(byte); - imageHeight = image.height; - imageWidth = image.width; - final result = await widget.vision.yoloOnImage( - bytesList: byte, - imageHeight: image.height, - imageWidth: image.width, - iouThreshold: 0.8, - confThreshold: 0.2, - classThreshold: 0.3, - ); - if (result.isNotEmpty) { - setState(() { - yoloResults = result; - }); - } - } - - List displayBoxesAroundRecognizedObjects(Size screen) { - if (yoloResults.isEmpty) return []; - - double factorX = screen.width / (imageWidth); - double imgRatio = imageWidth / imageHeight; - double newWidth = imageWidth * factorX; - double newHeight = newWidth / imgRatio; - double factorY = newHeight / (imageHeight); - - double pady = (screen.height - newHeight) / 2; - - Color colorPick = const Color.fromARGB(255, 50, 233, 30); - return yoloResults.map((result) { - return Positioned( - left: result["box"][0] * factorX, - top: result["box"][1] * factorY + pady, - width: (result["box"][2] - result["box"][0]) * factorX, - height: (result["box"][3] - result["box"][1]) * factorY, - child: Container( - decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(10.0)), - border: Border.all(color: Colors.pink, width: 2.0), - ), - child: Text( - "${result['tag']} ${(result['box'][4] * 100).toStringAsFixed(0)}%", - style: TextStyle( - background: Paint()..color = colorPick, - color: Colors.white, - fontSize: 12.0, - ), - ), - ), - ); - }).toList(); - } -} \ No newline at end of file diff --git a/lib/main_production.dart b/lib/main_production.dart index f420fdb..9806724 100644 --- a/lib/main_production.dart +++ b/lib/main_production.dart @@ -1,8 +1,12 @@ +import 'dart:io'; + import 'configuration/app_build_config.dart'; import 'data/enums/environment_enum.dart'; import 'init.dart'; +import 'main_staging.dart'; void main() async{ + HttpOverrides.global = MyHttpOverrides(); AppBuildConfig.instantiate(config: BuildConfigEnum.production); await init(); } \ No newline at end of file diff --git a/lib/main_staging.dart b/lib/main_staging.dart index 6215069..a97f1a1 100644 --- a/lib/main_staging.dart +++ b/lib/main_staging.dart @@ -1,8 +1,19 @@ +import 'dart:io'; + import 'configuration/app_build_config.dart'; import 'data/enums/environment_enum.dart'; import 'init.dart'; +class MyHttpOverrides extends HttpOverrides{ + @override + HttpClient createHttpClient(SecurityContext? context){ + return super.createHttpClient(context) + ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true; + } +} + void main() async{ + HttpOverrides.global = MyHttpOverrides(); AppBuildConfig.instantiate(config: BuildConfigEnum.staging); await init(); } diff --git a/lib/presentation/recipe_detail/components/utensils_list_widget.dart b/lib/presentation/recipe_detail/components/utensils_list_widget.dart index 48451f1..48a5fa8 100644 --- a/lib/presentation/recipe_detail/components/utensils_list_widget.dart +++ b/lib/presentation/recipe_detail/components/utensils_list_widget.dart @@ -9,8 +9,9 @@ class UtensilsListWidget extends StatelessWidget { @override Widget build(BuildContext context) { return SizedBox( - height: 50, + height: 55, child: ListView.builder( + clipBehavior: Clip.none, itemBuilder: (context, index) { return UtensilItem(name: utensils[index], isSelected: false,); }, diff --git a/lib/presentation/recipe_detection/components/detection_item_widget.dart b/lib/presentation/recipe_detection/components/detection_item_widget.dart index 093bbc6..db3079c 100644 --- a/lib/presentation/recipe_detection/components/detection_item_widget.dart +++ b/lib/presentation/recipe_detection/components/detection_item_widget.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:snap_and_cook_mobile/data/remote/models/ingredient_model.dart'; import 'package:snap_and_cook_mobile/presentation/recipe_detection/view_model/recipe_detection_view_model.dart'; @@ -43,9 +44,13 @@ class DetectionItemWidget extends GetView { }, splashColor: Colors.transparent, icon: const Icon(Icons.add_circle_outline)), - Text( - '${ingredient.quantity}', - style: TTCommonsTextStyles.textMd.textMedium(), + SizedBox( + width: 20.w, + child: Text( + '${ingredient.quantity?.toInt()}', + textAlign: TextAlign.center, + style: TTCommonsTextStyles.textMd.textMedium(), + ), ), IconButton( onPressed: () { diff --git a/lib/presentation/recipe_detection/components/detection_result_widget.dart b/lib/presentation/recipe_detection/components/detection_result_widget.dart index f4b1324..fe219a2 100644 --- a/lib/presentation/recipe_detection/components/detection_result_widget.dart +++ b/lib/presentation/recipe_detection/components/detection_result_widget.dart @@ -67,7 +67,7 @@ class DetectionResultWidget extends GetView { isLeading: true, ), ), - SizedBox(width: 8), + const SizedBox(width: 8), Expanded( child: BasicButton( onPress: this.controller.navigateToRecipeDetectionResult, diff --git a/lib/presentation/recipe_detection/view/recipe_detection_view.dart b/lib/presentation/recipe_detection/view/recipe_detection_view.dart index 00172f6..555e0ff 100644 --- a/lib/presentation/recipe_detection/view/recipe_detection_view.dart +++ b/lib/presentation/recipe_detection/view/recipe_detection_view.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:snap_and_cook_mobile/components/basic_button.dart'; @@ -5,6 +7,8 @@ import 'package:snap_and_cook_mobile/styles/colors.dart'; import 'package:snap_and_cook_mobile/styles/text_styles/tt_commons_text_styles.dart'; import '../../../components/appbar/basic_appbar.dart'; +import '../../../utils/detection/bbox.dart'; +import '../../../utils/detection/labels.dart'; import '../../base/base_view.dart'; import '../components/detection_result_widget.dart'; import '../view_model/recipe_detection_view_model.dart'; @@ -82,12 +86,50 @@ class RecipeDetectionView extends BaseView { Widget _detection(BuildContext context) { return Obx(() { - if (controller.imageBytes.value != null) { + final bboxesColors = List.generate( + 6, + (_) => + Color((Random().nextDouble() * 0xFFFFFF).toInt()).withOpacity(1.0), + ); + + final double displayWidth = MediaQuery.of(context).size.width; + + double resizeFactor = 1; + + if (controller.imageWidth.value != null && + controller.imageHeight.value != null) { + double k1 = displayWidth / controller.imageWidth.value!; + double k2 = + controller.maxImageWidgetHeight / controller.imageHeight.value!; + resizeFactor = min(k1, k2); + } + + List bboxesWidgets = []; + for (int i = 0; i < controller.bboxes.length; i++) { + final box = controller.bboxes[i]; + final boxClass = controller.classes[i]; + bboxesWidgets.add( + Bbox( + box[0] * resizeFactor, + box[1] * resizeFactor, + box[2] * resizeFactor, + box[3] * resizeFactor, + labels[boxClass], + controller.scores[i], + bboxesColors[boxClass]), + ); + } + + if (controller.imageFile.value != null) { return SizedBox( - width: Get.width, - child: Image.memory( - controller.imageBytes.value!, - fit: BoxFit.contain, + height: controller.maxImageWidgetHeight, + child: Center( + child: Stack( + children: [ + if (controller.imageFile.value != null) Image.file(controller.imageFile.value!), + ...bboxesWidgets, + ], + ), ), ); } else { diff --git a/lib/presentation/recipe_detection/view_model/recipe_detection_view_model.dart b/lib/presentation/recipe_detection/view_model/recipe_detection_view_model.dart index 0787c72..30afdf6 100644 --- a/lib/presentation/recipe_detection/view_model/recipe_detection_view_model.dart +++ b/lib/presentation/recipe_detection/view_model/recipe_detection_view_model.dart @@ -1,36 +1,58 @@ import 'dart:async'; import 'dart:io'; import 'dart:typed_data'; -import 'dart:ui'; import 'package:flutter/material.dart'; -import 'package:flutter_vision/flutter_vision.dart'; import 'package:get/get.dart'; +import 'package:image/image.dart' as img; import 'package:snap_and_cook_mobile/data/remote/models/ingredient_model.dart'; import 'package:snap_and_cook_mobile/resources/arguments/argument_constants.dart'; import 'package:snap_and_cook_mobile/routes/routes/main_route.dart'; +import 'package:snap_and_cook_mobile/utils/detection/labels.dart'; import '../../../components/camera/custom_camera.dart'; -import '../../../utils/helper/detection_helper.dart'; +import '../../../utils/detection/yolo.dart'; import '../../base/base_view_model.dart'; class RecipeDetectionViewModel extends BaseViewModel { - final FlutterVision _vision = FlutterVision(); RxList> modelResults = RxList(); Rxn imageFile = Rxn(); - RxInt imageHeight = RxInt(1); - RxInt imageWidth = RxInt(1); + RxnInt imageHeight = RxnInt(); + RxnInt imageWidth = RxnInt(); RxBool isLoadingModel = RxBool(false); RxBool isProcessingModel = RxBool(false); RxBool isShowDetectionResult = RxBool(false); RxList detectedIngredients = RxList(); final Stopwatch _stopwatch = Stopwatch(); - Timer? _timer; + + static const inModelWidth = 640; + static const inModelHeight = 640; + static const numClasses = 6; + + double maxImageWidgetHeight = 400; + + double confidenceThreshold = 0.20; + double iouThreshold = 0.1; + + RxList> inferenceOutput = RxList(); + RxList classes = RxList(); + RxList> bboxes = RxList(); + RxList scores = RxList(); + + // int? imageWidth; + // int? imageHeight; Rxn imageBytes = Rxn(); DraggableScrollableController draggableScrollableController = DraggableScrollableController(); + final YoloModel model = YoloModel( + 'assets/yolov8.tflite', + inModelWidth, + inModelHeight, + numClasses, + ); + @override void onInit() { super.onInit(); @@ -39,18 +61,70 @@ class RecipeDetectionViewModel extends BaseViewModel { Future _loadMachineLearningModel() async { showLoadingContainer(); - await _vision.loadYoloModel( - // labels: 'assets/labels.txt', - modelPath: 'assets/yolov8m_float16.tflite', - labels: 'assets/labels.txt', - modelVersion: "yolov8", - quantization: false, - numThreads: 3, - useGpu: true, - ); + await model.init(); hideLoadingContainer(); } + Future updatePostProcess() async { + detectedIngredients.clear(); + print("MASUK 1"); + if (inferenceOutput.isEmpty) { + return; + } + + List newClasses = []; + List> newBboxes = []; + List newScores = []; + + print("MASUK 2"); + + /// Wait this process with loading + (newClasses, newBboxes, newScores) = await model.postprocess( + inferenceOutput, + imageWidth.value ?? 0, + imageHeight.value ?? 0, + confidenceThreshold: confidenceThreshold, + iouThreshold: iouThreshold, + ); + print("MASUK 3"); + + debugPrint('Detected ${newClasses} classes'); + debugPrint('Detected ${newBboxes.length} boxed'); + debugPrint('Detected ${newScores.length} scores'); + + classes.value = newClasses; + bboxes.value = newBboxes; + scores.value = newScores; + hideLoadingContainer(); + + for (var element in newClasses) { + if (detectedIngredients.isEmpty){ + detectedIngredients.add(Ingredient( + name: labels[element], + quantity: 1, + )); + } else { + bool isExist = false; + for (int i = 0; i < detectedIngredients.length; i++) { + if (detectedIngredients[i].name == labels[element]) { + detectedIngredients[i].quantity = detectedIngredients[i].quantity! + 1; + isExist = true; + break; + } + } + if (!isExist) { + detectedIngredients.add(Ingredient( + name: labels[element], + quantity: 1, + )); + } + } + } + + // closeLoadingDialog(); + _showDraggableBottomSheet(); + } + Future pickImage() async { File? data = await Navigator.of(Get.context!).push( MaterialPageRoute( @@ -58,67 +132,72 @@ class RecipeDetectionViewModel extends BaseViewModel { const CustomCameraWidget(compressionQuality: 80), ), ); + print("MASUK 9"); + if (data != null) { + print("MASUK 10"); + imageFile.value = data; - _startTimer(); + // _startTimer(); + await Future.delayed(const Duration(milliseconds: 500)); + print("MASUK 11"); + _detectIngredients(); } } void _startTimer() { _stopwatch.start(); - _timer = Timer.periodic(const Duration(seconds: 1), (timer) { - print("${_stopwatch.elapsed.inSeconds} seconds"); - }); } void _detectIngredients() async { - modelResults.clear(); + print("MASUK SINI 1"); + + // showLoadingDialog(); + + final image = img.decodeImage(await imageFile.value!.readAsBytes())!; + print("MASUK SINI 2"); - Uint8List byte = await imageFile.value!.readAsBytes(); - final image = await decodeImageFromList(byte); imageHeight.value = image.height; imageWidth.value = image.width; + inferenceOutput.value = model.infer(image); - showLoadingDialog(); - final result = await _vision.yoloOnImage( - bytesList: byte, - imageHeight: image.height, - imageWidth: image.width, - iouThreshold: 0.2, - confThreshold: 0.2, - classThreshold: 0.2, - ); + print("MASUK SINI 3"); + updatePostProcess(); - print("DATA IS ${result.length}"); - if (result.isNotEmpty) { - modelResults.value = result; - imageBytes.value = await drawOnImage(modelResults); - closeLoadingDialog(); - _showDraggableBottomSheet(); - _timer?.cancel(); - _stopwatch.stop(); - _stopwatch.reset(); - } else { - _timer?.cancel(); - _stopwatch.stop(); - _stopwatch.reset(); - closeLoadingDialog(); - showGeneralDialog(context: Get.context!, pageBuilder: (context, anim1, anim2) { - return AlertDialog( - title: const Text("Tidak ada bahan yang terdeteksi"), - content: const Text("Silahkan coba lagi"), - actions: [ - TextButton(onPressed: () { - Get.back(); - }, child: const Text("OK")) - ], - ); - }); - } + + // final result = await _vision.yoloOnImage( + // bytesList: byte, + // imageHeight: image.height, + // imageWidth: image.width, + // iouThreshold: 0.2, + // confThreshold: 0.2, + // classThreshold: 0.2, + // ); + + // print("DATA IS ${result.length}"); + // if (result.isNotEmpty) { + // } else { + // _timer?.cancel(); + // _stopwatch.stop(); + // _stopwatch.reset(); + // closeLoadingDialog(); + // showGeneralDialog(context: Get.context!, pageBuilder: (context, anim1, anim2) { + // return AlertDialog( + // title: const Text("Tidak ada bahan yang terdeteksi"), + // content: const Text("Silahkan coba lagi"), + // actions: [ + // TextButton(onPressed: () { + // Get.back(); + // }, child: const Text("OK")) + // ], + // ); + // }); + // } } + final translationDict = { 'carrot': 'Wortel', }; @@ -158,38 +237,38 @@ class RecipeDetectionViewModel extends BaseViewModel { detectedIngredients.refresh(); } - Future drawOnImage(List> modelResults) async { - final image = imageFile.value; - if (image == null) { - return Uint8List(0); - } - - final imgBytes = image.readAsBytesSync(); - final img = await decodeImageFromList(Uint8List.fromList(imgBytes)); - - final recorder = PictureRecorder(); - final canvas = Canvas(recorder); - canvas.drawImage(img, Offset.zero, Paint()); - List detectedObject = - drawBoxesOnCanvasAndReturnDetectedIngredient( - canvas: canvas, - screen: Size(img.width.toDouble(), img.height.toDouble()), - modelResults: modelResults, - imageHeight: imageHeight.value, - imageWidth: imageWidth.value, - ); - - detectedIngredients.value = translateIngredients(detectedObject, translationDict); - - // detectedIngredients.value = detectedObject; - - final picture = recorder.endRecording(); - final imgWithBoxes = await picture.toImage(img.width, img.height); - final ByteData? byteData = - await imgWithBoxes.toByteData(format: ImageByteFormat.png); - - return byteData!.buffer.asUint8List(); - } + // Future drawOnImage(List> modelResults) async { + // final image = imageFile.value; + // if (image == null) { + // return Uint8List(0); + // } + // + // final imgBytes = image.readAsBytesSync(); + // final img = await decodeImageFromList(Uint8List.fromList(imgBytes)); + // + // final recorder = PictureRecorder(); + // final canvas = Canvas(recorder); + // canvas.drawImage(img, Offset.zero, Paint()); + // List detectedObject = + // drawBoxesOnCanvasAndReturnDetectedIngredient( + // canvas: canvas, + // screen: Size(img.width.toDouble(), img.height.toDouble()), + // modelResults: modelResults, + // imageHeight: imageHeight.value, + // imageWidth: imageWidth.value, + // ); + // + // detectedIngredients.value = translateIngredients(detectedObject, translationDict); + // + // // detectedIngredients.value = detectedObject; + // + // final picture = recorder.endRecording(); + // final imgWithBoxes = await picture.toImage(img.width, img.height); + // final ByteData? byteData = + // await imgWithBoxes.toByteData(format: ImageByteFormat.png); + // + // return byteData!.buffer.asUint8List(); + // } void _showDraggableBottomSheet() { isShowDetectionResult.value = true; @@ -209,7 +288,8 @@ class RecipeDetectionViewModel extends BaseViewModel { @override void onClose() { - _vision.closeYoloModel(); super.onClose(); } } + + diff --git a/lib/presentation/recipe_detection_result/components/detected_ingredient_item.dart b/lib/presentation/recipe_detection_result/components/detected_ingredient_item.dart index 94f5e43..b30bbbe 100644 --- a/lib/presentation/recipe_detection_result/components/detected_ingredient_item.dart +++ b/lib/presentation/recipe_detection_result/components/detected_ingredient_item.dart @@ -19,7 +19,7 @@ class DetectedIngredientItem extends StatelessWidget { color: AppColors.copper), ), child: Text( - '${ingredient.name} ${ingredient.quantity}', + '${ingredient.name}', style: TTCommonsTextStyles.textMd.textMedium().copyWith( color: AppColors.copper, ), diff --git a/lib/presentation/utensils/view_model/utensil_view_model.dart b/lib/presentation/utensils/view_model/utensil_view_model.dart index 4e0b94d..9abb46e 100644 --- a/lib/presentation/utensils/view_model/utensil_view_model.dart +++ b/lib/presentation/utensils/view_model/utensil_view_model.dart @@ -22,12 +22,13 @@ class UtensilViewModel extends BaseViewModel { } void onSelectUtensil(Utensil utensil, int index){ - if (utensil.isSelected == 0){ + if (utensil.isSelected == null || utensil.isSelected == 0){ utensil.isSelected = 1; } else{ utensil.isSelected = 0; } utensils[index] = utensil; + utensils.refresh(); _useCase.updateUtensil(utensil); } diff --git a/lib/resources/services/recipe_service_constant.dart b/lib/resources/services/recipe_service_constant.dart index bec909a..d235be1 100644 --- a/lib/resources/services/recipe_service_constant.dart +++ b/lib/resources/services/recipe_service_constant.dart @@ -2,4 +2,5 @@ class RecipeServiceConstants { static const String listRecipe = 'recipes'; static const String detailRecipe = 'recipe/{uuid}'; static const String recipeRecommendation = 'recipe/recommendation'; + static const String utensils = 'utensils'; } \ No newline at end of file diff --git a/lib/utils/detection/bbox.dart b/lib/utils/detection/bbox.dart new file mode 100644 index 0000000..727bde8 --- /dev/null +++ b/lib/utils/detection/bbox.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; + +class Bbox extends StatelessWidget { + final double x; + final double y; + final double width; + final double height; + final String label; + final double score; + final Color color; + + const Bbox( + this.x, + this.y, + this.width, + this.height, + this.label, + this.score, + this.color, { + super.key, + }); + + @override + Widget build(BuildContext context) { + return Positioned( + top: y - height / 2, + left: x - width / 2, + width: width, + height: height, + child: Container( + decoration: BoxDecoration( + border: Border.all(color: color, width: 3), + borderRadius: const BorderRadius.all(Radius.circular(4)), + ), + child: Align( + alignment: Alignment.topLeft, + child: FittedBox( + child: Container( + color: color, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text(label), + Text(' ${(score * 100).toStringAsFixed(0)}%'), + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/utils/detection/labels.dart b/lib/utils/detection/labels.dart new file mode 100644 index 0000000..2ac574f --- /dev/null +++ b/lib/utils/detection/labels.dart @@ -0,0 +1,8 @@ +const List labels = [ + 'Ayam', + 'Kentang', + 'Pisang', + 'Telur', + 'Tomat', + 'Wortel' +]; diff --git a/lib/utils/detection/nms.dart b/lib/utils/detection/nms.dart new file mode 100644 index 0000000..6319b60 --- /dev/null +++ b/lib/utils/detection/nms.dart @@ -0,0 +1,115 @@ +import 'dart:math'; + +(List, List>, List) nms(List> rawOutput, + {double confidenceThreshold = 0.7, double iouThreshold = 0.4}) { + List bestClasses = []; + List bestScores = []; + + List boxesToSave = []; + + // Take the argmax to the determine the best classes and scores + for (int i = 0; i < 8400; i++) { + double bestScore = 0; + int bestCls = -1; + for (int j = 4; j < 10; j++) { + double clsScore = rawOutput[j][i]; + if (clsScore > bestScore) { + bestScore = clsScore; + bestCls = j - 4; + } + } + if (bestScore > confidenceThreshold) { + bestClasses.add(bestCls); + bestScores.add(bestScore); + boxesToSave.add(i); + } + } + + // Get rid of boxes below confidence threshold + List> candidateBoxes = []; + for (var index in boxesToSave) { + List savedBox = []; + for (int i = 0; i < 4; i++) { + savedBox.add(rawOutput[i][index]); + } + candidateBoxes.add(savedBox); + } + + var sortedBestScores = List.from(bestScores); + sortedBestScores.sort((a, b) => -a.compareTo(b)); + List argSortList = + sortedBestScores.map((e) => bestScores.indexOf(e)).toList(); + + List sortedBestClasses = []; + List> sortedCandidateBoxes = []; + for (var index in argSortList) { + sortedBestClasses.add(bestClasses[index]); + sortedCandidateBoxes.add(candidateBoxes[index]); + } + + List> finalBboxes = []; + List finalScores = []; + List finalClasses = []; + + while (sortedCandidateBoxes.isNotEmpty) { + var bbox1xywh = sortedCandidateBoxes.removeAt(0); + finalBboxes.add(bbox1xywh); + var bbox1xyxy = xywh2xyxy(bbox1xywh); + finalScores.add(sortedBestScores.removeAt(0)); + var class1 = sortedBestClasses.removeAt(0); + finalClasses.add(class1); + + List indexesToRemove = []; + for (int i = 0; i < sortedCandidateBoxes.length; i++) { + if (class1 == sortedBestClasses[i]) { + if (computeIou(bbox1xyxy, xywh2xyxy(sortedCandidateBoxes[i])) > + iouThreshold) { + indexesToRemove.add(i); + } + } + } + for (var index in indexesToRemove.reversed) { + sortedCandidateBoxes.removeAt(index); + sortedBestClasses.removeAt(index); + sortedBestScores.removeAt(index); + } + } + return (finalClasses, finalBboxes, finalScores); +} + +List xywh2xyxy(List bbox) { + double halfWidth = bbox[2] / 2; + double halfHeight = bbox[3] / 2; + return [ + bbox[0] - halfWidth, + bbox[1] - halfHeight, + bbox[0] + halfWidth, + bbox[1] + halfHeight, + ]; +} + +/// Computes the intersection over union between two bounding boxes encoded with +/// the xyxy format. +double computeIou(List bbox1, List bbox2) { + assert(bbox1[0] < bbox1[2]); + assert(bbox1[1] < bbox1[3]); + assert(bbox2[0] < bbox2[2]); + assert(bbox2[1] < bbox2[3]); + + // Determine the coordinate of the intersection rectangle + double xLeft = max(bbox1[0], bbox2[0]); + double yTop = max(bbox1[1], bbox2[1]); + double xRight = min(bbox1[2], bbox2[2]); + double yBottom = min(bbox1[3], bbox2[3]); + + if (xRight < xLeft || yBottom < yTop) { + return 0; + } + double intersectionArea = (xRight - xLeft) * (yBottom - yTop); + double bbox1Area = (bbox1[2] - bbox1[0]) * (bbox1[3] - bbox1[1]); + double bbox2Area = (bbox2[2] - bbox2[0]) * (bbox2[3] - bbox2[1]); + + double iou = intersectionArea / (bbox1Area + bbox2Area - intersectionArea); + assert(iou >= 0 && iou <= 1); + return iou; +} diff --git a/lib/utils/detection/yolo.dart b/lib/utils/detection/yolo.dart new file mode 100644 index 0000000..19c4b5a --- /dev/null +++ b/lib/utils/detection/yolo.dart @@ -0,0 +1,93 @@ +import 'package:flutter/foundation.dart'; +import 'package:tflite_flutter/tflite_flutter.dart'; +import 'package:image/image.dart'; + +import 'nms.dart'; + +class YoloModel { + final String modelPath; + final int inWidth; + final int inHeight; + final int numClasses; + Interpreter? _interpreter; + + YoloModel( + this.modelPath, + this.inWidth, + this.inHeight, + this.numClasses, + ); + + Future init() async { + _interpreter = await Interpreter.fromAsset(modelPath); + } + + List> infer(Image image) { + assert(_interpreter != null, 'The model must be initialized'); + + final imgResized = copyResize(image, width: inWidth, height: inHeight); + final imgNormalized = List.generate( + inHeight, + (y) => List.generate( + inWidth, + (x) { + final pixel = imgResized.getPixel(x, y); + return [pixel.rNormalized, pixel.gNormalized, pixel.bNormalized]; + }, + ), + ); + + // output shape: + // 1 : batch size + // 4 + 6: left, top, right, bottom and probabilities for each class + // 8400: num predictions + final output = [ + List>.filled(4 + numClasses, List.filled(8400, 0)) + ]; + int predictionTimeStart = DateTime.now().millisecondsSinceEpoch; + _interpreter!.run([imgNormalized], output); + debugPrint( + 'Prediction time: ${DateTime.now().millisecondsSinceEpoch - predictionTimeStart} ms'); + return output[0]; + } + + Future<(List, List>, List)> postprocess( + List> unfilteredBboxes, + int imageWidth, + int imageHeight, { + double confidenceThreshold = 0.7, + double iouThreshold = 0.1, + }) async { + List classes; + List> bboxes; + List scores; + int nmsTimeStart = DateTime.now().millisecondsSinceEpoch; + (classes, bboxes, scores) = nms( + unfilteredBboxes, + confidenceThreshold: confidenceThreshold, + iouThreshold: iouThreshold, + ); + debugPrint( + 'NMS time: ${DateTime.now().millisecondsSinceEpoch - nmsTimeStart} ms'); + for (var bbox in bboxes) { + bbox[0] *= imageWidth; + bbox[1] *= imageHeight; + bbox[2] *= imageWidth; + bbox[3] *= imageHeight; + } + return (classes, bboxes, scores); + } + + // (List, List>, List) inferAndPostprocess( + // Image image, { + // double confidenceThreshold = 0.7, + // double iouThreshold = 0.1, + // }) => + // postprocess( + // infer(image), + // image.width, + // image.height, + // confidenceThreshold: confidenceThreshold, + // iouThreshold: iouThreshold, + // ); +} diff --git a/pubspec.lock b/pubspec.lock index 7f5bf58..ffec89d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,18 +21,18 @@ packages: dependency: transitive description: name: archive - sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b" + sha256: ecf4273855368121b1caed0d10d4513c7241dfc813f7d3c8933b36622ae9b265 url: "https://pub.dev" source: hosted - version: "3.4.9" + version: "3.5.1" args: dependency: transitive description: name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.0" async: dependency: transitive description: @@ -77,26 +77,26 @@ packages: dependency: transitive description: name: build_resolvers - sha256: "64e12b0521812d1684b1917bc80945625391cb9bdd4312536b1d69dcb6133ed8" + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "67d591d602906ef9201caf93452495ad1812bea2074f04e25dbd7c133785821b" + sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" url: "https://pub.dev" source: hosted - version: "2.4.7" + version: "2.4.9" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185 + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" url: "https://pub.dev" source: hosted - version: "7.2.11" + version: "7.3.0" built_collection: dependency: transitive description: @@ -109,66 +109,66 @@ packages: dependency: transitive description: name: built_value - sha256: "69acb7007eb2a31dc901512bfe0f7b767168be34cb734835d54c070bfa74c1b2" + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb url: "https://pub.dev" source: hosted - version: "8.8.0" + version: "8.9.2" cached_network_image: dependency: "direct main" description: name: cached_network_image - sha256: f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f + sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.3.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "56aa42a7a01e3c9db8456d9f3f999931f1e05535b5a424271e9a38cabf066613" + sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "4.0.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "759b9a9f8f6ccbb66c185df805fac107f05730b1dab9c64626d1008cca532257" + sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" camera: dependency: "direct main" description: name: camera - sha256: "71fb0e03618a8629a912bbf49bb664869bd16830c1d363b1096df99727b0bebb" + sha256: "9499cbc2e51d8eb0beadc158b288380037618ce4e30c9acbc4fae1ac3ecb5797" url: "https://pub.dev" source: hosted - version: "0.10.5+6" + version: "0.10.5+9" camera_android: dependency: transitive description: name: camera_android - sha256: b63304d553dde613ca68fb40aaa76bbbcdbd051683bdbf2019671ec8d9645ce7 + sha256: "351429510121d179b9aac5a2e8cb525c3cd6c39f4d709c5f72dfb21726e52371" url: "https://pub.dev" source: hosted - version: "0.10.8+14" + version: "0.10.8+16" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "3b6d9f550cfd658c71f34a99509528501e5e5d4fa79f11e3a4d6ef380d8e0254" + sha256: "608b56b0880722f703871329c4d7d4c2f379c8e2936940851df7fc041abc6f51" url: "https://pub.dev" source: hosted - version: "0.9.13+7" + version: "0.9.13+10" camera_platform_interface: dependency: transitive description: name: camera_platform_interface - sha256: "86fd4fc597c6e455265ddb5884feb352d0171ad14b9cdf3aba30da59b25738c4" + sha256: fceb2c36038b6392317b1d5790c6ba9e6ca9f1da3031181b8bea03882bf9387a url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.3" camera_web: dependency: transitive description: @@ -201,6 +201,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0+1" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + url: "https://pub.dev" + source: hosted + version: "0.4.1" clock: dependency: transitive description: @@ -213,10 +221,10 @@ packages: dependency: transitive description: name: code_builder - sha256: b2151ce26a06171005b379ecff6e08d34c470180ffe16b8e14b6d52be292b55f + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "4.10.0" collection: dependency: transitive description: @@ -325,10 +333,10 @@ packages: dependency: transitive description: name: file_selector_platform_interface - sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.6.2" file_selector_windows: dependency: transitive description: @@ -358,14 +366,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.3.1" - flutter_dotenv: - dependency: "direct main" - description: - name: flutter_dotenv - sha256: "9357883bdd153ab78cbf9ffa07656e336b8bbb2b5a3ca596b0b27e119f7c7d77" - url: "https://pub.dev" - source: hosted - version: "5.1.0" flutter_image_compress: dependency: "direct main" description: @@ -382,6 +382,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" flutter_lints: dependency: "direct dev" description: @@ -415,23 +423,15 @@ packages: dependency: "direct main" description: name: flutter_svg - sha256: d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c + sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.0.10+1" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" - flutter_vision: - dependency: "direct main" - description: - name: flutter_vision - sha256: ef1765d992ce39998c25a9d4e2eae7c8e5c4d3fc1f31742a829476fd6758ba6f - url: "https://pub.dev" - source: hosted - version: "1.1.4" flutter_web_plugins: dependency: transitive description: flutter @@ -441,18 +441,18 @@ packages: dependency: "direct main" description: name: fluttertoast - sha256: dfdde255317af381bfc1c486ed968d5a43a2ded9c931e87cbecd88767d6a71c1 + sha256: "81b68579e23fcbcada2db3d50302813d2371664afe6165bc78148050ab94bf66" url: "https://pub.dev" source: hosted - version: "8.2.4" + version: "8.2.5" frontend_server_client: dependency: transitive description: name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.0" get: dependency: "direct main" description: @@ -501,6 +501,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" + image: + dependency: transitive + description: + name: image + sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e" + url: "https://pub.dev" + source: hosted + version: "4.1.7" image_picker: dependency: "direct main" description: @@ -513,10 +521,10 @@ packages: dependency: transitive description: name: image_picker_android - sha256: d6a6e78821086b0b737009b09363018309bbc6de3fd88cc5c26bc2bb44a4957f + sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1" url: "https://pub.dev" source: hosted - version: "0.8.8+2" + version: "0.8.9+3" image_picker_for_web: dependency: transitive description: @@ -529,10 +537,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: "76ec722aeea419d03aa915c2c96bf5b47214b053899088c9abb4086ceecf97a7" + sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 url: "https://pub.dev" source: hosted - version: "0.8.8+4" + version: "0.8.9+1" image_picker_linux: dependency: transitive description: @@ -553,10 +561,10 @@ packages: dependency: transitive description: name: image_picker_platform_interface - sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 + sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b url: "https://pub.dev" source: hosted - version: "2.9.1" + version: "2.9.3" image_picker_windows: dependency: transitive description: @@ -593,18 +601,18 @@ packages: dependency: "direct dev" description: name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "4.9.0" json_serializable: dependency: "direct dev" description: name: json_serializable - sha256: aa1f5a8912615733e0fdc7a02af03308933c93235bdc8d50d0b0c8a8ccb0b969 + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b url: "https://pub.dev" source: hosted - version: "6.7.1" + version: "6.8.0" lints: dependency: transitive description: @@ -697,26 +705,26 @@ packages: dependency: transitive description: name: path_provider - sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa + sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72 + sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.2" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" + sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" path_provider_linux: dependency: transitive description: @@ -729,10 +737,10 @@ packages: dependency: transitive description: name: path_provider_platform_interface - sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_windows: dependency: transitive description: @@ -801,26 +809,18 @@ packages: dependency: transitive description: name: platform - sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59" + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.1.4" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.7" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.dev" - source: hosted - version: "3.7.3" + version: "2.1.8" pool: dependency: transitive description: @@ -853,6 +853,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" retrofit: dependency: "direct main" description: @@ -905,10 +913,10 @@ packages: dependency: transitive description: name: share_plus_platform_interface - sha256: df08bc3a07d01f5ea47b45d03ffcba1fa9cd5370fb44b3f38c70e42cced0f956 + sha256: "251eb156a8b5fa9ce033747d73535bf53911071f8d3b6f4f0b578505ce0d4496" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.4.0" share_plus_web: dependency: transitive description: @@ -945,10 +953,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" + sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" shared_preferences_linux: dependency: transitive description: @@ -961,10 +969,10 @@ packages: dependency: transitive description: name: shared_preferences_platform_interface - sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a + sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_web: dependency: transitive description: @@ -1014,10 +1022,10 @@ packages: dependency: transitive description: name: source_gen - sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.5.0" source_helper: dependency: transitive description: @@ -1046,18 +1054,18 @@ packages: dependency: "direct main" description: name: sqflite - sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" + sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.2" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 + sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" url: "https://pub.dev" source: hosted - version: "2.5.0+2" + version: "2.5.3" stack_trace: dependency: transitive description: @@ -1114,6 +1122,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.1" + tflite_flutter: + dependency: "direct main" + description: + name: tflite_flutter + sha256: ffb8651fdb116ab0131d6dc47ff73883e0f634ad1ab12bb2852eef1bbeab4a6a + url: "https://pub.dev" + source: hosted + version: "0.10.4" timing: dependency: transitive description: @@ -1150,10 +1166,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "507dc655b1d9cb5ebc756032eb785f114e415f91557b73bf60b7e201dfedeb2f" + sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745 url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.3.0" url_launcher_ios: dependency: transitive description: @@ -1214,26 +1230,26 @@ packages: dependency: transitive description: name: vector_graphics - sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43" + sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.11+1" vector_graphics_codec: dependency: transitive description: name: vector_graphics_codec - sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7" + sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.11+1" vector_graphics_compiler: dependency: transitive description: name: vector_graphics_compiler - sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26 + sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" url: "https://pub.dev" source: hosted - version: "1.1.9+1" + version: "1.1.11+1" vector_math: dependency: transitive description: @@ -1270,10 +1286,10 @@ packages: dependency: transitive description: name: xdg_directories - sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" xml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2c5ba48..31c6563 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.0+1 +version: 1.0.0+5 environment: sdk: '>=3.0.2 <4.0.0' @@ -35,7 +35,6 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 - flutter_vision: ^1.1.4 image_picker: ^0.8.6+3 dio: ^4.0.4 flutter_svg: ^2.0.2 @@ -53,9 +52,9 @@ dependencies: lottie: 2.3.1 cached_network_image: ^3.2.3 shimmer: - flutter_dotenv: ^5.0.2 chucker_flutter: sqflite: ^2.2.8+4 + tflite_flutter: ^0.10.4 dev_dependencies: flutter_test: @@ -72,6 +71,13 @@ dev_dependencies: dartz: ^0.10.1 json_serializable: ^6.0.0 json_annotation: ^4.8.0 + flutter_launcher_icons: ^0.13.1 + +flutter_launcher_icons: + android: "launcher_icon" + ios: true + image_path: "assets/images/ic_launcher.png" + min_sdk_android: 21 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec @@ -89,8 +95,6 @@ flutter: # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg assets: - - production/ - - staging/ - assets/ - assets/images/ - assets/fonts/ diff --git a/test/widget_test.dart b/test/widget_test.dart index 965308d..457ede2 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,13 +8,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:snap_and_cook_mobile/main.dart'; - void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - // Verify that our counter starts at 0. expect(find.text('0'), findsOneWidget); expect(find.text('1'), findsNothing);