From 5f0a68977ab60134cecdc75db138724b05ea17e4 Mon Sep 17 00:00:00 2001 From: Watch your step! Date: Sun, 26 Mar 2023 12:11:46 +0900 Subject: [PATCH] feat: Onboarding Screen & Category Screen --- assets/icon_dark/carhorn_dark.png | Bin 1458 -> 794 bytes assets/icon_dark/crack_dark.png | Bin 1929 -> 1278 bytes assets/icon_dark/firealarm_dark.png | Bin 1292 -> 858 bytes assets/icon_dark/gun_dark.png | Bin 1441 -> 994 bytes assets/icon_dark/infantcrying_dark.png | Bin 2348 -> 951 bytes assets/icon_dark/mamapapa_dark.png | Bin 2047 -> 1066 bytes assets/icon_dark/name_dark.png | Bin 1112 -> 665 bytes lib/main.dart | 10 +- lib/src/core/app_constants.dart | 123 +++++++++++++---- lib/src/screens/category/category_card.dart | 62 +++++++++ lib/src/screens/category/category_screen.dart | 130 ++++++++++++++++++ lib/src/screens/home/home_screen.dart | 67 +++++---- lib/src/screens/onboarding_screen.dart | 82 +++++++++++ .../screens/setting/audio_setting_screen.dart | 24 ---- .../setting/setting_gridview_card.dart | 30 ---- 15 files changed, 407 insertions(+), 121 deletions(-) create mode 100644 lib/src/screens/category/category_card.dart create mode 100644 lib/src/screens/category/category_screen.dart create mode 100644 lib/src/screens/onboarding_screen.dart delete mode 100644 lib/src/screens/setting/audio_setting_screen.dart delete mode 100644 lib/src/screens/setting/setting_gridview_card.dart diff --git a/assets/icon_dark/carhorn_dark.png b/assets/icon_dark/carhorn_dark.png index 9458970fec073ce4b0043e1abf41dafcae519057..7a851015d42f3a99f184c361ea1826a6997d0927 100644 GIT binary patch delta 777 zcmV+k1NQu~3z`NtiBL{Q4GJ0x0000DNk~Le0000$0000g2nGNE00RbH;s5{u32;bR za{vG#H~;`4H~~eLF<_B4AAbU`Nkl(a5XZmm%l|Nfn1F16nSgG9nE*Ng z?gXV1#7qE85O0ufU^7A3Ao!jfa2%a{k|oRT=e_%*wtP9A?sWRm8`yc>$`yYou7dTJ@L5vS2cNmA9bTE8NeX&-t zo5A1PPLYX+R!YQyI7Vmdt2vo|XY(^1aRTsbdn0%mzZn|nywqmyO^6F2{mSzn}0Tr?P(T%3!Q^cm=+;< zEAIm7GVw;*kSjU)pxto4O{LTK#CRvrRWo)K2*|Cl9Zi%&1J6g!u4K4&uCK1iNFBh9 zw1PXz@p)9F4rm;o&!uZJQU{c+JR6?h!<~xJ^@IetQ~^4d%b{0T4Ya|}@MEZpuB|F0 zLRtmp#-|D>=znUZAjB2{biMQu=}>TIkN-}f^eiPGomM6V(~n0(TTy9UOUG>vxU;mc zVTmSb6<9iS3G%?aQ_v}qb005##HA@fWUycDU48pfBH&B~U1BT4JKA)W!-ty@Wew8d zdsNpzJE3UhYw!6znEr6#k|Ql#C>L@S|5AcIM|3?8SV|iebTl+vgO@f3m}qP-Z4Pj{ zS6?gSfQotNyU_^+_xlwBqi}iLMaNT7E+QRKxcsMyD0ck?3+kaGKMdYK00000NkvXX Hu0mjfX_-^q delta 1446 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 XTYg^o?lw!O00000NkvXXu0mjftv6Dg delta 1865 zcmV-P2e$bB35gGoReuK_Nkl3T0}&5b=?P+=An^&JoS=46^wr7;pV*_hKwh8^*mZ9R*4bv0Eqa|sxlL?6qHDVP;sHQ zPSQXR)Y|zCzwJYLf~%m!sPMbfCk;55j|$P(4g`PJ#2NJZOcE;7mTt zxVb^+Zhsd93=1uVR^3r~fZU4WVAi&@CelE*=p&?3BYdtCm^Ow50q0|g=+x>Xk?xK976XPh;dO&{fd%2IV=b=Y()@00T{WkKKCV{MQ$82gN^a+iH} z`hUcn4%j-C8s|lzILqOS8~gLGML`v}{n;RCXf}InIcJ}{_Xeo0&wxh)=bsN2zsOT_ z>YKvCOrkfD&g#ts2%8I2p2Gx?tDVEriDpxkOWs4EFM5%EF<|vK?S>^jlqS^ z03T@f5H;bQK7O1=3C?cfZ0}>AhT2gW@qdZm)CQkHbU`@kn>UC&42y!E&&JS-?8c6* z52$Gy4}czYJEl2CTeYRTr*>1obBk zYEAX>;kO(@CqXoBae@+QDDhDTX^?DA3GG}RqLbRw6H%pVbsRQ3CczeT{Y=9IKE9$r zzYO*?%h5Co10u%1cR-}R&dm^dP=8&c>X{e+@YfguzzA9cX)v=q0w$NU5;{XjgkC>W zZ{fw~VT@L85yvs#>o_;H1q~$)b%NrzbTXuQ80#(L_zq3XPn=0et2>bfZqTbZo@nmS z&Ls}%0uiz^uGlKs3~4BW)Q?t1VbTj`FTCuFNIf|Bpe~GE2?TpZYsoa|9DfnUIe~OB zdV}`$MxU*iZJP~UE}uduRO*b&(ovpRCF_s|yKfgm(^I5;e?#Z~DPH>pp_@&Y$|k58 zw=sPE4jfb|rsfbi$~n^T99N=h>r?>@C-@Y6RpwAyNQOK2M?k^|vCpJ?P74|cI6n|~{Q>W#u`)N7+4Vy5sGQptnhOo7Wjq2blPWQ?D zG?eT0K35rIp9jvg4}+@}lmnaWUQ9rO*Nc@eT`~9{DS4jDaKe^G00000NkvXXu0mjf Dl*Nov diff --git a/assets/icon_dark/firealarm_dark.png b/assets/icon_dark/firealarm_dark.png index 60f40e300f7ac0d2239bf4e54cf79e28e54aff74..786e16c9a66315c2c78422c2c30fbeb599e159d1 100644 GIT binary patch delta 786 zcmV+t1MU2b3fcycReu8SNkl5QU$T+|5*Al%NiR4x$ds5?lgv%2gf6 zslZAFlq-;30g(zU9dlBIAx9%C!UM4os2}p1fjy(0)!PL?U;%0bV1pj<2|Z&-_|_Q` zzIDD3o7uJnt`og&%4OU*+6>pr6C8OB&+x4?LJun~gZ}Vp6Mz1N{_tY|WZU)*_iBAB zt-{_`HNNqr-9|S=%oODLj6I2a}oyVq>w1v8%bOhnGlC1@|+W3^uLL)n*7Fw3dFs>o14^8JTk@^8XWfAXta`eG+*f+gP-uxX;T7Dsj$gqs#Flw9 zjl<^a87RFKuS8nP;lY1*cc5KV;V9$#tkFowLNJ|LOW6Jqlv%%s_RPlSL#3P7FwVo|Y$Id_yRS z9bSOV6A+G^P)=|QJOTC_tg*#4nH5AjdY&_zUMgN$lSv zJp4y{x4n4f2HyPiXZuHJeU#zwU%z4bT<2#Uocs77NM{9MbJ!WJ=+?0-z8(!^+>IbXIV7p`}q@KFc{z;CiXmx`%3PEd0lZIBT5@{`;^q znvbKksJPioS(%iDokk~vzr&Kzs5_ETd}?RVn~qM#67M@nNCAtSuY9^9q0~##JdD*T z5D;2Y!U!_a=#`NWjn(y1q)vg5Si0J9W8`^cgn#lc*~n=cIt5ODwnR#caz(tud8FZW zIt7-ehcksJ!HfxUSXW;*a*Fsk7ly5=OD{FkE=42(Wm?jVq*K<6Sz4MEk+46Hm2xjD zk#+I}?88CHqKo+!`pb*#^)Rb;&cl5J1iCOT+MjR9?|gd;iIvJx6|sCT&jgT zoqy8HV(@p^74XEbdekk}@FVpr_|r*yTzkIS@bY9+&?&tv&dQLRZAvE9fD^p2+O3p~ zhxKnl+wWP!Wu5%XVhD4%4CjP0Z6U=+`@zgPE%-j5`X8g zB4M*HYN{AQ504%U;&f7t&SQ^34EzTs8IB(G*>>ZUE~%8c)BLQTAzY{J{YD?2ggY!5 z4V%u1Mk^_!5=y<_bRfN`fX^Pn9hQtXMv8gmIuu&E%Vf}lY$_!wy#NEp`Yk4rK_?GH&RBJZi$zCVL0U883C~g1-_7XZ%KbH z=$Cr}iz*B$tdJ2Yb5;-t8;_MC{EHc*9kdbll9@*4P!Nb&*g(v}24WUA5VNp>u*nKO z(C-@6Sdr|gwm5Gi?6$C<%&58i90~$qBkUcgvq{4{Ie*RdOo=Zc7w4qytJm)`bnUkD z@^@XQ@|F!e;9uP1&399@w61e`hemuZTN}#Bajb&17Pc75nzUUEfuwEe1DcreO!PmF*r9&6CWv)QVnt)Fd_V=MfAkHIkLS%IyWJSc4@73YhG z-{L9N85%=#s7Axw=Q8wi@Fu9(0~29I zI1gEXH$f*C0-DNp8TO?36E$Z-g_||uL~YZ48^AR^He}DSQ zuKu#WHG><5uLpES^Clm$EI}XEQDO*_0UV+|xX})6S5kCu^}$xT$C5~qp%~IzZHq3G zMt{pKwaKOnnR1Ucks_6*x=!EWhpt7JD5(3_9KOPUK_3xOaafPNP|n-nPNE$1H6lib z7GJmcAy@7Z-490g+c=Yk^D^8?lw%trMT@VYEhj?uG4_JtxFJ$}*G9XVAwtAs6Nck> xcS|%3E$lrJqrDANm%iYyr6-7cg2J~>C&u&y zaZV8T1c4L8If3y7T4LuzzXhKl^aN2qwG%w8;&!G}1KK<*jYA@|tG5*rg5Qj1jIk2w$S|H0H{3$V}EUWWz)|PZ!QL5LmA@I zJUpWd9tV!vxV`xn&e%cKX?)*8z5Yu47C18?ar?pH24Y>5zNuAF1ua7G#b)#jJ2>0Fvv7$;L|TY3m!B>hkp5>2ZJpy#Msx6zvF!}6URu)Y&Kr2 zo&M@UJJn?1q<;b9;pgV_9%=CQ{cF0Xa2wk^dPx^)V?B_azU{0^fO0nosjFi{p5`N#X+6I6t9%-9OD6E-K3 zn*uIETK*PUVC)IRqE$59eMTQ`lO2u|ltHF$rOS z>5D$n(mWL6N`)=P6ii1GxO{-(2#xP`Qk++CeR)b=fXI@4hjqgERob0WD{ z;JO{mO@ABPj=2zZL1}V6xv*CKHLf!zVX8p$Q0dF>OhHa07j`ipWh!@X32BlrqATW% zihuVpyBXxxUL?9p%zMWa;2hEW9iZ6UZDP`Aw?y%;zSkxJI$FgIHs5V1S#9hAti31D zh1YntCmJgH*kDlw5@Gpoh>MuHqHQND%Wl3FDt|z@u+xhZ7{)hLIHY2m*9WS`FAk>1 z7q#dbm{#KT$BHJonjxIwmUPVR&F86YZFukP=EC`-_>ISn9xW{;EWuaS{GyC5A ze}Bk+cLVJP_Yben`LU+rMm#P_0{^*Go zeEH*SORKnE_n@?Y*D1rEi1@;an=v5o23+vutvYp6v44S$rKeQpgQxf$IS|hjM7u){ zu3wCioFnNOcX7UQtl6V*nvtfM>a};+Q!yDQ3nMA&Ijpk#&`(5Ov==< zBo}tS8)eG`gLFXw1si&I<S*0`Xx7u`xI9G(Sq-BiV|VfZ-aOCt*zI@!hWv}O6@TgH3^=)Bb91s1 z=9Y-n8LN)ng$M8xvf$@#!$lR3_4KlX3h=Rw^+H8O`YyEx@Bxaxefl)dQ4u~CR_$Bb zsXTxns-%ls4(DD60k1&eTXGGXF@K_xE@IP1MOX@}_AMRE{z)FT21%QA*+7=U*5+-+ zxGPPmxMWF}4Q45AIL|&?)k&AM*|E~H6qYHRb{!cb<-*9ae{m(l7gpF;`E0WF zgo~=A%c3%F)*XI;;MrG2qHDj~M`jdBm)n2Gs2IMmD*NiYNBY``f{19Vf>!^x%b%u9 zOHw2)mGTDeFe2=0{*x;@HU4py=^Tv2W1anc+00000NkvXXu0mjfaA~aV diff --git a/assets/icon_dark/infantcrying_dark.png b/assets/icon_dark/infantcrying_dark.png index 7d41caca0d3d6faae10a03543d5a9609d23c817e..09db89f3a2a0c168fdd6a68089ca02e5fcb022e5 100644 GIT binary patch delta 935 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 N002ovPDHLkV1kVxQ^WuO diff --git a/assets/icon_dark/mamapapa_dark.png b/assets/icon_dark/mamapapa_dark.png index ccab41a0c8312c7a87b8e34d95e29b9a75d12f81..4955144f1e7ed518ffc6b54f69d7ac876c20264c 100644 GIT binary patch delta 1051 zcmV+$1myew52^?@iBL{Q4GJ0x0000DNk~Le0000;0000l2nGNE06-j!r2qf`32;bR za{vG#H~;`4H~~eLF<_B4AAbYCNklm^AslcX1375+~{IlMK9aGDzDinzXj7 z+REA<4f|1BuFJeQsJ1=+b&6zrJfoTQ2IJV&c3s;F{(RGQry!|qZGT*=YWt~e7T7tD zBkcmypoI1^c=8ru@CX$c567$&3+5fd*bUsTaGc8QOtO^a;Qgt#2Tac#ZHUvCtwjHf zNYS6&T&F%ed5iIVRG0zjMLCt*g7r$5>8pFN)Z6I$T+Y==3MX<<0(lmYLw$DAL8zbf zl;8A}b8(VFBnSBhX@3%~7ii+n5F7(;gnOogHt0_T8T^*pD13u-B3%CtcO)G`#`iPG zWcu?GavPVzbuU7*n2Aqza4nnZ&+Wi{$q`Wmq3;rtUXI|7kLu1K&k|Ur&>+XNC>CYAHftkzMQhF$aMoT4~_Bpe$B)P}L5M)K{V+Txgcy=|=Zaz`F zPvDUm<0P)TMtpL|_Dh5v^m#$B#}-@XT(X`oThD$B%99vEi_m12jbr&6UEUO(Jo3LS z_3mI-#{~Cm*nj0SW{61)p~*%(DtxSQ&{pbee7tI#(nF)IU`N4k_Oy0wduXh^7*nCq zDFseL=#nMd&CoOHB@!BN-`j4+oIx$rbL|1sp9fF!{7?t+XeHV{;wZ*wpk9UJfj$T1 z0`XpqgZNkY^UHSACyNmp-Exkn>U0c*W9CW+%H6|$YJbW73DGuZa61hZ8|Cb?$9UD; zXBpzMo~wOABiCbWCx+CtLR>P(whIJ6aF^<_9aZ+&URw^oy_15h@VPDLpS-&ySPi>KK+mgOnp?}Ae_F~P-IC1!+mP&*AJcv{{fu4Xa0*S6CA*+O3G zx3JUdv35C|gIVFI#hl(Jhdfd#PKUzNWzYZj4P<+yo5TO;g=g$e*C(kX(()23%n0GQ z?8vy6BECN3=P9!jQo*Ib1DJKb^Nfk@n7-9RZCry(caSMPrgl!(Nvr2@+`+#>RQi7o z;3?*TYP*nj^BfG9GK;!d>m2j4;XjWHx9%?=`?=eH4oj@7RR}ZlKOMPF!mEP@_zSNL V(FfbQGQI!+002ovPDHLkV1nWo|0Mtb delta 2040 zcmV%Z@iBL{Q4GJ0x0000DNk~Le0001B0000!2nGNE0Mr~FzW@LL32;bR za{vG=O8@{YO97=lmZ_08AAbjwNkli<|5XbjGO365}!kL&Fr!w5cGbv)_ z2~2iL#*(PKfauPtWK}6mJ%Q~f5cLG6KPHn@qMsmiXSoU7#Zn3uw#E@jTz2mWQ6dT4 z0e1kQkKYU_n>>=h{_k!VyLSM%^dIFSw#NIx)jfSs4d^{9m>mmq|jsWGA z4gBT?sCv8--h!jvCUpPsU>1}r^7vDn8tn^EUU`Jy`T*?V!O>B5CL&y0egF=8H1=wD z_`v?*tieI60|q!?6My^0CtR4H-xX6@);Mh12&UIu@!);K5pGj}#g&IC7(ZYrLdE!m z^M)M(%C#kYZa})AQ(t%p=L|anF#oA$ON{y92@L!-@cpWM@J-;Xt@UXdVHDQJA?Kr} z2&R;m>mcVu6>2=l`D z>}oyo{gLqla_hv+1Sk}j6fHb>|Kc&kfkXiG6H)MptLsVQ2cQTGxf8)q04G`iN+%@Y z$RW|9M#1f=uYZOcKVZqK2&`y)g>34C-RQRq$*vN+tuB;TI}y{HJMl`XhDP=4pe7KZ zs!lQZ9pHs#=-a)n2ZoqOK~b1orZfI7R(lfddW}NcT~J45dLrzLXM6iIm+tx1F?%$Rfq_~w@zkQDADo2T_fpmu4cPJgs96Ts)uQ_P@$50an`Z=-)# zErNVsMqD$+a0GDG9KW6@;+UUTUEHbtL%0aJF+O1?K)*-=L`4$u6KL{^wGr8db3Mm6 zDMGG{PnZcnkq2jr)Bz^YWPGlMj89jrDhh=*=n{xP_2!%zpD?e8QFhXC)JEg13BCWe zrY6N`ntz&GSl26K;`i)7OXgd0h@FyTd39Hr6AGZ7$k;2f6osR)nR6RITLaztvE$sF zNiRORq=vAxl*Wz#*YV(d|1U5u!YkQQW>swyq_o2>?!;1>0VW)OPjt~)02_RG(}gSF zzQ>+jgVbOxH2$xU737Z=zN1bRJvwQD8FTK#7k{?^KJLAOnAj13IDFf|gP;*r0sC|? zLAM5<-h6^A7zG1vj89dt6S`=JXE8owQ2^rOUfa3|G{k#_pG3r!1<8yrVQdMm+$zE0 z-k;hZfi#ej(KaMGiIZ^u2^_r4HeFC&-X1QaOb*q$|9#okX`15FL`)CQ`((Tgi0hn% zV}C1bhGtV~{SolVT7+2W>zp1be6XWyjA8Hp8%&|&KX_5qX_{U-T22`ajF6fzpzsZA z$4nS4ObjyiGweNWwZU+xvyf?y@$nb*9b<9MP7o2)tu;c_bn5|xjMzlGn3si+;3r8VSfY6 z@pKm?BojdN@T(ZIId@`ZGLuo7i23)Q*Fh%8rnJT=>ooe)3WdMr)wXtKH;fqTq2dW3 zHry4~M@F|4F(_fTwVQSgQ`LO1g`=PX$?@WhR&_3jdi%onzhRCChbOy_GXwR;&ml`_ zib|MmjLqR&&mf;At8bJY)+BslmVdh(H?+2wW(8H%D7DbnaB!w0VR5B_&vEM6iR#Uh z0?6`Un%j-C#B76~Zc>qwhP`4V$<_R60ZdY{dU(UXRLqwL%eWi-I;1z!8tAx_Efgk% z?{jKnz6eXI{%hzLnkH$KkpT9LPhlg5VC=PAH&p0APvm+$9ax#pk7x$2^pPZ z`q*#?CgSV6H5?%n3ahtAoyNmaa1(MwAb@V~r(KRa;)*d3J?VI4h>d%$vVD>Yn^=x= zM9XI=r7{|Ml3suDyi5~{g1{5X^Gdw6_)oKnH5jIpR{ zT~a#3bwfL0>xNK(6BYRA}1%D6K1Hz3@>YX*? z3;Z4Nhv5m2A3qiJX)P;bN#-Mkau4kp}wWUY{1a>Vyudoe(SM3aGrg@+2B%u8FMMXjQJlQ WSlUq!6}__n0000 diff --git a/assets/icon_dark/name_dark.png b/assets/icon_dark/name_dark.png index fc16e618e5f2e1acfcecc453556ae4ad2f07ad16..f87ce466f6f5e7baf0dc9ee46bb05476003702a6 100644 GIT binary patch delta 647 zcmV;20(kw{2$=;oiBL{Q4GJ0x0000DNk~Le0000m0000m2nGNE09OL}hX4Qo32;bR za{vG#H~;`4H~~eLF<_B4AAbTaNkl0~sMspd-`?a074x zpA&!^=mhNszy!?(vH|8y>#HTDmrH1=kMF&MM|w?j$tAf<0pc++GB;8f*|$hh>P&EE zP=nTJZ+KJII5Q)b;5WXKSDXpdlY4=DA;Ku!Ae_WewllJE=+$*6<$v!D21enqcb5*m zl|xSsv&8T>b-400sTqc9|GRz@<1anZ4|oVm}5*Fbx@gVl-)Y+-IUMcGR5BjP|-)|q)Z_9<0<^ensvljMm79; zv3_50BpPcUc!58Xdw-mSx=_UeeAjt~i~|>nkK;8J9f3LAy{!--QTHKa z1SHo84Z9L`p&2@219kxqrt43Lgw%!JTFSMN96cg6AcyTm-G3mjCID2&M>2ttZ$PdRTIcIyCpRJ%>Ze# zN!fqjzJ2@NmSGUsFC2`Gy#iw^^vb!WbrXU$arSc??E?>nVKB{1d4HAOWrvPzsL_VN zI$C>m7{sgq(~Bi={vK)Y{RMp8Z@>^7CgFS+X_3#cORCnB{P8fwgT*A{JqZr1$vGIp zoB*7cpbLf-7{Y=nSgg|{FE6Um_pnVwSq&@PgCWcb5Qh+LwBFVtugxsej3FEh5VKD3 z7BCV3IcFpQa?VHqex-o_Rn>WB)82$LEjkLr5weZi<6-M!3kDDUSO1HnOO>!>YNTL!HK-V=mV!APZq#e zkypsyaaw&DOEzR4a`ue8tBAQ;gYXa0FPtn(h*HEA^2W@KynlxU?VbP6;}E{6pmm;o^H>PP#1%XDY|7B)LiV!J)xj@MG8_Dw13?+){}_AWrag8UPHzhY5S%B>P__)j`$d%=VqjTtI3*%ECO;&i*picnV`S@xuS;o{RGKd}lWGd~t zQaD2;i&mh=2QcO&Xk}x}mhGBIhNm1#GhaDw7<_d&DSuz~wlDzn41u$Po1m44mYej` z9~gQBkRhu;^~yFvY$Jo{n*~~X>#-s*v5_jFVGzAOK#DNE=mz_P1bawXr6X80Jo;JD zg+&@ioOh9bE6jhvVf$}Li z&5hVr+^^wWF%q;a4~q0Bz}Q_`T}@X}3Ja7+v6gURE)(2~x)Zcl?CyGB2RB}qR2RVN z=&L1$C94}{Gz~(Pj@2Y9Fj}k_B`(*Y(Pe createState() => _CategoryScreenState(); +} + +class _CategoryScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: Padding( + padding: const EdgeInsets.only(left: 20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'Tell me\nwhat you wanna hear', + style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold), + ), + const Padding( + padding: EdgeInsets.only(top: 5, bottom: 35), + child: Text( + 'So I can show you what you want to hear.', + style: TextStyle(fontSize: 13, color: AppColor.grayColor), + ), + ), + Padding( + padding: const EdgeInsets.only(right: 20), + child: Align( + alignment: Alignment.center, + child: Wrap( + alignment: WrapAlignment.center, + spacing: 19, + runSpacing: 13, + children: [ + CategoryCard( + color: AppColor.primaryColor, + labelColor: Colors.white, + audioLabel: + soundCategoryToLabel(SoundCategory.BABY_CRYING), + imgUrl: + soundCategoryIconLight(SoundCategory.BABY_CRYING), + width: 120, + onTap: () {}, + isSelected: false), + CategoryCard( + audioLabel: 'Crack Sound', + width: 130, + imgUrl: + soundCategoryIconDark(SoundCategory.CRACK_SOUND), + onTap: () {}, + isSelected: false), + CategoryCard( + audioLabel: + soundCategoryToLabel(SoundCategory.FIRE_ALARM), + imgUrl: + soundCategoryIconDark(SoundCategory.FIRE_ALARM), + width: 110, + onTap: () {}, + isSelected: false), + CategoryCard( + audioLabel: + soundCategoryToLabel(SoundCategory.GUN_SHOT), + imgUrl: soundCategoryIconDark(SoundCategory.GUN_SHOT), + onTap: () {}, + width: 95, + isSelected: false), + CategoryCard( + audioLabel: + soundCategoryToLabel(SoundCategory.CAR_HORN), + imgUrl: soundCategoryIconDark(SoundCategory.CAR_HORN), + width: 100, + onTap: () {}, + isSelected: false), + CategoryCard( + audioLabel: soundCategoryToLabel(SoundCategory.NAME), + imgUrl: soundCategoryIconDark(SoundCategory.NAME), + onTap: () {}, + isSelected: false), + CategoryCard( + audioLabel: soundCategoryToLabel(SoundCategory.MAMA), + imgUrl: soundCategoryIconDark(SoundCategory.MAMA), + onTap: () {}, + isSelected: false), + CategoryCard( + audioLabel: soundCategoryToLabel(SoundCategory.PAPA), + imgUrl: soundCategoryIconDark(SoundCategory.PAPA), + onTap: () {}, + isSelected: false), + ], + ), + ), + ) + ], + ), + ), + ), + bottomNavigationBar: Container( + width: double.infinity, + height: 55, + margin: const EdgeInsets.fromLTRB(20, 0, 20, 20), + decoration: BoxDecoration( + color: AppColor.primaryColor, + borderRadius: const BorderRadius.all(Radius.circular(15)), + boxShadow: [ + BoxShadow( + color: Colors.grey.shade100, blurRadius: 2, spreadRadius: 1) + ]), + child: const Center( + child: Text( + 'Done', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + textAlign: TextAlign.center, + ), + ), + ), + ); + } +} diff --git a/lib/src/screens/home/home_screen.dart b/lib/src/screens/home/home_screen.dart index 9881306..af3b7c9 100644 --- a/lib/src/screens/home/home_screen.dart +++ b/lib/src/screens/home/home_screen.dart @@ -1,22 +1,14 @@ -import 'dart:async'; -import 'dart:typed_data'; - import 'package:flutter/material.dart'; -import 'package:flutter/scheduler.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:permission_handler/permission_handler.dart'; import 'package:see_our_sounds/src/core/app_constants.dart'; -import 'package:see_our_sounds/src/core/utils/audio_util.dart'; import 'package:see_our_sounds/src/models/audio_tagging_model.dart'; import 'package:see_our_sounds/src/providers/audio_tagging_api_provider.dart'; import 'package:see_our_sounds/src/providers/audio_tagging_db_provider.dart'; import 'package:see_our_sounds/src/providers/decibel_provider.dart'; import 'package:see_our_sounds/src/providers/stt_provider.dart'; -import 'package:see_our_sounds/src/screens/history_screen.dart'; import 'package:see_our_sounds/src/screens/home/decibel_history_chart.dart'; import 'package:see_our_sounds/src/screens/home/widgets/toggle_button.dart'; -import 'package:see_our_sounds/src/services/audio_tagging_service.dart'; -import 'package:sound_stream/sound_stream.dart'; + import 'package:syncfusion_flutter_gauges/gauges.dart'; final isRecordingProvider = StateProvider((ref) => false); @@ -31,7 +23,6 @@ class HomseScreen extends ConsumerStatefulWidget { class _HomseScreenState extends ConsumerState { @override Widget build(BuildContext context) { - List audioChunks = []; bool isRecording = ref.watch(isRecordingProvider); final stt = ref.watch(sttProvider); final audioTaggingApi = @@ -92,26 +83,8 @@ class _HomseScreenState extends ConsumerState { return const SizedBox.shrink(); }, ), - Spacer(), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const Text( - 'Recent History', - style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500), - textAlign: TextAlign.start, - ), - TextButton( - onPressed: () {}, - child: const Text( - 'See All', - style: TextStyle( - color: AppColor.primaryColor, - fontSize: 15, - fontWeight: FontWeight.w400), - )) - ], - ), + const Spacer(), + historyTitle(), Container( width: double.infinity, height: 80, @@ -119,12 +92,12 @@ class _HomseScreenState extends ConsumerState { padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15), decoration: BoxDecoration( color: Colors.white, - borderRadius: const BorderRadius.all(Radius.circular(20)), + borderRadius: const BorderRadius.all(Radius.circular(15)), boxShadow: [ BoxShadow( color: Colors.grey.shade100, blurRadius: 2, - spreadRadius: 5) + spreadRadius: 1) ]), child: history.isEmpty ? Row( @@ -176,7 +149,7 @@ class _HomseScreenState extends ConsumerState { decibelGauge(0), ], )), - Spacer(), + const Spacer(), bottomNavigationBar(isRecording) ], ), @@ -184,18 +157,40 @@ class _HomseScreenState extends ConsumerState { )); } + Row historyTitle() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + 'Recent History', + style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500), + textAlign: TextAlign.start, + ), + TextButton( + onPressed: () {}, + child: const Text( + 'See All', + style: TextStyle( + color: AppColor.primaryColor, + fontSize: 15, + fontWeight: FontWeight.w400), + )) + ], + ); + } + Widget bottomNavigationBar(bool isRecording) { return Container( width: double.infinity, - height: 65, + height: 60, margin: const EdgeInsets.only(bottom: 20), padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 5), decoration: BoxDecoration( color: Colors.white, - borderRadius: const BorderRadius.all(Radius.circular(20)), + borderRadius: const BorderRadius.all(Radius.circular(15)), boxShadow: [ BoxShadow( - color: Colors.grey.shade100, blurRadius: 2, spreadRadius: 5) + color: Colors.grey.shade100, blurRadius: 2, spreadRadius: 1) ]), child: Row( children: [ diff --git a/lib/src/screens/onboarding_screen.dart b/lib/src/screens/onboarding_screen.dart new file mode 100644 index 0000000..ab37838 --- /dev/null +++ b/lib/src/screens/onboarding_screen.dart @@ -0,0 +1,82 @@ +import 'package:flutter/material.dart'; +import 'package:see_our_sounds/src/core/app_constants.dart'; + +class OnboardingScreen extends StatefulWidget { + const OnboardingScreen({Key? key}) : super(key: key); + + @override + State createState() => _OnboardingScreenState(); +} + +class _OnboardingScreenState extends State { + TextEditingController textEditingController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: Padding( + padding: const EdgeInsets.only(left: 20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + "Hi, I'm a HearSitter,\n" + "your deaf assistant.", + style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold)), + Container( + padding: const EdgeInsets.only(top: 5, bottom: 35), + margin: const EdgeInsets.only(right: 40), + child: const Text( + "To help you better, I would like to get to know your name.", + style: TextStyle(fontSize: 13, color: AppColor.grayColor)), + ), + const Text("What's your name?", + style: TextStyle(fontSize: 25, fontWeight: FontWeight.w500)), + const SizedBox( + height: 10, + ), + TextField( + style: const TextStyle( + fontSize: 20, + decoration: TextDecoration.none, + decorationThickness: 0), + cursorColor: Colors.black, + controller: textEditingController, + keyboardType: TextInputType.text, + decoration: const InputDecoration.collapsed( + hintText: 'Your name', + hintStyle: TextStyle(color: AppColor.grayColor, fontSize: 20), + border: InputBorder.none, + ), + ) + ], + ), + ), + ), + bottomNavigationBar: Container( + width: double.infinity, + height: 55, + margin: const EdgeInsets.fromLTRB(20, 0, 20, 20), + decoration: BoxDecoration( + color: AppColor.primaryColor, + borderRadius: const BorderRadius.all(Radius.circular(15)), + boxShadow: [ + BoxShadow( + color: Colors.grey.shade100, blurRadius: 2, spreadRadius: 1) + ]), + child: const Center( + child: Text( + 'Next', + style: TextStyle( + color: Colors.white, + fontSize: 16, + ), + textAlign: TextAlign.center, + ), + ), + ), + ); + } +} diff --git a/lib/src/screens/setting/audio_setting_screen.dart b/lib/src/screens/setting/audio_setting_screen.dart deleted file mode 100644 index eead01b..0000000 --- a/lib/src/screens/setting/audio_setting_screen.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:flutter/material.dart'; - -class AudioSettingScreen extends StatefulWidget { - const AudioSettingScreen({Key? key}) : super(key: key); - - @override - State createState() => _AudioSettingScreenState(); -} - -class _AudioSettingScreenState extends State { - @override - Widget build(BuildContext context) { - var size = MediaQuery.of(context).size; - return Scaffold( - body: SafeArea( - child: Column( - children: [ - - ], - ), - ), - ); - } -} diff --git a/lib/src/screens/setting/setting_gridview_card.dart b/lib/src/screens/setting/setting_gridview_card.dart deleted file mode 100644 index 5c00d2d..0000000 --- a/lib/src/screens/setting/setting_gridview_card.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; - -class SettingGridViewCard extends StatelessWidget { - final String? imgUrl; - final String? audioLabel; - final VoidCallback? onTap; - final bool? isSelected; - - const SettingGridViewCard( - {Key? key, - required this.audioLabel, - required this.imgUrl, - required this.onTap, - required this.isSelected}) - : super(key: key); - - @override - Widget build(BuildContext context) { - return InkWell( - onTap: onTap, - child: Card( - child: Center( - child: Container( - - ), - ), - ), - ); - } -}