From c04e64b6136a2687ef61ab1f6ac2e73391c36c7f Mon Sep 17 00:00:00 2001 From: Mohammad Salameh Date: Wed, 1 May 2024 10:33:24 +0300 Subject: [PATCH 1/6] Initilized the Blinds View and its animations --- assets/images/Down.png | Bin 0 -> 29916 bytes assets/images/HorizintalBlade.png | Bin 0 -> 409 bytes assets/images/Pause.png | Bin 0 -> 24479 bytes assets/images/Up.png | Bin 0 -> 30081 bytes assets/images/Window.png | Bin 0 -> 3246 bytes lib/features/devices/bloc/devices_cubit.dart | 45 ++++++ lib/features/devices/bloc/devices_state.dart | 5 + .../view/widgets/curtains/blind_view.dart | 29 ++++ .../view/widgets/curtains/blinds_blades.dart | 144 ++++++++++++++++++ .../view/widgets/curtains/blinds_bottons.dart | 83 ++++++++++ .../view/widgets/curtains/curtain_list.dart | 11 +- .../view/widgets/curtains/curtain_view.dart | 42 +---- lib/generated/assets.dart | 26 ++-- lib/utils/resource_manager/constants.dart | 4 +- 14 files changed, 333 insertions(+), 56 deletions(-) create mode 100644 assets/images/Down.png create mode 100644 assets/images/HorizintalBlade.png create mode 100644 assets/images/Pause.png create mode 100644 assets/images/Up.png create mode 100644 assets/images/Window.png create mode 100644 lib/features/devices/view/widgets/curtains/blind_view.dart create mode 100644 lib/features/devices/view/widgets/curtains/blinds_blades.dart create mode 100644 lib/features/devices/view/widgets/curtains/blinds_bottons.dart diff --git a/assets/images/Down.png b/assets/images/Down.png new file mode 100644 index 0000000000000000000000000000000000000000..efd64608d9c2516e6ce7ddd6b88d6b6d34380260 GIT binary patch literal 29916 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

Nua11BX= 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 literal 0 HcmV?d00001 diff --git a/assets/images/HorizintalBlade.png b/assets/images/HorizintalBlade.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e939b81f5945560245f55d4f59bd167a6ed6e5 GIT binary patch literal 409 zcmV;K0cQS*P)?}LZs#rwvi|h2(p8;lGC%P{;y$n>7RCH z!N`-MC{D(hQ~#Jg4<~E&Kgm0AOi# zU5o9kuD1LeKGrcw64`FI0su=}tya?a{n4$1r*|g}9{}({4>q>Ly1Mmz^3g%F?ZwhK zPBfVW0G1ZVvCe!BRaK=~mfh#@34-9zw(T4|k4GZ_u(WZUr0Y5f!|>fMzg*jOjiMLb z6aer+XFeK0dby=*7e2=zAb0@ywb^VmeBQL4zw^oS{1%2$y4&pp0DNhhMuwr+`OmA- z;g6m5+=gKg0Ps!6JI0u7KKW<>*$2N>0Qe7gz3uu1s$ySOemorS00000NkvXXu0mjf D5J$0Z literal 0 HcmV?d00001 diff --git a/assets/images/Pause.png b/assets/images/Pause.png new file mode 100644 index 0000000000000000000000000000000000000000..b5659fcbd728302a5474cd51995dc08334dfed99 GIT binary patch literal 24479 zcmV*yKs~>SP)PyA07*naRCr$Py$P5lM|CcEBJyrky{cQiXjf}jx1_eDMiN5oh9`lIvCY_c!x({W zyuLSM&%9;q@nDY`V;S=h_A~Y~&(Aw!ykUbEYy<+dfCNH9NFWJWqSb13ch#+1cgrP~ z(TT{DH*Qqs&AhdBOX~c-?y9;sm&k}e{`k*{6DJs)JW6XoYs~ttIaeE%QX92qvr4JD*1842nv4Pd3ji1g0KAU|&`N8N03aA+k=DA$m>z1) z1^}w76z_AchMe=B5Vd}-CI(>`4o^Mx)ELh%E%3<`OhunOyc*D22LLeB@Ao&dji~4FGHgKsA-pwe)(9Kb2Bg#|Uco&=%mJ7-JHE z3C2Kj&STCIxO@lz2<#5$><|EalQI4j0BZxVd4OPn^SHBV(fiL)_Mj2nwF8Fp%k())bL*l=pbcyb7#(d zOpoJFDTN_$0#Z(D;HpwAKj54a4DZa}Weu<2c>{0H;bR&y`YMqLeycO1YCUhK!8zqM@}$ zKnIN3YQvw5A+DDmT3ZsObBih&zo&Ekp9b+-<2~?Z2w0RM_^;0xTL5538#VScW9)Gj z1dnpX59>f5YbrH21n6wrwhhn2j`D&#UQobJnRHVahTF8(r%5T1kSV*rEo5iL827>H{;ij&3{P{U053uof!Xf_^bGfV0(vTA64cuaRKyrVInrf}9Rq-G zaLyk9fUg0-)1338U_stXM}-#z$X^h^)>_y5{r)z_*y+f~N~uewl>4QWXQNJ5N^Md~ zZAj%s-7>MQ8k7q7yDuqHCIw~e%HpF;iby#kRJX$v0o#2No}*+!WhF*OmY(OFA7+d_ z83e(@TI&aEwc0mpwc4SL8#i`d2y*3l4Q!MUVHlnY0B0vja)A)y#X^Y7wbr|pQmN6$ zk(o2RxS+-l5qK`J@!T;MO*?=OIQl!)(1plnwULx@@9i_SD_LB2XKGyXq#X|RIkNbW z0W1Qr!<+|S<(%Elx&8(K9F$VFckbNTd%n{5^AgzTy@;Y{mz46tBuOrpQeG#7xKJsz z0|Ct#dNAx^J$WN7OaMZFASjV>^MIW(y4NXup!fh?@;x7Kg3|N-=Se%FjL9SC9IZ8a zUIvV_MFwz41AHS0YF`Q%{|bUU2!f}#Y}vB#eDkb4uYj$!MkDYvA;fuM7{5qL`7$BI z9soE605$>`560L*l43c`Wk8t2*wft0I0L6ReBkpON1qRJ=Wq0x573js89NA!-B%0P z?EvuT%*@PFn>KAifFs*K=Z`6?^~8K%WawTmK2vLXi4gINl~MBl+e4{^@#VvIe|Y&M_Rv}x1) zbKTH1DRr(=dQ0lrDD@*_)0esACSkW!L$8q0eQjM-7PrIY z$(cN3)O@C8F9?D~0C)-jzREfOq}KXNtyb&c)~#FHE9|$&?ega&u+axS91d~z?}8+e z*9akBEu}!;^EP7W%3xg~@X9oCS<6-~XL_Sa&ns{Z=IZav7Y}BF2oIdaL?Ay70QYgu zKUJ^SzoL{n_*^tHpL4)&x7%AAjmCL#9Dj>a>h)2STn+#`wbq+0`HmY>Wxy(%i!Smr z(|y;w0;iQiWgU-=fKA?>J^;+4KRgJ6yE*6oQmfS--nMPqk>^sJ%6hj;8O{p7$63E9 ziq4GVcyAoXuNFeQL~FfADcHgotNF}Vb>?pxU}s=4M!P8Ga9gWWu_E_t7S<#E*jA0Z-=OjsTAPmDdCP{K7POf15#>mPa_d^rN zNs^QqcRsN5CPv(sSkh6Zm@;2cWfW*^n%SIWJi5U42>@fX+=-!rkq@WuG1v;dC+Hsh zL=XgD-??)q%9FA|Z#7U*59z(yC|U@*97IE-E+rTTU$1+w&3jH2@=OeVc`nItJ= zyFA7(8}8lCRo1bJB$WG3lR6s)cCX|pdjD(!%0?g3fz$O*G0yG}82>w64?YiZ{N#zq z-X|omQF;g=_9uyWqY&y9TC20redn_={#^#lGC5IZ9Oi*$HGy3QO5fe*cht24wlD9T zx<*kx$ACS=Io!@z?O!=p5AWKw>zT55S!{(5_uJX#&A-M zl^&ZqrUotxGO7Z6zY&Y{IyFq*_hk~Ms8RFE=YAFh!Njmun)xhy&uO0Tp6k{xNtX0k z7%lh|1Gqm3*vEn(xTD|ie{;{CJ>hx+xae6Y46t#srQeS)2*bfE;y8Yj)@m>391X;= zvb!^A_+71rVb#UQv<+TG8WaJ)O!nlJvaEcrahTf)yqlKY&o4uj^C#4aV4&x~us8o# zfZ!imt>DpZ+qQL%H@Hs-U@t7_Q#c>)jpOk3LL@gOi99a|_~yJuU26PHUZFCn;fg#a zWsP0N=&RAFekUm!5sIWp**j1f%g!SySLk)JH|heg$F; zp;x91*hN~K0MApOzScU_8lGZI-^*C=H$eb*?b@~LAY%-dx2^ke+<>jM=3y9~H5f!M zk}`Qql8CEutzi%ZCeR-%&IdLD+6C51f$i3Kl}7d(y6QF4wrtUT2~c!D$LE~;h_dpT zRmCNp!|%vrqlsO*M$g8`z@q^AAprjIT8;e^PSNk)y&GpU*Y!9qz{Yihi;IhUlu|G0 z^@iVHs|DY}IY%RrAy6l2RktDiMy^tGRWx+jef*9!NzxR3S5@n}BT60sedDg`eX|iE z{iUoU`6C;3a4AF1=Znul8zF$2Y4&Tgq zZ65$&@KWwUI-4rq1#@0y=M9}@K%MlxFN3CKY+738j|^4y{WOf6ch5)dh~<}P^o zqLI=caa;i9+eXG_!g=|p0pOlmt@bBD5PW8>nS0HFjhY(eN0KD3i{tovF-i}Em`JNm zV(h9q)Nh;B1a@8nPXnq+#%dL*upDEzO8GLIWy)S%1Z@AAqk6Ne{Ly=>wMO6e-9Zri zA?N(FYw7D=Q()s1dAHj=KS`3CqA2=4%&;_KYL&Y4@@EdKf;#WK^^hV}z(ZQrFOP2k zPr_E2-Yx6IWwK`45UOc`t(3?@Av99AQn&=|F3$P?z@KNGbrvpaSoLGgfQ^3YD2mSQ z_xrCBLcCQ zGi}&zo>zoM-#iVkb;j7{YmFZOPUNspKb!C6LmM`1_|jTT!LJ#xhr{97aU9<;7z}O( zfGg7!2uteP&+9R{l17sO2nhU_=T#_Uu`;ku^L-hx(T?yN+yy(8zwACmWh!IjvW_ze z*m&=}3|M2Gsvt+?P(H4d`WFEB<5sJMQ}C-giL)la#<0^QQ7?|;@JFRo zFT!MxRKc#UG%xQYc%-4*WuTxWTWJ{xv0?m4A1Z_2a4tyb_et?8wsVbA9JtAKrtMrb zf?-*yyqOM8vrpwQy_91!e_3@Db$p+3{f@EZ@AQs^9VE5>>3MmbxPYu80QRWX;_ndL zyh=0ZckSAR>DN}}SXE%7ue#G2Toy%xo0BAYJ?9()n#@@2 zHkbozPUi2KNn3w~Tl$ z<`TqzBWAZvSSCrTbo{(~akUT5*!p6V9Ql``pY&hG_)->=nbpIEKg$yEb3 zrs!Q%_!Wh_t_rYm;qAgg@9N>O_tQei zmj*$wgN(L32B`{cbM2J<)(0Vhi-M5|AjCT8wQyN_TtDMbY4dK-eV2B?rBcKlaV9ZY z-g#v#yR;lO{Q?1n*gHv*tn6b9n`V!t&&tY&#N&gKngs9R#A9bIm3Pk~V2|Ec4l$26 z8j`hI?XS)_{M;b+teA_%A()u~!4w)PVlT zL16ZQUDg0Tuy6um(oqJSGCiJ`USW(FoPOnYT9PI%le;97r+cd~wttR0%J??QQrR(X z3z!kZAq}ndf>P>E&f$Yv>)X#c=bUBd4qP#?2ZO;`gF*Q1VHmyx0B~jzHyttzGD*Kt zgRcj$^H>}KO+IFKn5VK+!;{7?(utGOYT$j{9Sib+leZYT$PmoC9w)f){E?Srv{cU3 z-Ux8_zEy$kGj<-Z-I2$Yb_8tqSxamzCkMGLuX>U({m+cS@0@-1+4n7X51kbO8}od$ z+wB(%p?(&VtK-aK(Tmf|FJZirO^C`0NEPJ|;RIINk-%kW1k-2+G=J}*GN!FMOqShe z8W2}~rh6XM57t8*#}Gx4=>*uRvD2a(I&W0V*w)D!<(IX}yA_?2vHLhk@;TI-SmC!(sAv0QDVO>(ldwo}wGLj6JD>$_hB?T6bt9FuNMs zmTjpyXGd?m> zl~P(M`JfQ$k6NwzpPqTwN0yu4KdCiM`|4YVRT=RytGWWo+!WPmxWsnyQr@n$ytQ7hfA*}i&cgiNm5-@`jZu5OUhk5AzyE_tlDxTAYn+Ri&eLC2 zWJ1{!XjzIPop1+rHg9AA103nTd&76i?lI*9z}^^Zv00s(J`annbn+R4@~nO zW1UEkvc=*(>^!yA{g}2`i1^RYw|(xp=c1px@-a2A7Z(?|hhg|?rPR+TrLF|vvqgrR z>&wpT?dG!*2Y*#yyZ6WE*6a1m>p>MfgNO68iZc;Z?=+qE;ONbYACU5T0-4NEIc zMu+M6&SGDe*{2zui`pLVSL5~ZY_HCyI=B&(5bN`3ai3oooZBRLhYk*(Y9 z_GNJ#|CE&S4V?2`I8wR#i(Z00E9&Lh=M#W!j2kz}dd}|{-s?6LG4)7;kG6DnD|oE| z<<>(*jIYUQZr!*9G?HxS8Bqq*2ykL<0x@FK>}D&7lg z^#Ox^WOw?w(P$W^CLOu-eEZ7O@kSFYPJ}WD~UYg3y-q*D;^3%O#AWdV~Z99yDr%2b5QHcPj`gi@< zdEj)@OXPvOOztUR@snMf)~S&t9K!{Y;j>$^eBs&9=MM-W{`vg#&##mhurjbQ$xXZ6 z-WNsj+l5qbdbS6hX0%vA*dkS?U9dZz1gETb`@PbhpEi8z_om9gArx8KmmYpc%4blO z0f`yl)WG~C1e<5#kfhAEb7;VG%|QXTKN(&x%=h*>Y@i_BqRs*vzcVE_=c3aXI|P-6 z16MZe6u-lJ;XTP0fp=h<8Gz&S%x%)2cs`cLUYGW^3H!Q_I-BiG?tR?4#kN9Vqt^s~ zV!aY^P@R$nM*|eyg?XcLQE;2vwuW5NRCaFrxFbvY`%_^Ue-uFc)`b^dh|}(+M`d6y zE-s!LMdGzl9Q_Oc>}QO%s9^NM?$bs?-FTpX-b~x1QjR)7eoO{lOOp*b6*6|~r5#Fv z=F$L}=^B7WV5e1LkYGW(gcS|AEYJ+F(*wa`w+=zzr)+8fIL^kJ0H|vjU`>=8$8$y2 zukaq`o_I(6nXxv489SQoEaSi~9&v0jZQ1jHZQe)gOqRIuCe+6Ms7qU=_-$C`#?89+ z*tQ`{Q$^$Rlu`*}{LU~8-(Rouf8DcZ&q5ipD*+qXdSPMV@MfX;cz(SEx~#n4-6}iKV`@x+@wGAj9j_}eisD6lVKSCZLP-tTNSNc3E0Ti z!(n`5ERuiE050d8n?&qI#$BHGp$Kec@9#3UZwTRc2yD{JR3`UXlRJ_FY>lr(>l5+w z1T@FUNe4J7@U0|45F(q_9fqd2vG-*rorZfjIzD4!D{=5Sh+nha5lcHtDnl&8T7_iK z)7dD1!e~rpxLSP71|V`MPP^>Z70E{gHZeEJKl;wvGD{(3SUr7hH*7bTY@F)J!$=Bh z97RIhJva;pA7G4qqRc~53T#ZFu&^+=JdFD23Bgq{hOO~|Cgz~Rn#AR^wCy~ku}QaM z1^eEQybe_m^F}g)jbAuRe|m5U-tzkc~OXg4LGooQo|9Mf{aDiFtz86ydINY+eOjDo#m z==w5X6S&b|jg?H{rlaUQ+jQ0Chg%f{Y`g&iJ4lCn3BYkH6`K=7LjX**K&P_9c8Fvo zH_(8~daLt$2DB7#sr)eSo*I|L>d5cD`_3ATBZgJjxzk}@a%)%y%4KyQ*rUI#8*yX^ zlUva;{rGi$UE<#eYLX@6M*1kdgbR48k35gbIQ~aFDHDh@Y^5uZ$d*EPB%z&@F^U0|aWNr8<9BSR*oWG?}LngOPaX<^-e2H2S8NPPdP>muNm z>*{gF4mi5EBm}$(TH6Rf^oA%F15Vxq3>yxux)yMivJ*-a<1s;CkA`+3CDdvSNF?$V z0UNz7DR9V_oqAo2k6N`%hcb&EIL2;-CSGEu*?=hSqxf;W9@gukp_WOPpk`+00E?Z7 z2%0GfF*$&l6*i-cp`z6Aw5)C1gh)EZU@itW)iX`vAZsJQ5wJ)yxR{t$A-RhkjMv5s zt||hy`*|MGd1Q!r(jF8_d{8FIpI?0O#m92*TLeqo#jDflT-Wape;ycn2>@(bZD3D& zQF<9lpHQn=8RAQjyfT&aHRo#u^;*ra5JS1aEWo5jmOw|EOt%`x;T{3Xkozp4jq!+v zt<}cJ+EOM4*d|5>)w{r9Hb|MoJrse!RJiC z=o%;k#+rF9g1_DjAgI}W(T%i4*~UDA0rl35_1~tTuv*xdZB|<& zIFUUSx*HKV8l=Jwg2OX94v8^?%za0*i)fVML<~;41k8F{gtSI#quGL3VzgZX&3a%u zi~jV`dBV zLkaa(1G;^bG&nlp&S}=tw39WdquYQyeJgFBJskF7+qPK%6@y4Zb1kNSG`wLvH|Ww# z{mWATJC8iD!=oe_3#y*NZjrbs6e7>kY9*UBV12+Dn`pU?F;AIfO8dq0!s` zGaF~1KLo(h7UiECpD^dkZKB=Y{nA2MS zWgHFPd&wo2e9ga4F0ebD&IM5vy)BO8w=iBiV_LS((@jOd#sawCkpV)Lg}}DIkIz)l z_hl8A=cyTWP!2NIP;b@&f&`?o%{CZNf9&J;!4pq*AQlaftOlCLS%8vB8ek@7>JSZM zsB;CUZmYvNXKjWXUvn|c)B(6k0L0L0m<6cU;jt$|_{iVh27{;u z0$NaOY=kJ)vR2oRPp;H-0%vdA057`oBDna{Q=riRh@%*0S{O(YLmWl6;}%MhGx&66%g^;QP#00Z3_ zKqwYLqgZ8IV3+{>k3YB@<`&TXw-qGRjdZXXg1Fo5XIZFRvdPA&l9_2=>J+tO9`+bx_YViX->cW_e{tS<=V6+(>{!Csylu|&`1E!vaAARe!ux%p(TY-*yz*8V`3a~Qa zt|$qt1Te#U&@gJ@(gF3IpdGe?kMV$To{rhv0f6&!-8uiUACW=c-;0Y zZg+M#iHCp3Isc9G&O2{Rjw}K8;^N{Z-EQ}%Ij?=U)_PY}wypwtf5@W0U0sd$A%oHS zl+y`|siw+{s?lF?jMH}*$b++*2_#y9NQAAA_OV z4gzLCp+?5ATH`4UC{Wh88}Z=KhX!%K> z*G#@P!@nuM+Im4oTRl|mJd?`l-va@LAP7K$&J^MhXOEAaR690btyP7$!S}8e4!XFWL;>^{P{#nFej?bmkPjAc1Zg z=_5@CQ4nZ%#&ZP*EPTC-#@#pO9tnucMA?bQF@Hv_Mpm-7w*mRD0Uq{NA zPLUQgHR2Ul>i#f{Z`E4-?WLDqI+qJf>$WD#q0k2F$xxgj{ zr^r3K`o;<5ubA0$ErA`NzE0hKs}1bW+_eawyL*1sfNi9bYOD&dU9h?JYepO?jq8sV z1*5@_ovIAjE=Ysa?r&C`={9Q}C|!Ef!`cm9*Pz{V-`D2jdv0B%ka zd8QkOQH3p+3v73IqG@xQWn4{Q=a#R4vETQBufjl`zJ#$?8`$XU7OG_!8-Y!Xjr?Dg zv9G##3w-A*w=QAq)dqGRxCz+UhR2Q_gI23$W^x;imI1oU)=Njrl+`)2e)@E&*d$`| z7#kWqScszN<3hy0?9M`F9RyRBEiNuz+3j|JJ_v%>2%$E+?waKQ+a10pT~FubNAHcN z@huxN{qM`lT_i<(V4DS6sT5gF#-0Rh9dHy#rBVce{avrx3JtLF<0M7a1K6&#Kwu+V z9T$qMsx1;DPeAW4$swj>FE;i8K!!rgxj_A_A5&CP9QjJ*`~HDl~b zjB%ON+wuVB%L;$UDgq?|+hyw!AgwoKxkuTxWxy7Ec8SJbDX_8bU5#DD*vkR7nQ=4` zhqy3cb)^WkflFBUJGL9i5Y*V#j#|2_n~Ns`Hh$(Bj~Jgli4b!b8x7Yl#&L4XaM=6k z{{8#S?qeBZ(9Jg(3|=p##1Pesg1{y+$uvs^a4i?u)RXg~_bM#VnTYvmfh~hs=nM3U zSShmFz^>VK*=qvqrinJRjJ=k?_9Y3)5&Vg)ZGynkd^4FgcIGR{fq)(kb8e3DSVW3G zuqS?3NRWro=#>vNAvL?G5SZoU-k2y8SS z%{l2qe5XZ5nx65+oN0!j2GoO z?91R+1Ta^I&~h)g66{8<)sHeDFKHalcyt-N$lX^(ip;3QxB+EAep5q3L@AIk*YxzDH1>%UbJ@`e8S>V@T#L=Jh=sq_M{&L{VWJ7a^X4^{JFnobyk2yMzB@-@c3PL7imC2^NiR?aY|?22>~sXlZh1U_J&qtv(#xRy50hh5?1K2YPqw(TOQ|iZ4W4rMplMMf& zMj(w%3#%!iJVyPw8%yQ2OSUd@3O_cj{Ghma)Yu4YDJ3R`|A&6R`zw3*?)@?XyWZ(^ zu0XaHLVOzlm@riz*ksTVqq;uHl`=K~+l>ntxenLXcm!OUwIo(#`HcM&Z?&-^&qZMS zqh%FFA!0&Lh+W)kLm(Cw7MJAP_Q6fSCa=hH7#o3|%2%zFx~~W)!)Yfwk*t<6aG&C;ujnfROHoA|a`^{)dOf5`nzA#E~W$wPK z_icmke3^CkVbFz?*4>AmQl_W#V^1qbTrUS~6JSYfiT3{Rh zcbfYo48zBylz%xK_HSkB!h-LObPhZ{n&_R z48WJ1^0=n!4Q=`a3`wyw zPS|Re%D6;tQ~^5HGr5N8Ct~Nwkt4t-%wU^Inv}otf}o0YITks)4&Mn=W=Ip>{7iq) z|9ht3*Vu44Jg3|3{+N{Vty=5TDEJ-oQjnE9Hk_0I+k`C_#ATay^ePfppZj_ERtwmE zo4M>klE;q~nHJcn@esf~u<_VG{eyd9_m-u=ZeUKbR9M-pOrwPFdBDbaY+Qp`7LQH9 ze&fqG!z{*Jb4(VRKv1(eQPu<4Bw_4Sx}E#LpGS`#&2p-^lWuOi5Mvib_vNv?3v3J` zON~dw-NJA%_(Y=NmvJf`JtDZi@jC!u8vz>`JC89(;efWGe8$cLw%hA{U}L@z)YtyR zjLWtqq>_C-t-dzT$enqtuCb3duo=!g?%M|6@v_aZA(bKoY_kmpVCuHDV{8H}c}Lty zy}7wLNF0B5p2MLG*hE0o$bPJdNpX>m7>u!gI2?Xj3i&RSB3JZ!yI*WdzK5c=8-h^ zdH_2E90fEvv(-3JgUN@+M*P$`E-f$4U7bj<4-s|;lky2g}1VICVZH5w5q|2#m3SVRU&&+d9knxCV znq4Wv7<*)XVc~aKyFK`>LBIQ}z*NTAG(|ZUC*m>o$Y@v|u&F|x?~JYNB1b5iQeQ7% zQ>+MAxPK1%?^m`;dWmi2?P!oDXRico(%8nhEa*uYcpZ&RQp5xH*B09C-(`#K!FP81 zi@yp?UqXyaz^335JBHZ&9vB`qZaj{PG7V#&1a=zTx5mb!A1ksJz$Pp%M~b*XPzK-y zVXH;JMkz9`vH3&og}D#1#diM9`dSRALfE%z!gwuvWj3XX+6$=GYF zvGanUaQ}|gWb8cYP}O)`DX?>-$O8-Q_HVOJr~kU{V)y@LjO}HN1wODzJNdw#)_A0$ z%kPmmK~vRr=T>0VYu4J`N7+`3!d6L&6osu~5ZPL~`!EO!_ds>SR#y|)e#9iTQB`-J z5A31|nj*$VU^|Sh7~@}FXt&?b78Vx1bvTUQBc-^EF;-`(>%`q_g*1>M?jma<{d|el zn==LL-eSXsnUXs${kkfst8|3CSdoEjz;E9A5cK6~l`=tLx?m0w)b&&F(>GrRyEXyT zagv0I(uD?V4eYY8)hhAUlNu-^zI1|y);VIr9GrPv=yWEwuiKV+*qQV_$=S@_V<2QA zzlb3stljRuEQ*G=2qCUuj5XI9*luC)_va(9am`~>BoJ^>x|kQkF4vN=j~B2pMIHjX zvpAZ0%tQEU0Nd%Dv5?~K-k|?(6Wtev@oywaf?G<@5U??v(0!;o zg#CB1cDuJfj)(6~lH>-)*rxRWw)>K3Ji1}41ajAf<5$XwE=69bz$X8-Z69v(_zk@U zy_4E5`bRVAH&9xVr>+3J)zVQ#K%764!v zbP-;P7~79SnIvU!;?Q_xI2TgNJLcMRw}?pm3p;d3&(`Y;*GidSZtUwd*u7^ckeeRv z=6zUgV9(6VWGRFly;R9XRMsFTfnA<3XC>|F8gFRC(Mp#2dAqYgX&AE?V&QkRBBsvT zJq0%Bd?=*&=g$1XyT9>`Z`^~q`rdDQvo^m-Oyh0vj_yAxqOR zMml>nq{vBNuPv}$8G^qfUJ%gjcE|1-R-h{p`#Buc3{ciu)ufF=~ zhY;Ac`T5?(Qbs>0rF@&xdZ#I@H+Nojf~Jf?{qIqVpt}!Q8-a`<#|lYT9p}1=O2In8 zU|CYWlTxHmDpYC9JP_h$ri+U`v;L6>qlGAW_bY45DvWLK%MK0(gFlc-^1=Q4_a8Ly zou40`E#=@wvm>uk=aLjLT04#PSW95za}d~gAai4nKMCw=Db7}EJg!t@yM`Y5u}#{A z{?PiD9bmij6m;FH0b9cZy>9otQp&%%^2#e046wW1?v5ymUJ}RRSEN$=%**mo+%-Nt z57{JG1Va~L381870YJ{vg@_EwncGV-AW&PDj#=Q|LpQ$g@LNQU2G zNGz`NsN3f=n+_P)X9J4>x5K;ovMun2S8RfrATg`9m5iW}J!Iul}U6Q>ifIY#XRCTquk=^lO=73H(vz1wg_nAc?z#W zfFd9h&}Km`?u~ADYG68mKsF4paRZgx?plP;-Q9zM-T{IK<~r;g$UlLq0mFOpArdfv z+JL2n2DD-Sz7~A@jhmnWi_lO3)UsUp3MA&~#+1;2QIwdtF0uPfDhq6h{;za()HD)u zbgo@(g|-p0HBQPPxan_d-y(AI7Z$jy&}sC>Ym02W)cJ5_&hPx4_1K5<3NgPvV|4HE6<9@Xohg06R}fppKyd z(gNG8Oy>eLPe3tbasoDoKsGI~8Nh9KcHlFg@7cufoOUO(BSnCTZ?H4)o&~ntY=GW` z1q1BYzit-l(196IgFtgrUWM`CEC!A2uV)RA86*&B1vP2+V8q1qD*-lbEsbqQz&1ck z39HDDoq0RFlng$wNrM+D1^^`(W1sAFI={Ss|Nc7|v%NHP>UBDuZE+l5FQvqk!k6Ld z#5}nAY*}VNmH`{5T;27RGz*EWZQOo2i>X(Qu@Ph}1|&tMHzSvVXe7{=8{wAse+7p6 z97s3tEM`It*Y&28N9h zyx56EkeK^u18i(?3v3(#uQmPw3RBs1Ixjm4lOYTb<~uqE{6Yzl0vu??`5T~%%sw%tbt0bxcqrC~-ZXu(tP<2RoJ zJ5NziSCIi8Lyc=L95JI=Cz-Z5vLyn0z-sX6JCDF;zpx0AL||KuZ7#+AYjhoO+6;K# zF2ps!R?t!l@GW~c!s~8oK?7oFDsH3*L;05h8{M{6iWp#n04}Y6+2%Q!7S5ydQA^{2 zqb|x2)Y-TP4SKm&3)pyn+M|YwI`XjSBVic+QMcRuuh(32%{P|-8@I($MJu_ z{nV9aTT9v4@pBgq`95P)XK{gzvV$gN@N?4I2Ec2qv2lM#lpSB%P0^rn#6TH=&m&;ZnETJ@dARb@S-9yYlp+$Esm4Z`qPYYa zghs1dVB-v33}`1Xg)Uqy!^(k;?SyQN3k%4TMcxwEE0Slgm1%6M@B(0K&M~`c_cyiH ze|^OjS7iCr#`@~Q!oqn%h&Kx%enKiZV>#Bc&!%O-rf5Q%ip7oP@xTe2^#Hb6H7^h} zvmiBqtOE=rz%3tm03y8`B0d8Oa9SF{HO_KIl5hn~CK<5b@wN+K$0^dVC&x{W(rdDg zZ-8Di9Yp~Lfx|cl1ME-V)rLDhKL@eeW)i1(R{!2H* zjW=xq+={hn0E@;J(l&Z!aDyiVc4G;!@q?A7VZgX+Y$p@R2VmG561)G20^ zkgVnm3&`>a>?j3x6Y4sG7952u_HKb2Z`_G{P>cavarAgB1vbNMP&fi;e20n^Sa2Hp ztI-RBzH4%wBB06rx5mIeBt-ld?RNXWUVH7ekGn-2do9%2ob#)cQokUiz5zEkU5=g| z1K$K-lLm7`9x-f{W+07+L}r~ZEBA8BRCo=yzz$T)4$A?+Km)w*1Ghm0mN{{i4b$j3 z8CkNVOw8s|GQlm3AYez~Z9j4Y?AV$>4f)ulU?4G_>SaTdmbDR8iq&wyFrDf%cOHVf zzHkT_`w9Ff!GE03v9xdAMxvsc_?K_dtODbS$UQ<(9FvarYtDquUbi zgo`2w*ejDESTY1Q?lprN8(Dhu=FKo14lP?t+F@n{xs0i47mEsB5n}ALCg^79q`x-| zhqn#}gO46Ka9}LY!x*qJAgb5vT^NSpkHm@mVWpG_h;oM!Dp+MU_kzVUZB4#yXR{px z^z?i*LXgFqjaue*r0-}p%314HiFTHN8{Ktj=m5mH=MDgG)?lG0;O_el!JYR$0@CPE z>q0YL5$za`2r$i|9@HQZ0?s;f3%vfOeXwI&0C9f^jd}o5Mb=QnU5`x5q)uidEz)Q> z#UPe7=qzgZ$X|aBx_u3aLa&H@cXuPJ4A>}*K*E*{05@E}5BBZd4h^0d>JQN9)DqCg zYyIsAY%6QHF_A|enX;Xav5pa>L^xE32ws$n$ByAFqcH!-;HUO6eK>8IJYq3A+zVUv zv#DkiXxhdR4O58&00X7;KOH;v%&$K2#1miop6~gdvAxNc3`Dr0X&lGj8YSZYR8n0` zU~^eG&%a%StfG-F>ln_9xzC~nz8hv+V@t)T9MhD+?U-&kvC(6lnEMC9ZvV$?41&fc z=t~B@5FoJLx>UEO69p(A(ig+x8!k@FTp(=S0uaX`B*PeRJtsFah1kM1OiX7y6}GwU z4bbfx#{wENn;}W+FpL0V3DDdCkl^ONX2q0zkN^N5K}keGR3Ax4GddND9R`VcV+%Wo z0+|eOY)R*TG}P)Gq{fX@5$HAJCbYAcWYl5_ChvSqz@k}2l8RVosHbtybgVZ@l!NCJ zu#G!0XBEsCS$f2|Buy~qrqeV6+sT#Ps1%=ZIF92#T3lTCz<~n?p7imz1b2rH9Rb}Q zBH@~CwOUt4iTW=}ikG1rG3`>oyk%5b71%DQT_A4UFk_gTqWvgF8((f(a4+$}BR~;v z8la{uBP);)D+YqifC>;8wlsC)Ld%l>8eMGa1%1^5piu*8)B%#XZ@?S`O~ag84z1ri zWoR%vARG((lM)f%3MQUqB7{~3N!HnssPa4gMng|hhNM{vbB zEuIMD`!$jxK%)-5y%;xw9BdI>lVIFycIX^Ur#EYLh~os51Zd6FAslv0S#e3083D|q zFRO9Q^Lb*X;&BcWdx}V`9yOEQiGpThgV`HV^8o6#1|*V*wza|v~EadCT+s8=K+!O5DvT5DX8FxImw;%F?_ zU#>29_78DiJbNC_-PP+xUm@rS-1yVga+S;DN*~~$5EQ`dq=vNYDU>!$t^*7!u)s#f zHk)#p$(eLU4HHU=FrEI_rkn}x*cAkzh3$}1_RRHMVN3`jTbLn&Sk#8Y*yqwPj{riW z3_+Q_a|%srLUb0I$*r0lxo`$h#EGeI>?jBZ(#2WbWB?!4R@rnqX>9azkU@yj08=ZN zg#5b(le& zZH9Cdq70;ovyh#e?bQIggA=a@0SioDRp3FIE zU`PL;&YH-&}WT|ZDq&g6*9C+-FG?=9>{pi12&Z#>mUgu+p&Zg z0O;E~o!+lEo57tJdtDjWcw)QVJ|~XF_eiCFN-1^rS^=Ak3)0K($Y4DJ*7(Agqs0iO zp_e&=;I&yLGk{vF2~xzs!pJZ-XANLAyUP{=+kj77VB5hQcm1-)BmNA~$O!=T3Fo2prWjx&2<&Qj^eftMQf?T$j;K}=vw0LuM&sa|Q>8!{MJVE=Iq7?X~;IeAh0(3*GZaj_8ezM(3KrF#JWW;X0*E z%cNzk?$xI=-QmgYoiyAKuzd}ULoThT@mbq2SIJ^g*XZ@jZvcw%7gFHTe5i4B>jjV~ z2?>wwzT{@c(M~^GBDB-c$m(PO8YY`*K`ez0EJD5A+6Xd^fU(rwr!8Y6AYEW5T0y;8 zhXnoihO#l1nnO$sm1$)AY@8@EzZqaF5IQpUSG~5ue4iwdHMW_CK^Q`--Wq}0j4&y% zQ=pg4JYu_0{bOA}{q)nOBaQ0bMuGa;IwPKRJMkrTPsHQ^+h8C)aSYh$t_4!cq*1Sb zzTNJ;FG+@<@O{^nfQ=_DE-qd)7=%BfwSKFVayPM^EA&l6nhAqcgL~ljC5S6M=sy0m zy9-8|yur_qwULP^cZFpQTd5>bsAIU5?GIJibIoQ)+IT0ju9`Nykr_rZSZ|31m1X-P zmK*!rcpzM_12HZQ{}y0l^TB~{DWqNac^|mLOOHlnN35NUQ^`1_RlT*TWMiNFFY>{!=trY?W3Je=e=$uU*6kI zq~3*vg;RtOFBd|g*1l3HRU^QdAu8>4%K=lPy%2v?n?mx%mFB zcdBSJBv)JeGGt6Lc;H_G{M5CHc|)|;e}DM!;rCpB{q+x&wO^@Ne&(6pt{@0+OcMF? zQc4pT4IRcv`2u;pp<#SS)jT!Vg6KG{@O(V4X?&u+sQtBWG z9_V(vzdaldKXUE0*N*Rsnp0V&z)oF%`!Q3L5b||etF3MUT#e`hd+a<4hVlzh;I^Ym zqAZ@ShQ?daY-FotU4Xi{e&{D?Jd{uI47=G4Gyv6|quauJro#V&S zMV7{>Jp{EmQmKN!j%o7r#=dm)=O{#b= zDaB7HCEh?<+Z5JWMU$tM^W?}_!3zA*x$Z&ljqn`wiXgBl)YT2ZsZ;?|Og61W$EZ@q zwLHf-0h}-ed=}1F()vZ3L?WkwAu~7YfK#|J@+tVdjBs)^wwXTfbUN?3=9+8nt6CS8 zfQ>hMR^RL#45EK0rTAZ!QkS7&X@9`cKdxPE&i~&J#o4hWm`;VSOK~7Y^LFyG* z(tha!^2$HyoxJY^XnAj^)A`+Iv-vms_U)_0)~54RtpEh_(W48O1BjnU67ii{>+M(w z9C8Xlo5RNDnt~qhm!(Rhp;v?={?JR}`nf4^huno_!*SKRm~>tl5Le?F)7-TJSq8!|d$rQ;VJUM}!c+ zb>)>;J~GXFR|a;<+B?E9d94t*;8$INu|ee488aLlu=}6;h4W`7rzyNWcifUk=BBB4 z%1z=9e?^^TwE($V_nE#P@~}Wqg`ZKH3j{U(Lrrb;cB-k1>I;F5N4f@o$-}Dx zo66_Ld#C9ehEWuKuDiJKzIwg>sr~!+Pu^G0E5TI2M%He(+m|MZ_;Dd5`n7jbkIWj> ziPj^g92@$*0?;H+UbB>S3Tv#|nKt)Xly93tUGrE9KO@OP&t45suEsr93)FNUGx3sY zY4m*HL0%;UGRlu`Z(u-8_2Q4L1Z2N#Wxy_~5Bi*DHPL;Gtc{=JXSG`Wv14<`{xA*) zAG+?k>kdv^CsP3%Z;pv|k|cRWlE|OK*+>ABJIfrVu&W5{qL*=51Q+|_bA4u_rDe0T zvrE3GviiVwnSI)dbkBDilgfI$0H0SDA_Dx0dKv*8Mu{N@syF=I&3fwtI|C*KX*m@@ z5;d<5^Xh>*9mRXMTCMhQIQ-Y{;=+44=l8j*&#Sh})WAkp-`w2X#agqQr4-*Mggj&H zVJWa_87Hx>pQ0)QXI`Aagvpg9LnAIsEm&TLQq%zJ4RB&aipIlH z42OC%>C*2TK+{2nVO|{(u>JDm;)}daUFPm{pMhn<&Xtx8Qv%GnBsY~2#J^=l{$#}^- zk2)2FyrM**_+~d)%CCd91m9ZTds1hj5e=mXYH0)NFf>74?rfr4FRtNN1=wQ*;}vGo zdsBzPvb9>R$Bxa-{eOdA^1+w9?#{)1%z8D zm$An{=mC3@CnWE?B4E?AX*k8kBf}EGT?VkS@0VNQ)X`UR{WRC6hM2hofs9OT0G-bG z+JzLOuu~t{n5dJEygG3i+XuF*)9E{3yOSI=iwTnCm{RH!3+=i0Zrr%>{-Q+$Ro;JD zjEy&b{Bhlyot?i*Yx&b!>(}6K=uw+EiZS68E zk!?$iM#?D8#QM7@Ffu-7KWH?CD}EXITJMWPWUtPnx&X<%VyupY@rt`r5@<_`+pFI;YY5y=9c;v{D3jpAIg%Cfal)4aCxo5yGDV?o=$-vI*9FH?$LLA>YaU98*Eoe@O08L~6} zq;uW8AM`GH9mOw0>FDAu{c?%HCAmDH**er(O8IycMSl~9;eWgO>Z>1JDX0zpR(cby zb!%>J?s6&RPf96qn~$CTP%~LK=NBPw1%}H6**#OO=(4WMa78m;BVgD~H(mYh1I1@y zx8wR9$Zyy(U=-C2eNHRR-QX^_9%?n4t`~ue|F9zdelz7yg)DwlqGFc^HQ*XzA+c6Ro@mFQ}>{3`}F-V9gTBuR1uW@*)0 zzgQ`?g(|{jr2Ixqmq>Zc=L6flc3Q@!^L_AJeQlREQAN8ebjUrJ$J##IO$*>j=jRRO zZYZt`R!mrf07iolgK}`E8B7j|whF{Jx zHgnfF78uX2ZIDMu8E`!#(S4UO8JUi(^d3s7MNIwM?RNgBQtIOe4jec(EqEuLziPln zZGG(6G1S=KC8d0`QYP*mFjc<&ew545 zy@z`aft)6JT*f4}cXg{j)EAZAFLNHiiB(M^A0Z4oo524hN!fXPl{nQi)gzYO?X*QQ zs!Hc_HFNeHuVLMH^?^9OWi@YzKyJ6&7bi*b z14=0b_?|SG#)QSXOB1e`26up+2aKwW?Y4Nd)=U%Pr23P-BZ+_#gS0cT@+3BOM>rQ)KI>+G=NNx^m?#8ndUBZ*!|>L$ z^AF=Vejp6PzfF?pkMj~rt_CJo71&rHOllbf!G5LGJEW8-O>oM+@HvqGZ?mt6^TZpD)EN%6;YK1mbItV&b%1ZMn6apA5$_ko7@!c=B7l8^yNKk@TC z#`Qa^`;5H0r0?AhH4U)cj^u;Rm123L0ZkCqY&b(Gg!p5g7b;>Hmb%VL*Qe&1G zSN_mn^mkD?^7Lz7IjUY?#LRi%#LsBQ0auf|9ly*S>63=*b|exoBN}6Ik|bY?qVN+! zBp<5R>yNCK2PAidDQo!UeveUrVHmzhO8KKwO57b`r_UU=vh5J%_x2)d+h^6Ho>>MM zdatU$^`Gm?nU#QhOouv^UG#Zb2QGVWUouRdn#s=%Qq=MC&r!rg|-YqS*u z+i^4Iv7PS+ciGG@cV79*fL7Eg$~0@)$dK3Za+xh>&8o}ZMY!|HDAmuItaNOSP$~8G zB#v)OlITOnjvf2@D_{9an_GDek2M80mix$&BbXWuecV4HrMwmZvZOoqy+-c7G2<S*rFiBwJM`Tj`YxAi2$xe6`_aCzrq*@`BxiaM76dEUt4bc}&k z`r$B+ZX5Qa|G8z$%-7eNsp&n}9N74vqeqXPE~R{_QtB;I%4@XNrxM!{V=rM#uO(c7 zk6Gvity=|9c$MX^Ab@DQ1A0rEY60Bq!4bsSY zBPx{jppWln*`F;lp=ZWSq0d1T@`@)=Tz0wF0=av+mcaiLW336<#LTj0yeRKntZ1n zC&_&xjz2y>=>63V2M+w(T6sT;UUgj-0JxDRf(+gqPaE_j(z>ie|T=;uBMcbOg^4sA3T88>DNjr4Gb zZ`zikr~=#x1h)~hX=V%rD(K!-SfBEOPilZ^SsL$Erk#uA&yof%Sb9fgD)Upj!B@G4 ztTNk)pz97pPwyTK27eOA@fWKkj$AHit6aD4j7^2YU4WHRmntRRsI|UPDYys#HjNrJ zO>j=(j%u`g$=)Lkd8aKX3f{I1oM=3*HL#07h(MV}!&hn0s^_@uJn0(OIK=bZ&;h(h zy~Y=%l#j%5{F&i!_^17T|KS^MxS?CM9BXynaRWBK&?ApL(%i6N!+DJ9R|%oMTS|F3 z0BmE7aep@|WNhEUH�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 literal 0 HcmV?d00001 diff --git a/assets/images/Window.png b/assets/images/Window.png new file mode 100644 index 0000000000000000000000000000000000000000..be38a0b74fff0b30c38ee915845d3ca7c130a088 GIT binary patch literal 3246 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 literal 0 HcmV?d00001 diff --git a/lib/features/devices/bloc/devices_cubit.dart b/lib/features/devices/bloc/devices_cubit.dart index 4f3f4b4..346af12 100644 --- a/lib/features/devices/bloc/devices_cubit.dart +++ b/lib/features/devices/bloc/devices_cubit.dart @@ -387,6 +387,51 @@ class DevicesCubit extends Cubit { // emitSafe(LightBrightnessChanged(value)); // } // } + +//////////////////////////////////CURTAINS////////////////////////////////////// + double height = 310; + double _openPercentage = 0; + + openCurtain() async { + for (var i = 0; i < 10; i++) { + if (state is! CurtainsIsMoving) { + break; + } + + emit(CurtainsIsMoving()); + + await Future.delayed(const Duration(milliseconds: 200), () { + if (_openPercentage < 100.0) { + _openPercentage += 10.0; + height -= 24.5; + } else { + emit(CurtainsStopped()); + } + }); + } + } + + closeCurtain() async { + for (var i = 0; i < 10; i++) { + if (state is! CurtainsIsMoving) { + break; + } + + await Future.delayed(const Duration(milliseconds: 200), () { + if (_openPercentage > 0.0) { + _openPercentage -= 10.0; + height += 24.5; + emit(CurtainsIsMoving()); + } else { + emit(CurtainsStopped()); + } + }); + } + } + + pauseCurtain() { + emit(CurtainsStopped()); + } } enum LightMode { diff --git a/lib/features/devices/bloc/devices_state.dart b/lib/features/devices/bloc/devices_state.dart index 4f89268..410858a 100644 --- a/lib/features/devices/bloc/devices_state.dart +++ b/lib/features/devices/bloc/devices_state.dart @@ -80,3 +80,8 @@ class DevicesCategoriesError extends DevicesState { DevicesCategoriesError(this.errorMsg); } + +// Curtains +class CurtainsIsMoving extends DevicesState {} + +class CurtainsStopped extends DevicesState {} diff --git a/lib/features/devices/view/widgets/curtains/blind_view.dart b/lib/features/devices/view/widgets/curtains/blind_view.dart new file mode 100644 index 0000000..049a24a --- /dev/null +++ b/lib/features/devices/view/widgets/curtains/blind_view.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; +import 'package:syncrow_app/features/devices/view/widgets/curtains/blinds_blades.dart'; +import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; + +class BlindsView extends StatelessWidget { + const BlindsView({super.key}); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + return const DefaultScaffold( + title: 'Blinds', + child: Column( + children: [ + Spacer(), + BlindsBlades(), + // SizedBox(height: 80), + // BlindsBottons(), + Spacer(), + ], + ), + ); + }, + ); + } +} diff --git a/lib/features/devices/view/widgets/curtains/blinds_blades.dart b/lib/features/devices/view/widgets/curtains/blinds_blades.dart new file mode 100644 index 0000000..1d5a733 --- /dev/null +++ b/lib/features/devices/view/widgets/curtains/blinds_blades.dart @@ -0,0 +1,144 @@ +// ignore_for_file: avoid_print + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; +import 'package:syncrow_app/generated/assets.dart'; + +class BlindsBlades extends StatelessWidget { + const BlindsBlades({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + return Column( + children: [ + Stack( + alignment: Alignment.topCenter, + children: [ + Container( + height: 340, + width: 365, + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage( + Assets.imagesWindow, + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.only(top: 15, bottom: 10), + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + curve: Curves.linear, + height: DevicesCubit.get(context).height, + width: 270, + child: Stack( + children: List.generate( + 25, + (index) { + double spacing = + DevicesCubit.get(context).height / 24; + double topPosition = index * spacing; + return AnimatedPositioned( + duration: const Duration(milliseconds: 200), + curve: Curves.linear, + top: topPosition, + child: SizedBox( + height: 10, + width: 270, + child: Image.asset( + Assets.imagesHorizintalBlade, + fit: BoxFit.fill, + ), + ), + ); + }, + ), + ), + ), + ), + ], + ), + const SizedBox(height: 80), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + DecoratedBox( + decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: MaterialStateProperty.all(Colors.transparent), + onTap: () { + // DevicesCubit.get(context).setHight(false); + DevicesCubit.get(context).openCurtain(); + }, + child: Image.asset( + Assets.imagesUp, + width: 60, + height: 60, + ), + ), + ), + DecoratedBox( + decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: MaterialStateProperty.all(Colors.transparent), + onTap: () { + DevicesCubit.get(context).pauseCurtain(); + }, + child: Image.asset( + Assets.imagesPause, + width: 60, + height: 60, + ), + ), + ), + DecoratedBox( + decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: MaterialStateProperty.all(Colors.transparent), + onTap: () { + // DevicesCubit.get(context).setHight(true); + // DevicesCubit.get(context).openCurtain(); + DevicesCubit.get(context).closeCurtain(); + }, + child: Image.asset( + Assets.imagesDown, + width: 60, + height: 60, + ), + ), + ), + ], + ), + ], + ); + }, + ); + } +} diff --git a/lib/features/devices/view/widgets/curtains/blinds_bottons.dart b/lib/features/devices/view/widgets/curtains/blinds_bottons.dart new file mode 100644 index 0000000..1a14dd2 --- /dev/null +++ b/lib/features/devices/view/widgets/curtains/blinds_bottons.dart @@ -0,0 +1,83 @@ +// import 'package:flutter/material.dart'; +// import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; +// import 'package:syncrow_app/generated/assets.dart'; + +// class BlindsBottons extends StatelessWidget { +// const BlindsBottons({ +// super.key, +// }); + +// @override +// Widget build(BuildContext context) { +// return Row( +// mainAxisAlignment: MainAxisAlignment.spaceEvenly, +// children: [ +// DecoratedBox( +// decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ +// BoxShadow( +// color: Colors.grey.withOpacity(0.5), +// spreadRadius: 1, +// blurRadius: 5, +// offset: const Offset(3, 3), +// ), +// ]), +// child: InkWell( +// overlayColor: MaterialStateProperty.all(Colors.transparent), +// onTap: () { +// // DevicesCubit.get(context).setHight(false); +// DevicesCubit.get(context).closeCurtain(); +// }, +// child: Image.asset( +// Assets.imagesUp, +// width: 60, +// height: 60, +// ), +// ), +// ), +// DecoratedBox( +// decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ +// BoxShadow( +// color: Colors.grey.withOpacity(0.5), +// spreadRadius: 1, +// blurRadius: 5, +// offset: const Offset(3, 3), +// ), +// ]), +// child: InkWell( +// overlayColor: MaterialStateProperty.all(Colors.transparent), +// onTap: () { +// // DevicesCubit.get(context).setHight(false); +// }, +// child: Image.asset( +// Assets.imagesPause, +// width: 60, +// height: 60, +// ), +// ), +// ), +// DecoratedBox( +// decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ +// BoxShadow( +// color: Colors.grey.withOpacity(0.5), +// spreadRadius: 1, +// blurRadius: 5, +// offset: const Offset(3, 3), +// ), +// ]), +// child: InkWell( +// overlayColor: MaterialStateProperty.all(Colors.transparent), +// onTap: () { +// // DevicesCubit.get(context).setHight(true); +// DevicesCubit.get(context).openCurtain(); +// }, +// child: Image.asset( +// Assets.imagesDown, +// width: 60, +// height: 60, +// ), +// ), +// ), +// ], +// ); +// } +// } diff --git a/lib/features/devices/view/widgets/curtains/curtain_list.dart b/lib/features/devices/view/widgets/curtains/curtain_list.dart index 9659fdd..eaf7f07 100644 --- a/lib/features/devices/view/widgets/curtains/curtain_list.dart +++ b/lib/features/devices/view/widgets/curtains/curtain_list.dart @@ -25,7 +25,7 @@ class CurtainList extends StatelessWidget { const BodySmall(text: "All Curtains"), const SizedBox(height: 5), UniversalSwitch( - category: DevicesCubit.getInstance().chosenCategory!, + category: DevicesCubit.get(context).chosenCategory!, ), // other ACs controls @@ -34,17 +34,16 @@ class CurtainList extends StatelessWidget { physics: const NeverScrollableScrollPhysics(), padding: const EdgeInsets.all(0), itemCount: - DevicesCubit.getInstance().chosenCategory!.devices!.length, + DevicesCubit.get(context).chosenCategory!.devices!.length, itemBuilder: (context, index) { - DeviceModel curtain = DevicesCubit.getInstance() - .chosenCategory! - .devices![index]; + DeviceModel curtain = + DevicesCubit.get(context).chosenCategory!.devices![index]; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 20), BodySmall( - text: DevicesCubit.getInstance() + text: DevicesCubit.get(context) .chosenCategory! .devices![index] .name ?? diff --git a/lib/features/devices/view/widgets/curtains/curtain_view.dart b/lib/features/devices/view/widgets/curtains/curtain_view.dart index c67b0c6..65dae85 100644 --- a/lib/features/devices/view/widgets/curtains/curtain_view.dart +++ b/lib/features/devices/view/widgets/curtains/curtain_view.dart @@ -1,12 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/view/widgets/ACs/category_view_app_bar.dart'; import 'package:syncrow_app/features/devices/view/widgets/curtains/curtain_list.dart'; -import 'package:syncrow_app/generated/assets.dart'; -import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; -import 'package:syncrow_app/utils/resource_manager/constants.dart'; +import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; class CurtainView extends StatelessWidget { const CurtainView({super.key}); @@ -15,40 +12,9 @@ class CurtainView extends StatelessWidget { Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { - return AnnotatedRegion( - value: SystemUiOverlayStyle( - statusBarColor: ColorsManager.primaryColor.withOpacity(0.5), - statusBarIconBrightness: Brightness.light, - ), - child: Scaffold( - backgroundColor: ColorsManager.backgroundColor, - extendBodyBehindAppBar: true, - extendBody: true, - appBar: const CategoryViewAppBar(), - body: SafeArea( - child: Container( - width: MediaQuery.sizeOf(context).width, - height: MediaQuery.sizeOf(context).height, - decoration: const BoxDecoration( - image: DecorationImage( - image: AssetImage( - Assets.imagesBackground, - ), - fit: BoxFit.cover, - opacity: 0.4, - ), - ), - child: Padding( - padding: EdgeInsets.only( - top: Constants.appBarHeight, - left: Constants.defaultPadding, - right: Constants.defaultPadding, - ), - child: const CurtainList(), - ), - ), - ), - ), + return const DefaultScaffold( + appBar: CategoryViewAppBar(), + child: CurtainList(), ); }, ); diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart index bd503a5..15d94ec 100644 --- a/lib/generated/assets.dart +++ b/lib/generated/assets.dart @@ -84,7 +84,7 @@ class Assets { static const String doorlockAssetsUnlockingRecords = 'assets/icons/doorlock-assets/unlocking-records.svg'; static const String fontsAftikaRegular = 'assets/fonts/AftikaRegular.ttf'; - static const String generalSettingsIconsClearCache = + static const String generalSettingsIconsClearCach = 'assets/icons/MenuIcons/GeneralSettingsIcons/clearCach.svg'; static const String generalSettingsIconsLanguage = 'assets/icons/MenuIcons/GeneralSettingsIcons/language.svg'; @@ -169,28 +169,34 @@ class Assets { static const String imagesBlind = 'assets/images/blind.png'; static const String imagesBoxEmpty = 'assets/images/box-empty.jpg'; static const String imagesCurtain = 'assets/images/curtain.png'; + static const String imagesDown = 'assets/images/Down.png'; + static const String imagesHorizintalBlade = + 'assets/images/HorizintalBlade.png'; static const String imagesLogo = 'assets/images/Logo.svg'; static const String imagesLogoHorizontal = 'assets/images/logo_horizontal.png'; + static const String imagesPause = 'assets/images/Pause.png'; static const String imagesTestDash = 'assets/images/test_dash.png'; static const String imagesTestDash2 = 'assets/images/test_dash2.png'; + static const String imagesUp = 'assets/images/Up.png'; static const String imagesVector = 'assets/images/Vector.png'; static const String imagesWhiteLogo = 'assets/images/white-logo.png'; - static const String linkageIconsDoorLockAlarm = - 'assets/icons/linkageIcons/doorLockAlarm.svg'; - static const String linkageIconsFamilyHome = - 'assets/icons/linkageIcons/familyHome.svg'; + static const String imagesWindow = 'assets/images/Window.png'; static const String leagalInfoIconsAbout = 'assets/icons/MenuIcons/LeagalInfoIcons/About.svg'; static const String leagalInfoIconsPrivacyPolicy = 'assets/icons/MenuIcons/LeagalInfoIcons/PrivacyPolicy.svg'; static const String leagalInfoIconsUserAgreement = 'assets/icons/MenuIcons/LeagalInfoIcons/UserAgreement.svg'; + static const String linkageIconsDoorLockAlarm = + 'assets/icons/linkageIcons/doorLockAlarm.svg'; + static const String linkageIconsFamilyHome = + 'assets/icons/linkageIcons/familyHome.svg'; static const String messagesCenterIconsAlerts = 'assets/icons/MenuIcons/MessagesCenterIcons/Alerts.svg'; static const String messagesCenterIconsFAQs = 'assets/icons/MenuIcons/MessagesCenterIcons/FAQs.svg'; - static const String messagesCenterIconsHelpAndFeedbacks = + static const String messagesCenterIconsHelpAndFeedback = 'assets/icons/MenuIcons/MessagesCenterIcons/HelpAndFeedback.svg'; static const String messagesCenterIconsMessages = 'assets/icons/MenuIcons/MessagesCenterIcons/Messages.svg'; @@ -218,14 +224,14 @@ class Assets { 'assets/icons/presence-sensor-assets/Record.svg'; static const String presenceSensorAssetsTime = 'assets/icons/presence-sensor-assets/Time.svg'; + static const String securityAndPrivacyIconsPrivacy = + 'assets/icons/MenuIcons/SecurityAndPrivacyIcons/Privacy.svg'; + static const String securityAndPrivacyIconsSecurty = + 'assets/icons/MenuIcons/SecurityAndPrivacyIcons/Securty.svg'; static const String unlockingMethodsIconsFace = 'assets/icons/unlockingMethodsIcons/face.svg'; static const String unlockingMethodsIconsFingerprint = 'assets/icons/unlockingMethodsIcons/fingerprint.svg'; static const String unlockingMethodsIconsRemote = 'assets/icons/unlockingMethodsIcons/remote.svg'; - static const String securityAndPrivacyIconsPrivacy = - 'assets/icons/MenuIcons/SecurityAndPrivacyIcons/Privacy.svg'; - static const String securityAndPrivacyIconsSecurty = - 'assets/icons/MenuIcons/SecurityAndPrivacyIcons/Securty.svg'; } diff --git a/lib/utils/resource_manager/constants.dart b/lib/utils/resource_manager/constants.dart index 628c03d..badf561 100644 --- a/lib/utils/resource_manager/constants.dart +++ b/lib/utils/resource_manager/constants.dart @@ -322,7 +322,7 @@ List> menuSections = [ }, { 'title': 'Clear Cache', - 'Icon': Assets.generalSettingsIconsClearCache, + 'Icon': Assets.generalSettingsIconsClearCach, 'page': null }, ], @@ -345,7 +345,7 @@ List> menuSections = [ {'title': 'FAQs', 'Icon': Assets.messagesCenterIconsFAQs, 'page': null}, { 'title': 'Help & Feedback', - 'Icon': Assets.messagesCenterIconsHelpAndFeedbacks, + 'Icon': Assets.messagesCenterIconsHelpAndFeedback, 'page': null }, ], From 2c8ea5d51c9e13cb75e0e0377e0d92d63756940e Mon Sep 17 00:00:00 2001 From: Mohammad Salameh Date: Wed, 1 May 2024 10:40:10 +0300 Subject: [PATCH 2/6] fixed DevicesView padding --- .../view/widgets/devices_view_body.dart | 131 +++++++----------- .../view/widgets/devices_view_header.dart | 32 ++--- .../devices/view/widgets/room_page.dart | 42 +++--- .../devices/view/widgets/rooms_slider.dart | 37 +++-- .../devices/view/widgets/wizard_page.dart | 8 +- 5 files changed, 102 insertions(+), 148 deletions(-) diff --git a/lib/features/devices/view/widgets/devices_view_body.dart b/lib/features/devices/view/widgets/devices_view_body.dart index 7a9d8fe..61c4f5b 100644 --- a/lib/features/devices/view/widgets/devices_view_body.dart +++ b/lib/features/devices/view/widgets/devices_view_body.dart @@ -8,7 +8,6 @@ import 'package:syncrow_app/features/devices/view/widgets/room_page.dart'; import 'package:syncrow_app/features/devices/view/widgets/rooms_slider.dart'; import 'package:syncrow_app/features/devices/view/widgets/wizard_page.dart'; import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart'; -import 'package:syncrow_app/utils/resource_manager/constants.dart'; class DevicesViewBody extends StatelessWidget { const DevicesViewBody({ @@ -17,93 +16,65 @@ class DevicesViewBody extends StatelessWidget { @override Widget build(BuildContext context) { - return BlocConsumer( - listener: (context, state) { - // if (state is GetDevicesError) { - // ScaffoldMessenger.of(context).showSnackBar( - // SnackBar( - // content: Text(state.errorMsg), - // ), - // ); - // } else if (state is DevicesCategoriesError) { - // ScaffoldMessenger.of(context).showSnackBar( - // SnackBar( - // content: Text(state.errorMsg), - // ), - // ); - // } else if (state is DeviceControlError) { - // ScaffoldMessenger.of(context).showSnackBar( - // SnackBar( - // content: Text(state.errorMsg), - // ), - // ); - // } - }, + return BlocBuilder( builder: (context, state) { if (state is DevicesLoading || state is GetDevicesLoading || state is DevicesCategoriesLoading) { return const Center(child: CircularProgressIndicator()); } else { - return Padding( - padding: EdgeInsets.only( - top: Constants.appBarHeight, - bottom: Constants.bottomNavBarHeight, - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const DevicesViewHeader(), - const RoomsSlider(), - const SizedBox( - height: 10, + return Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const DevicesViewHeader(), + const RoomsSlider(), + const SizedBox( + height: 10, + ), + Expanded( + child: PageView( + controller: HomeCubit.getInstance().devicesPageController, + onPageChanged: (index) { + HomeCubit.getInstance().devicesPageChanged(index); + }, + children: [ + const WizardPage(), + if (HomeCubit.getInstance().selectedSpace != null) + if (HomeCubit.getInstance().selectedSpace!.rooms != null) + ...HomeCubit.getInstance().selectedSpace!.rooms!.map( + (room) { + return RoomPage( + room: room, + ); + }, + ) + ], ), - Expanded( - child: PageView( - controller: HomeCubit.getInstance().devicesPageController, - onPageChanged: (index) { - HomeCubit.getInstance().devicesPageChanged(index); - }, - children: [ - const WizardPage(), - if (HomeCubit.getInstance().selectedSpace != null) - if (HomeCubit.getInstance().selectedSpace!.rooms != - null) - ...HomeCubit.getInstance().selectedSpace!.rooms!.map( - (room) { - return RoomPage( - room: room, - ); - }, - ) - ], - ), - ), - HomeCubit.getInstance().selectedSpace != null - ? Padding( - padding: const EdgeInsets.symmetric( - vertical: 7, - ), - child: SmoothPageIndicator( - controller: - HomeCubit.getInstance().devicesPageController, - count: HomeCubit.getInstance() - .selectedSpace! - .rooms! - .length + - 1, - effect: const WormEffect( - paintStyle: PaintingStyle.stroke, - dotHeight: 8, - dotWidth: 8, - ), - ), - ) - : const Center( - child: BodyLarge(text: 'No Home Found'), + ), + HomeCubit.getInstance().selectedSpace != null + ? Padding( + padding: const EdgeInsets.symmetric( + vertical: 7, ), - ], - ), + child: SmoothPageIndicator( + controller: + HomeCubit.getInstance().devicesPageController, + count: HomeCubit.getInstance() + .selectedSpace! + .rooms! + .length + + 1, + effect: const WormEffect( + paintStyle: PaintingStyle.stroke, + dotHeight: 8, + dotWidth: 8, + ), + ), + ) + : const Center( + child: BodyLarge(text: 'No Home Found'), + ), + ], ); } }, diff --git a/lib/features/devices/view/widgets/devices_view_header.dart b/lib/features/devices/view/widgets/devices_view_header.dart index 43c98c4..ed24896 100644 --- a/lib/features/devices/view/widgets/devices_view_header.dart +++ b/lib/features/devices/view/widgets/devices_view_header.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:syncrow_app/features/devices/view/widgets/devices_mode_tab.dart'; import 'package:syncrow_app/features/shared_widgets/text_widgets/title_medium.dart'; import 'package:syncrow_app/utils/context_extension.dart'; -import 'package:syncrow_app/utils/resource_manager/constants.dart'; import 'package:syncrow_app/utils/resource_manager/strings_manager.dart'; class DevicesViewHeader extends StatelessWidget { @@ -12,25 +11,20 @@ class DevicesViewHeader extends StatelessWidget { @override Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric( - horizontal: Constants.defaultPadding, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TitleMedium( - text: StringsManager.devices, - style: context.titleMedium.copyWith( - fontSize: 25, - ), + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TitleMedium( + text: StringsManager.devices, + style: context.titleMedium.copyWith( + fontSize: 25, ), - const DevicesModeTab(), - const SizedBox( - height: 20, - ), - ], - ), + ), + const DevicesModeTab(), + const SizedBox( + height: 20, + ), + ], ); } } diff --git a/lib/features/devices/view/widgets/room_page.dart b/lib/features/devices/view/widgets/room_page.dart index 8e8b5c0..89b12cd 100644 --- a/lib/features/devices/view/widgets/room_page.dart +++ b/lib/features/devices/view/widgets/room_page.dart @@ -3,7 +3,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/model/room_model.dart'; import 'package:syncrow_app/features/devices/view/widgets/room_page_switch.dart'; -import 'package:syncrow_app/utils/resource_manager/constants.dart'; class RoomPage extends StatelessWidget { const RoomPage({super.key, required this.room}); @@ -12,28 +11,25 @@ class RoomPage extends StatelessWidget { @override Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: Constants.defaultPadding), - child: SingleChildScrollView( - child: BlocBuilder( - builder: (context, state) { - return GridView.builder( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, - crossAxisSpacing: 10, - mainAxisSpacing: 10, - childAspectRatio: 1.5, - ), - padding: const EdgeInsets.only(top: 10), - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: room.devices!.length, - itemBuilder: (context, index) { - return RoomPageSwitch(device: room.devices![index]); - }, - ); - }, - ), + return SingleChildScrollView( + child: BlocBuilder( + builder: (context, state) { + return GridView.builder( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 10, + mainAxisSpacing: 10, + childAspectRatio: 1.5, + ), + padding: const EdgeInsets.only(top: 10), + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: room.devices!.length, + itemBuilder: (context, index) { + return RoomPageSwitch(device: room.devices![index]); + }, + ); + }, ), ); } diff --git a/lib/features/devices/view/widgets/rooms_slider.dart b/lib/features/devices/view/widgets/rooms_slider.dart index aeba2f4..a85900b 100644 --- a/lib/features/devices/view/widgets/rooms_slider.dart +++ b/lib/features/devices/view/widgets/rooms_slider.dart @@ -43,26 +43,23 @@ class RoomsSlider extends StatelessWidget { if (HomeCubit.getInstance().selectedSpace != null) if (HomeCubit.getInstance().selectedSpace!.rooms != null) ...HomeCubit.getInstance().selectedSpace!.rooms!.map( - (room) => Padding( - padding: const EdgeInsets.symmetric(horizontal: 15), - child: InkWell( - onTap: () { - HomeCubit.getInstance().roomSliderPageChanged( - HomeCubit.getInstance() - .selectedSpace! - .rooms! - .indexOf(room)); - }, - child: TitleMedium( - text: room.name!, - style: context.titleMedium.copyWith( - fontSize: 25, - color: - HomeCubit.getInstance().selectedRoom == room - ? ColorsManager.textPrimaryColor - : ColorsManager.textPrimaryColor - .withOpacity(.2), - ), + (room) => InkWell( + onTap: () { + HomeCubit.getInstance().roomSliderPageChanged( + HomeCubit.getInstance() + .selectedSpace! + .rooms! + .indexOf(room)); + }, + child: TitleMedium( + text: room.name!, + style: context.titleMedium.copyWith( + fontSize: 25, + color: + HomeCubit.getInstance().selectedRoom == room + ? ColorsManager.textPrimaryColor + : ColorsManager.textPrimaryColor + .withOpacity(.2), ), ), ), diff --git a/lib/features/devices/view/widgets/wizard_page.dart b/lib/features/devices/view/widgets/wizard_page.dart index eb37796..9d6bf6d 100644 --- a/lib/features/devices/view/widgets/wizard_page.dart +++ b/lib/features/devices/view/widgets/wizard_page.dart @@ -2,7 +2,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:syncrow_app/features/devices/view/widgets/wizard_switches.dart'; -import 'package:syncrow_app/utils/resource_manager/constants.dart'; class WizardPage extends StatelessWidget { const WizardPage({ @@ -11,11 +10,8 @@ class WizardPage extends StatelessWidget { @override Widget build(BuildContext context) { - return const Padding( - padding: EdgeInsets.symmetric(horizontal: Constants.defaultPadding), - child: SingleChildScrollView( - child: WizartSwitches(), - ), + return const SingleChildScrollView( + child: WizartSwitches(), ); } } From 414a2058334ea40413d29ace8f4214dd51a08a42 Mon Sep 17 00:00:00 2001 From: Mohammad Salameh Date: Mon, 6 May 2024 14:38:29 +0300 Subject: [PATCH 3/6] built the interface for the blind curtains. --- lib/features/app_layout/bloc/home_cubit.dart | 12 +++- lib/features/devices/bloc/devices_cubit.dart | 67 ++++++++++++++----- lib/features/devices/bloc/devices_state.dart | 4 +- .../view/widgets/curtains/blind_view.dart | 33 ++++----- lib/utils/resource_manager/constants.dart | 1 - 5 files changed, 81 insertions(+), 36 deletions(-) diff --git a/lib/features/app_layout/bloc/home_cubit.dart b/lib/features/app_layout/bloc/home_cubit.dart index 04d2b81..e13b6ca 100644 --- a/lib/features/app_layout/bloc/home_cubit.dart +++ b/lib/features/app_layout/bloc/home_cubit.dart @@ -6,11 +6,14 @@ import 'package:syncrow_app/features/app_layout/view/widgets/app_bar_home_dropdo import 'package:syncrow_app/features/dashboard/view/dashboard_view.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/model/room_model.dart'; +import 'package:syncrow_app/features/devices/view/widgets/curtains/blind_view.dart'; import 'package:syncrow_app/features/devices/view/widgets/devices_view_body.dart'; import 'package:syncrow_app/features/menu/view/menu_view.dart'; import 'package:syncrow_app/features/scene/view/scene_view.dart'; import 'package:syncrow_app/generated/assets.dart'; +import 'package:syncrow_app/navigation/navigation_service.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; +import 'package:syncrow_app/utils/helpers/custom_page_route.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; part 'home_state.dart'; @@ -168,7 +171,14 @@ class HomeCubit extends Cubit { foregroundColor: MaterialStateProperty.all(ColorsManager.textPrimaryColor), ), - onPressed: () {}, + onPressed: () { + Navigator.push( + NavigationService.navigatorKey.currentContext!, + CustomPageRoute( + builder: (context) => const BlindsView(), + ), + ); + }, ), ], 'Devices': [ diff --git a/lib/features/devices/bloc/devices_cubit.dart b/lib/features/devices/bloc/devices_cubit.dart index 346af12..117b468 100644 --- a/lib/features/devices/bloc/devices_cubit.dart +++ b/lib/features/devices/bloc/devices_cubit.dart @@ -391,45 +391,76 @@ class DevicesCubit extends Cubit { //////////////////////////////////CURTAINS////////////////////////////////////// double height = 310; double _openPercentage = 0; + bool isMoving = false; openCurtain() async { - for (var i = 0; i < 10; i++) { - if (state is! CurtainsIsMoving) { + if (state is CurtainsIsOpening) { + return; + } + + isMoving = true; + while (_openPercentage < 100.0) { + if (state is CurtainsIsClosing) { + // interrupted by the closing process + pauseCurtain(); break; } - emit(CurtainsIsMoving()); + emit(CurtainsIsOpening()); - await Future.delayed(const Duration(milliseconds: 200), () { - if (_openPercentage < 100.0) { + if (isMoving) { + await Future.delayed(const Duration(milliseconds: 200), () { _openPercentage += 10.0; height -= 24.5; - } else { - emit(CurtainsStopped()); - } - }); + + if (_openPercentage >= 100.0) { + print('done open'); + pauseCurtain(); + } + }); + } else { + print('stopped open'); + pauseCurtain(); + break; + } } } closeCurtain() async { - for (var i = 0; i < 10; i++) { - if (state is! CurtainsIsMoving) { + if (state is CurtainsIsClosing) { + return; + } + + isMoving = true; + while (_openPercentage > 0.0) { + if (state is CurtainsIsOpening) { + // interrupted by the opening process + pauseCurtain(); break; } - await Future.delayed(const Duration(milliseconds: 200), () { - if (_openPercentage > 0.0) { + emit(CurtainsIsClosing()); + + if (isMoving) { + await Future.delayed(const Duration(milliseconds: 200), () { _openPercentage -= 10.0; height += 24.5; - emit(CurtainsIsMoving()); - } else { - emit(CurtainsStopped()); - } - }); + + if (_openPercentage <= 0.0) { + print('done close'); + pauseCurtain(); + } + }); + } else { + print('stopped close'); + pauseCurtain(); + break; + } } } pauseCurtain() { + isMoving = false; emit(CurtainsStopped()); } } diff --git a/lib/features/devices/bloc/devices_state.dart b/lib/features/devices/bloc/devices_state.dart index 410858a..e1a45d4 100644 --- a/lib/features/devices/bloc/devices_state.dart +++ b/lib/features/devices/bloc/devices_state.dart @@ -82,6 +82,8 @@ class DevicesCategoriesError extends DevicesState { } // Curtains -class CurtainsIsMoving extends DevicesState {} +class CurtainsIsOpening extends DevicesState {} + +class CurtainsIsClosing extends DevicesState {} class CurtainsStopped extends DevicesState {} diff --git a/lib/features/devices/view/widgets/curtains/blind_view.dart b/lib/features/devices/view/widgets/curtains/blind_view.dart index 049a24a..f0cf8c4 100644 --- a/lib/features/devices/view/widgets/curtains/blind_view.dart +++ b/lib/features/devices/view/widgets/curtains/blind_view.dart @@ -9,21 +9,24 @@ class BlindsView extends StatelessWidget { @override Widget build(BuildContext context) { - return BlocBuilder( - builder: (context, state) { - return const DefaultScaffold( - title: 'Blinds', - child: Column( - children: [ - Spacer(), - BlindsBlades(), - // SizedBox(height: 80), - // BlindsBottons(), - Spacer(), - ], - ), - ); - }, + return BlocProvider( + create: (context) => DevicesCubit.getInstance(), + child: BlocBuilder( + builder: (context, state) { + return const DefaultScaffold( + title: 'Blinds', + child: Column( + children: [ + Spacer(), + BlindsBlades(), + // SizedBox(height: 80), + // BlindsBottons(), + Spacer(), + ], + ), + ); + }, + ), ); } } diff --git a/lib/utils/resource_manager/constants.dart b/lib/utils/resource_manager/constants.dart index badf561..748bf97 100644 --- a/lib/utils/resource_manager/constants.dart +++ b/lib/utils/resource_manager/constants.dart @@ -392,7 +392,6 @@ enum MemberRole { OtherMember, } -//TODO sort memebers by role List> members = [ { 'name': 'member 1', From a9927e5821ee5b3baba84f2ea4f067a4500a0bae Mon Sep 17 00:00:00 2001 From: Mohammad Salameh Date: Mon, 6 May 2024 14:38:46 +0300 Subject: [PATCH 4/6] Update iOS project settings and configurations Include new device configurations and update project settings for Xcode 15.0 compatibility. Add new keys to Info.plist for application features. --- .vscode/launch.json | 8 ++++++- ios/Podfile | 1 + ios/Podfile.lock | 2 +- ios/Runner.xcodeproj/project.pbxproj | 36 ++++++++++++++++++++++++++-- ios/Runner/Info.plist | 14 ++++------- 5 files changed, 47 insertions(+), 14 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index e64ae76..ea8d313 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,11 +11,17 @@ "type": "dart", "deviceId": "0147FC23-3D6C-406A-BE2C-9E67BAF3DA9B" }, + { + "name": "Faris Iphone ", + "request": "launch", + "type": "dart", + "deviceId": "00008101-00050C1C02FA001E" + }, { "name": "Iphone 15 Pro", "request": "launch", "type": "dart", - "deviceId": "9C9E6EEF-0E9C-4FA9-B201-CBA8AFB0D1D8" + "deviceId": "B26AF31B-D38E-4485-9628-528E0DB29789" }, { "name": "Iphone SE", diff --git a/ios/Podfile b/ios/Podfile index d97f17e..3be4767 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -42,3 +42,4 @@ post_install do |installer| flutter_additional_ios_build_settings(target) end end + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index f24671a..c74adc2 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -212,6 +212,6 @@ SPEC CHECKSUMS: sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 -PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 +PODFILE CHECKSUM: cf86fcba3fb3dbd505936bc190bb0b8fe3dd2498 COCOAPODS: 1.15.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 0bddadd..59c1cec 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -97,7 +97,6 @@ F323D632CA976B68DDB0E669 /* Pods-RunnerTests.release.xcconfig */, AAC9129FD50E64509AD1B9AF /* Pods-RunnerTests.profile.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -230,7 +229,7 @@ }; }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; + compatibilityVersion = "Xcode 15.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -416,6 +415,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -435,6 +435,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -445,6 +446,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -467,16 +469,24 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Syncrow; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.syncrowApp; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -537,6 +547,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -556,6 +567,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -566,6 +578,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -592,6 +605,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -611,6 +625,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -621,6 +636,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -645,16 +661,24 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Syncrow; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.syncrowApp; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -667,16 +691,24 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Syncrow; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.syncrowApp; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 3bd6cb0..7abb2a9 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -24,26 +26,18 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UISupportedInterfaceOrientations - UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - From fbe2f5fe537c3b6ee602e6e86f1dedaa7bafcec2 Mon Sep 17 00:00:00 2001 From: Mohammad Salameh Date: Tue, 7 May 2024 12:26:12 +0300 Subject: [PATCH 5/6] !! BIG CHANGE TO ASSETS GEN !! changed the method of generating assets to be more declrative when it comes to names of the assets. it now include the file path name e.g (asset in the path "assets/images/home-images/home.png" will be generated as this "String assetsImagesHomeImageshome = "path" ". this will be very helpful in the future when we want to orgnize the assets dir. --- lib/features/app_layout/bloc/home_cubit.dart | 29 +- .../view/widgets/app_bar_home_dropdown.dart | 2 +- .../auth/view/widgets/login/login_view.dart | 6 +- .../login/login_with_google_facebook.dart | 4 +- .../view/widgets/carbon_emission.dart | 4 +- .../dashboard/view/widgets/consumption.dart | 2 +- .../view/widgets/live_monitor_tab.dart | 6 +- lib/features/devices/bloc/devices_cubit.dart | 30 +- .../devices/model/device_category_model.dart | 18 +- .../devices/model/device_control_model.dart | 1 - lib/features/devices/model/device_model.dart | 16 +- .../view/widgets/ACs/ac_interface.dart | 2 +- .../widgets/ACs/ac_interface_controls.dart | 5 +- .../widgets/ACs/ac_interface_temp_unit.dart | 4 +- .../view/widgets/ACs/ac_temp_widget.dart | 4 +- .../devices/view/widgets/ACs/acs_view.dart | 2 +- .../view/widgets/ACs/universal_ac_temp.dart | 4 +- .../view/widgets/curtains/blind_view.dart | 151 ++- .../view/widgets/curtains/blinds_blades.dart | 144 --- .../view/widgets/curtains/blinds_bottons.dart | 8 +- .../view/widgets/devices_mode_tab.dart | 4 +- .../lights/light_interface_recent_color.dart | 4 +- .../view/widgets/lights/lights_view.dart | 2 +- .../devices/view/widgets/no_devices_view.dart | 2 +- .../ceiling_sensor_interface.dart | 13 +- .../presence_sensors/parameters_list.dart | 14 +- .../presence_sensors/presence_indicator.dart | 4 +- .../wall_sensor_interface.dart | 2 +- .../view/widgets/smart_door/door_button.dart | 2 +- .../view/widgets/smart_door/door_grid.dart | 8 +- .../widgets/smart_door/door_interface.dart | 2 +- .../widgets/smart_door/door_status_bar.dart | 5 +- .../smart_door/smart_linkage_view.dart | 6 +- .../smart_door/unlocking_records_view.dart | 6 +- .../view/widgets/three_gang/gang_switch.dart | 4 +- .../three_gang/three_gang_interface.dart | 2 +- .../widgets/join_home/join_home_view.dart | 2 +- lib/features/scene/view/scene_view.dart | 4 +- .../view/widgets/scene_view_no_scenes.dart | 2 +- .../shared_widgets/default_scaffold.dart | 2 +- lib/features/shared_widgets/syncrow_logo.dart | 6 +- lib/features/splash/view/splash_view.dart | 6 +- lib/generated/Assets.assetsIconsDart | 636 ++++++++++++ lib/generated/assets.dart | 981 +++++++++++++----- lib/services/api/devices_api.dart | 2 - lib/utils/resource_manager/constants.dart | 58 +- 46 files changed, 1694 insertions(+), 527 deletions(-) delete mode 100644 lib/features/devices/view/widgets/curtains/blinds_blades.dart create mode 100644 lib/generated/Assets.assetsIconsDart diff --git a/lib/features/app_layout/bloc/home_cubit.dart b/lib/features/app_layout/bloc/home_cubit.dart index e13b6ca..0a88244 100644 --- a/lib/features/app_layout/bloc/home_cubit.dart +++ b/lib/features/app_layout/bloc/home_cubit.dart @@ -5,8 +5,11 @@ import 'package:syncrow_app/features/app_layout/model/space_model.dart'; import 'package:syncrow_app/features/app_layout/view/widgets/app_bar_home_dropdown.dart'; import 'package:syncrow_app/features/dashboard/view/dashboard_view.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; +import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/features/devices/model/room_model.dart'; +import 'package:syncrow_app/features/devices/model/status_model.dart'; import 'package:syncrow_app/features/devices/view/widgets/curtains/blind_view.dart'; +import 'package:syncrow_app/features/devices/view/widgets/curtains/curtain_view.dart'; import 'package:syncrow_app/features/devices/view/widgets/devices_view_body.dart'; import 'package:syncrow_app/features/menu/view/menu_view.dart'; import 'package:syncrow_app/features/scene/view/scene_view.dart'; @@ -15,6 +18,7 @@ import 'package:syncrow_app/navigation/navigation_service.dart'; import 'package:syncrow_app/services/api/spaces_api.dart'; import 'package:syncrow_app/utils/helpers/custom_page_route.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; +import 'package:syncrow_app/utils/resource_manager/constants.dart'; part 'home_state.dart'; @@ -175,7 +179,13 @@ class HomeCubit extends Cubit { Navigator.push( NavigationService.navigatorKey.currentContext!, CustomPageRoute( - builder: (context) => const BlindsView(), + builder: (context) => CurtainView( + curtain: DeviceModel( + name: "Curtain", + status: [StatusModel(code: "awd", value: 1)], + productType: DeviceType.Curtain, + ), + ), ), ); }, @@ -208,7 +218,7 @@ class HomeCubit extends Cubit { 'Routine': [ // IconButton( // icon: Image.asset( - // Assets.iconsFilter, + // Assets.assetsIconsFilter, // height: 20, // width: 20, // ), @@ -240,7 +250,7 @@ class HomeCubit extends Cubit { 'Menu': [ IconButton( icon: SvgPicture.asset( - Assets.iconsScan, + Assets.assetsIconsScan, height: 20, width: 20, ), @@ -256,7 +266,7 @@ class HomeCubit extends Cubit { 'Menu': Padding( padding: const EdgeInsets.only(left: 15), child: Image.asset( - Assets.imagesLogoHorizontal, + Assets.assetsImagesLogoHorizontal, height: 15, width: 100, fit: BoxFit.scaleDown, @@ -265,11 +275,12 @@ class HomeCubit extends Cubit { }; static var bottomNavItems = [ - defaultBottomNavBarItem(icon: Assets.iconsDashboard, label: 'Dashboard'), - // defaultBottomNavBarItem(icon: Assets.iconslayout, label: 'Layout'), - defaultBottomNavBarItem(icon: Assets.iconsDevices, label: 'Devices'), - defaultBottomNavBarItem(icon: Assets.iconsRoutines, label: 'Routine'), - defaultBottomNavBarItem(icon: Assets.iconsMenu, label: 'Menu'), + defaultBottomNavBarItem( + icon: Assets.assetsIconsDashboard, label: 'Dashboard'), + // defaultBottomNavBarItem(icon: Assets.assetsIconslayout, label: 'Layout'), + defaultBottomNavBarItem(icon: Assets.assetsIconsDevices, label: 'Devices'), + defaultBottomNavBarItem(icon: Assets.assetsIconsRoutines, label: 'Routine'), + defaultBottomNavBarItem(icon: Assets.assetsIconsMenu, label: 'Menu'), ]; final List pages = [ diff --git a/lib/features/app_layout/view/widgets/app_bar_home_dropdown.dart b/lib/features/app_layout/view/widgets/app_bar_home_dropdown.dart index 4fc6965..bc1496d 100644 --- a/lib/features/app_layout/view/widgets/app_bar_home_dropdown.dart +++ b/lib/features/app_layout/view/widgets/app_bar_home_dropdown.dart @@ -36,7 +36,7 @@ class AppBarHomeDropdown extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset( - Assets.iconsHome, + Assets.assetsIconsHome, width: 25, height: 25, colorFilter: const ColorFilter.mode( diff --git a/lib/features/auth/view/widgets/login/login_view.dart b/lib/features/auth/view/widgets/login/login_view.dart index 479d48e..16cfd03 100644 --- a/lib/features/auth/view/widgets/login/login_view.dart +++ b/lib/features/auth/view/widgets/login/login_view.dart @@ -41,7 +41,7 @@ class LoginView extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, ), @@ -52,7 +52,7 @@ class LoginView extends StatelessWidget { height: MediaQuery.sizeOf(context).height, decoration: const BoxDecoration( image: DecorationImage( - image: AssetImage(Assets.imagesVector), + image: AssetImage(Assets.assetsImagesVector), fit: BoxFit.cover, opacity: 0.9, ), @@ -72,7 +72,7 @@ class LoginView extends StatelessWidget { children: [ Center( child: SvgPicture.asset( - Assets.imagesLogo, + Assets.assetsImagesLogo, width: 160, ), ), diff --git a/lib/features/auth/view/widgets/login/login_with_google_facebook.dart b/lib/features/auth/view/widgets/login/login_with_google_facebook.dart index c310663..b7e2394 100644 --- a/lib/features/auth/view/widgets/login/login_with_google_facebook.dart +++ b/lib/features/auth/view/widgets/login/login_with_google_facebook.dart @@ -22,7 +22,7 @@ class LoginWithGoogleFacebook extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - SvgPicture.asset(Assets.iconsGoogle), + SvgPicture.asset(Assets.assetsIconsGoogle), const SizedBox(width: 10), BodyMedium( text: "Google", @@ -43,7 +43,7 @@ class LoginWithGoogleFacebook extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - SvgPicture.asset(Assets.iconsFacebook), + SvgPicture.asset(Assets.assetsIconsFacebook), const SizedBox(width: 10), BodyMedium( text: "Facebook", diff --git a/lib/features/dashboard/view/widgets/carbon_emission.dart b/lib/features/dashboard/view/widgets/carbon_emission.dart index 0e47a9f..4823210 100644 --- a/lib/features/dashboard/view/widgets/carbon_emission.dart +++ b/lib/features/dashboard/view/widgets/carbon_emission.dart @@ -41,7 +41,7 @@ class CarbonEmission extends StatelessWidget { SizedBox.square( dimension: 30, child: SvgPicture.asset( - Assets.iconsCO2, + Assets.assetsIconsCO2, fit: BoxFit.contain, ), ), @@ -71,7 +71,7 @@ class CarbonEmission extends StatelessWidget { SizedBox.square( dimension: 30, child: SvgPicture.asset( - Assets.iconsSustainability, + Assets.assetsIconsSustainability, fit: BoxFit.contain, ), ), diff --git a/lib/features/dashboard/view/widgets/consumption.dart b/lib/features/dashboard/view/widgets/consumption.dart index 9e5a1a7..0e39498 100644 --- a/lib/features/dashboard/view/widgets/consumption.dart +++ b/lib/features/dashboard/view/widgets/consumption.dart @@ -61,7 +61,7 @@ class Consumption extends StatelessWidget { SizedBox.square( dimension: 60, child: Image.asset( - Assets.imagesTestDash2, + Assets.assetsImagesTestDash2, fit: BoxFit.contain, ), ) diff --git a/lib/features/dashboard/view/widgets/live_monitor_tab.dart b/lib/features/dashboard/view/widgets/live_monitor_tab.dart index 1b4fb2e..71de05a 100644 --- a/lib/features/dashboard/view/widgets/live_monitor_tab.dart +++ b/lib/features/dashboard/view/widgets/live_monitor_tab.dart @@ -15,21 +15,21 @@ class LiveMonitorTab extends StatelessWidget { children: [ Expanded( child: LiveMonitorWidget( - image: Assets.iconsActive, + image: Assets.assetsIconsActive, title: StringsManager.active, value: '10.00w', ), ), Expanded( child: LiveMonitorWidget( - image: Assets.iconsVoltMeter, + image: Assets.assetsIconsVoltMeter, title: StringsManager.current, value: '12.1 A', ), ), Expanded( child: LiveMonitorWidget( - image: Assets.iconsFrequency, + image: Assets.assetsIconsFrequency, title: StringsManager.frequency, value: '50 Hz', ), diff --git a/lib/features/devices/bloc/devices_cubit.dart b/lib/features/devices/bloc/devices_cubit.dart index 117b468..c362cc6 100644 --- a/lib/features/devices/bloc/devices_cubit.dart +++ b/lib/features/devices/bloc/devices_cubit.dart @@ -10,7 +10,7 @@ import 'package:syncrow_app/features/devices/model/device_control_model.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/features/devices/model/status_model.dart'; import 'package:syncrow_app/features/devices/view/widgets/ACs/acs_view.dart'; -import 'package:syncrow_app/features/devices/view/widgets/curtains/curtain_view.dart'; +import 'package:syncrow_app/features/devices/view/widgets/curtains/curtain_list_view.dart'; import 'package:syncrow_app/features/devices/view/widgets/gateway/gateway_view.dart'; import 'package:syncrow_app/features/devices/view/widgets/lights/lights_view.dart'; import 'package:syncrow_app/features/devices/view/widgets/three_gang/three_gang_interface.dart'; @@ -86,7 +86,7 @@ class DevicesCubit extends Cubit { case DeviceType.DoorLock: return const DoorsListView(); case DeviceType.Curtain: - return const CurtainView(); + return const CurtainListView(); // case DeviceType.ThreeGang: // return const ThreeGangSwitchesView(); case DeviceType.Gateway: @@ -389,11 +389,14 @@ class DevicesCubit extends Cubit { // } //////////////////////////////////CURTAINS////////////////////////////////////// - double height = 310; + double curtainWidth = 270; + double curtainOpeningSpace = 195; + double blindWindowHight = 310; + double blindOpeningSpace = 245; double _openPercentage = 0; bool isMoving = false; - openCurtain() async { + openCurtain(DeviceType type) async { if (state is CurtainsIsOpening) { return; } @@ -401,7 +404,7 @@ class DevicesCubit extends Cubit { isMoving = true; while (_openPercentage < 100.0) { if (state is CurtainsIsClosing) { - // interrupted by the closing process + //listen to interruption by the closing process pauseCurtain(); break; } @@ -411,22 +414,24 @@ class DevicesCubit extends Cubit { if (isMoving) { await Future.delayed(const Duration(milliseconds: 200), () { _openPercentage += 10.0; - height -= 24.5; + //25.5 is the 10% of the curtain opening space, its used to update the + // animated container of thecurtain + type == DeviceType.Curtain + ? curtainWidth -= curtainOpeningSpace / 10 + : blindWindowHight -= blindOpeningSpace / 10; if (_openPercentage >= 100.0) { - print('done open'); pauseCurtain(); } }); } else { - print('stopped open'); pauseCurtain(); break; } } } - closeCurtain() async { + closeCurtain(DeviceType type) async { if (state is CurtainsIsClosing) { return; } @@ -444,15 +449,16 @@ class DevicesCubit extends Cubit { if (isMoving) { await Future.delayed(const Duration(milliseconds: 200), () { _openPercentage -= 10.0; - height += 24.5; + //25.5 is the 10% of the curtain opening space, its used to update the + type == DeviceType.Curtain + ? curtainWidth += curtainOpeningSpace / 10 + : blindWindowHight += 24.5; if (_openPercentage <= 0.0) { - print('done close'); pauseCurtain(); } }); } else { - print('stopped close'); pauseCurtain(); break; } diff --git a/lib/features/devices/model/device_category_model.dart b/lib/features/devices/model/device_category_model.dart index 00a1fa0..ba40509 100644 --- a/lib/features/devices/model/device_category_model.dart +++ b/lib/features/devices/model/device_category_model.dart @@ -54,13 +54,13 @@ class DevicesCategoryModel { } Map deviceTypeIconMap = { - DeviceType.AC: Assets.iconsAC, - DeviceType.LightBulb: Assets.iconsLight, - DeviceType.DoorLock: Assets.iconsDoorLock, - DeviceType.Curtain: Assets.iconsCurtain, - DeviceType.Gateway: Assets.iconsGateway, - DeviceType.CeilingSensor: Assets.iconsSensors, - DeviceType.WallSensor: Assets.iconsSensors, - DeviceType.ThreeGang: Assets.iconsGang, - DeviceType.Other: Assets.iconsAC, + DeviceType.AC: Assets.assetsIconsAC, + DeviceType.LightBulb: Assets.assetsIconsLight, + DeviceType.DoorLock: Assets.assetsIconsDoorLock, + DeviceType.Curtain: Assets.assetsIconsCurtain, + DeviceType.Gateway: Assets.assetsIconsGateway, + DeviceType.CeilingSensor: Assets.assetsIconsSensors, + DeviceType.WallSensor: Assets.assetsIconsSensors, + DeviceType.ThreeGang: Assets.assetsIconsGang, + DeviceType.Other: Assets.assetsIconsAC, }; diff --git a/lib/features/devices/model/device_control_model.dart b/lib/features/devices/model/device_control_model.dart index c2a66e2..4941991 100644 --- a/lib/features/devices/model/device_control_model.dart +++ b/lib/features/devices/model/device_control_model.dart @@ -10,7 +10,6 @@ class DeviceControlModel { }); factory DeviceControlModel.fromJson(Map json) { - print('json: $json'); return DeviceControlModel( deviceId: json['deviceUuid'], code: json['code'], diff --git a/lib/features/devices/model/device_model.dart b/lib/features/devices/model/device_model.dart index 4cd6417..4d84eab 100644 --- a/lib/features/devices/model/device_model.dart +++ b/lib/features/devices/model/device_model.dart @@ -42,22 +42,22 @@ class DeviceModel { DeviceType type = devicesTypesMap[json['productType']] ?? DeviceType.Other; if (type == DeviceType.LightBulb) { - tempIcon = Assets.iconsLight; + tempIcon = Assets.assetsIconsLight; } else if (type == DeviceType.CeilingSensor || type == DeviceType.WallSensor) { - tempIcon = Assets.iconsSensors; + tempIcon = Assets.assetsIconsSensors; } else if (type == DeviceType.AC) { - tempIcon = Assets.iconsAC; + tempIcon = Assets.assetsIconsAC; } else if (type == DeviceType.DoorLock) { - tempIcon = Assets.iconsDoorLock; + tempIcon = Assets.assetsIconsDoorLock; } else if (type == DeviceType.Curtain) { - tempIcon = Assets.iconsCurtain; + tempIcon = Assets.assetsIconsCurtain; } else if (type == DeviceType.ThreeGang) { - tempIcon = Assets.icons3GangSwitch; + tempIcon = Assets.assetsIcons3GangSwitch; } else if (type == DeviceType.Gateway) { - tempIcon = Assets.iconsGateway; + tempIcon = Assets.assetsIconsGateway; } else { - tempIcon = Assets.iconsLogo; + tempIcon = Assets.assetsIconsLogo; } return DeviceModel( icon: tempIcon, diff --git a/lib/features/devices/view/widgets/ACs/ac_interface.dart b/lib/features/devices/view/widgets/ACs/ac_interface.dart index 417528b..209f4b2 100644 --- a/lib/features/devices/view/widgets/ACs/ac_interface.dart +++ b/lib/features/devices/view/widgets/ACs/ac_interface.dart @@ -54,7 +54,7 @@ class AcInterface extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, diff --git a/lib/features/devices/view/widgets/ACs/ac_interface_controls.dart b/lib/features/devices/view/widgets/ACs/ac_interface_controls.dart index 9d39be6..3b1b3a4 100644 --- a/lib/features/devices/view/widgets/ACs/ac_interface_controls.dart +++ b/lib/features/devices/view/widgets/ACs/ac_interface_controls.dart @@ -31,7 +31,8 @@ class AcInterfaceControls extends StatelessWidget { child: DefaultContainer( height: 55, child: Center( - child: SvgPicture.asset(Assets.iconsAutomatedClock), + child: + SvgPicture.asset(Assets.assetsIconsAutomatedClock), ), ), ), @@ -43,7 +44,7 @@ class AcInterfaceControls extends StatelessWidget { child: DefaultContainer( height: 55, child: Center( - child: SvgPicture.asset(Assets.iconsLock), + child: SvgPicture.asset(Assets.assetsIconsLock), ), ), ), diff --git a/lib/features/devices/view/widgets/ACs/ac_interface_temp_unit.dart b/lib/features/devices/view/widgets/ACs/ac_interface_temp_unit.dart index 883e103..f022ca3 100644 --- a/lib/features/devices/view/widgets/ACs/ac_interface_temp_unit.dart +++ b/lib/features/devices/view/widgets/ACs/ac_interface_temp_unit.dart @@ -128,7 +128,7 @@ class AcInterfaceTempUnit extends StatelessWidget { } }, child: SvgPicture.asset( - Assets.iconsMinus, + Assets.assetsIconsMinus, ), ), ), @@ -178,7 +178,7 @@ class AcInterfaceTempUnit extends StatelessWidget { } }, child: SvgPicture.asset( - Assets.iconsPlus, + Assets.assetsIconsPlus, height: 24, width: 24, ), diff --git a/lib/features/devices/view/widgets/ACs/ac_temp_widget.dart b/lib/features/devices/view/widgets/ACs/ac_temp_widget.dart index 1517119..f3bf6bf 100644 --- a/lib/features/devices/view/widgets/ACs/ac_temp_widget.dart +++ b/lib/features/devices/view/widgets/ACs/ac_temp_widget.dart @@ -35,7 +35,7 @@ class ACTempWidget extends StatelessWidget { // .setACTemp(DeviceModel, DeviceModel.temperature - 0.5); }, child: SvgPicture.asset( - Assets.iconsMinus, + Assets.assetsIconsMinus, ), ), ), @@ -55,7 +55,7 @@ class ACTempWidget extends StatelessWidget { // .setACTemp(DeviceModel, DeviceModel.temperature + 0.5); }, child: SvgPicture.asset( - Assets.iconsPlus, + Assets.assetsIconsPlus, height: 24, width: 24, ), diff --git a/lib/features/devices/view/widgets/ACs/acs_view.dart b/lib/features/devices/view/widgets/ACs/acs_view.dart index 9bb0af1..5ce1401 100644 --- a/lib/features/devices/view/widgets/ACs/acs_view.dart +++ b/lib/features/devices/view/widgets/ACs/acs_view.dart @@ -41,7 +41,7 @@ class ACsView extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, diff --git a/lib/features/devices/view/widgets/ACs/universal_ac_temp.dart b/lib/features/devices/view/widgets/ACs/universal_ac_temp.dart index f2566c3..00de5f0 100644 --- a/lib/features/devices/view/widgets/ACs/universal_ac_temp.dart +++ b/lib/features/devices/view/widgets/ACs/universal_ac_temp.dart @@ -30,7 +30,7 @@ class UniversalACTemp extends StatelessWidget { // .setTempToAll(DevicesCubit.universalACTemp - .5); }, child: SvgPicture.asset( - Assets.iconsMinus, + Assets.assetsIconsMinus, ), ), ), @@ -50,7 +50,7 @@ class UniversalACTemp extends StatelessWidget { // .setTempToAll(DevicesCubit.universalACTemp + .5); }, child: SvgPicture.asset( - Assets.iconsPlus, + Assets.assetsIconsPlus, height: 24, width: 24, ), diff --git a/lib/features/devices/view/widgets/curtains/blind_view.dart b/lib/features/devices/view/widgets/curtains/blind_view.dart index f0cf8c4..dc47d41 100644 --- a/lib/features/devices/view/widgets/curtains/blind_view.dart +++ b/lib/features/devices/view/widgets/curtains/blind_view.dart @@ -1,27 +1,158 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; -import 'package:syncrow_app/features/devices/view/widgets/curtains/blinds_blades.dart'; +import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; +import 'package:syncrow_app/generated/assets.dart'; +import 'package:syncrow_app/utils/resource_manager/constants.dart'; class BlindsView extends StatelessWidget { - const BlindsView({super.key}); - + const BlindsView({ + super.key, + this.blind, + }); + final DeviceModel? blind; @override Widget build(BuildContext context) { return BlocProvider( create: (context) => DevicesCubit.getInstance(), child: BlocBuilder( builder: (context, state) { - return const DefaultScaffold( - title: 'Blinds', + return DefaultScaffold( + title: blind?.name ?? 'Blinds', child: Column( children: [ - Spacer(), - BlindsBlades(), - // SizedBox(height: 80), - // BlindsBottons(), - Spacer(), + Column( + children: [ + Stack( + alignment: Alignment.topCenter, + children: [ + Container( + height: 340, + width: 365, + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage( + Assets.assetsImagesWindow, + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.only(top: 15, bottom: 10), + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + curve: Curves.linear, + height: DevicesCubit.get(context).blindWindowHight, + width: 270, + child: Stack( + children: List.generate( + 25, + (index) { + double spacing = DevicesCubit.get(context) + .blindWindowHight / + 24; + double topPosition = index * spacing; + return AnimatedPositioned( + duration: const Duration(milliseconds: 200), + curve: Curves.linear, + top: topPosition, + child: SizedBox( + height: 10, + width: 270, + child: Image.asset( + Assets.assetsImagesHorizintalBlade, + fit: BoxFit.fill, + ), + ), + ); + }, + ), + ), + ), + ), + ], + ), + const SizedBox(height: 80), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + DecoratedBox( + decoration: + BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: + MaterialStateProperty.all(Colors.transparent), + onTap: () { + // DevicesCubit.get(context).setHight(false); + DevicesCubit.get(context).openCurtain( + blind?.productType! ?? DeviceType.Blind); + }, + child: Image.asset( + Assets.assetsImagesUp, + width: 60, + height: 60, + ), + ), + ), + DecoratedBox( + decoration: + BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: + MaterialStateProperty.all(Colors.transparent), + onTap: () { + DevicesCubit.get(context).pauseCurtain(); + }, + child: Image.asset( + Assets.assetsImagesPause, + width: 60, + height: 60, + ), + ), + ), + DecoratedBox( + decoration: + BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: + MaterialStateProperty.all(Colors.transparent), + onTap: () { + DevicesCubit.get(context).closeCurtain( + blind?.productType! ?? DeviceType.Blind); + }, + child: Image.asset( + Assets.assetsImagesDown, + width: 60, + height: 60, + ), + ), + ), + ], + ), + ], + ), ], ), ); diff --git a/lib/features/devices/view/widgets/curtains/blinds_blades.dart b/lib/features/devices/view/widgets/curtains/blinds_blades.dart deleted file mode 100644 index 1d5a733..0000000 --- a/lib/features/devices/view/widgets/curtains/blinds_blades.dart +++ /dev/null @@ -1,144 +0,0 @@ -// ignore_for_file: avoid_print - -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; -import 'package:syncrow_app/generated/assets.dart'; - -class BlindsBlades extends StatelessWidget { - const BlindsBlades({ - super.key, - }); - - @override - Widget build(BuildContext context) { - return BlocBuilder( - builder: (context, state) { - return Column( - children: [ - Stack( - alignment: Alignment.topCenter, - children: [ - Container( - height: 340, - width: 365, - decoration: const BoxDecoration( - image: DecorationImage( - image: AssetImage( - Assets.imagesWindow, - ), - ), - ), - ), - Padding( - padding: const EdgeInsets.only(top: 15, bottom: 10), - child: AnimatedContainer( - duration: const Duration(milliseconds: 200), - curve: Curves.linear, - height: DevicesCubit.get(context).height, - width: 270, - child: Stack( - children: List.generate( - 25, - (index) { - double spacing = - DevicesCubit.get(context).height / 24; - double topPosition = index * spacing; - return AnimatedPositioned( - duration: const Duration(milliseconds: 200), - curve: Curves.linear, - top: topPosition, - child: SizedBox( - height: 10, - width: 270, - child: Image.asset( - Assets.imagesHorizintalBlade, - fit: BoxFit.fill, - ), - ), - ); - }, - ), - ), - ), - ), - ], - ), - const SizedBox(height: 80), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - DecoratedBox( - decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 1, - blurRadius: 5, - offset: const Offset(3, 3), - ), - ]), - child: InkWell( - overlayColor: MaterialStateProperty.all(Colors.transparent), - onTap: () { - // DevicesCubit.get(context).setHight(false); - DevicesCubit.get(context).openCurtain(); - }, - child: Image.asset( - Assets.imagesUp, - width: 60, - height: 60, - ), - ), - ), - DecoratedBox( - decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 1, - blurRadius: 5, - offset: const Offset(3, 3), - ), - ]), - child: InkWell( - overlayColor: MaterialStateProperty.all(Colors.transparent), - onTap: () { - DevicesCubit.get(context).pauseCurtain(); - }, - child: Image.asset( - Assets.imagesPause, - width: 60, - height: 60, - ), - ), - ), - DecoratedBox( - decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 1, - blurRadius: 5, - offset: const Offset(3, 3), - ), - ]), - child: InkWell( - overlayColor: MaterialStateProperty.all(Colors.transparent), - onTap: () { - // DevicesCubit.get(context).setHight(true); - // DevicesCubit.get(context).openCurtain(); - DevicesCubit.get(context).closeCurtain(); - }, - child: Image.asset( - Assets.imagesDown, - width: 60, - height: 60, - ), - ), - ), - ], - ), - ], - ); - }, - ); - } -} diff --git a/lib/features/devices/view/widgets/curtains/blinds_bottons.dart b/lib/features/devices/view/widgets/curtains/blinds_bottons.dart index 1a14dd2..c6e1886 100644 --- a/lib/features/devices/view/widgets/curtains/blinds_bottons.dart +++ b/lib/features/devices/view/widgets/curtains/blinds_bottons.dart @@ -1,6 +1,6 @@ // import 'package:flutter/material.dart'; // import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; -// import 'package:syncrow_app/generated/assets.dart'; +// import 'package:syncrow_app/generated2/assets.dart'; // class BlindsBottons extends StatelessWidget { // const BlindsBottons({ @@ -28,7 +28,7 @@ // DevicesCubit.get(context).closeCurtain(); // }, // child: Image.asset( -// Assets.imagesUp, +// Assets.assetsImagesUp, // width: 60, // height: 60, // ), @@ -49,7 +49,7 @@ // // DevicesCubit.get(context).setHight(false); // }, // child: Image.asset( -// Assets.imagesPause, +// Assets.assetsImagesPause, // width: 60, // height: 60, // ), @@ -71,7 +71,7 @@ // DevicesCubit.get(context).openCurtain(); // }, // child: Image.asset( -// Assets.imagesDown, +// Assets.assetsImagesDown, // width: 60, // height: 60, // ), diff --git a/lib/features/devices/view/widgets/devices_mode_tab.dart b/lib/features/devices/view/widgets/devices_mode_tab.dart index 4ee9877..12d82ae 100644 --- a/lib/features/devices/view/widgets/devices_mode_tab.dart +++ b/lib/features/devices/view/widgets/devices_mode_tab.dart @@ -29,7 +29,7 @@ class DevicesModeTab extends StatelessWidget { height: 30, width: 25, child: SvgPicture.asset( - Assets.iconsWinter, + Assets.assetsIconsWinter, fit: BoxFit.contain, ), ), @@ -57,7 +57,7 @@ class DevicesModeTab extends StatelessWidget { height: 30, width: 25, child: SvgPicture.asset( - Assets.iconsSummer, + Assets.assetsIconsSummer, fit: BoxFit.contain, ), ), diff --git a/lib/features/devices/view/widgets/lights/light_interface_recent_color.dart b/lib/features/devices/view/widgets/lights/light_interface_recent_color.dart index ad0509e..21d6163 100644 --- a/lib/features/devices/view/widgets/lights/light_interface_recent_color.dart +++ b/lib/features/devices/view/widgets/lights/light_interface_recent_color.dart @@ -55,7 +55,7 @@ class LightInterfaceRecentColor extends StatelessWidget { color: ColorsManager.greyColor, ), SvgPicture.asset( - Assets.iconsKalvin, + Assets.assetsIconsKalvin, height: 40, width: 40, ), @@ -63,7 +63,7 @@ class LightInterfaceRecentColor extends StatelessWidget { width: 10, ), SvgPicture.asset( - Assets.iconsColorWheel, + Assets.assetsIconsColorWheel, height: 40, width: 40, ), diff --git a/lib/features/devices/view/widgets/lights/lights_view.dart b/lib/features/devices/view/widgets/lights/lights_view.dart index f16a444..0ff37eb 100644 --- a/lib/features/devices/view/widgets/lights/lights_view.dart +++ b/lib/features/devices/view/widgets/lights/lights_view.dart @@ -46,7 +46,7 @@ class LightsView extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, diff --git a/lib/features/devices/view/widgets/no_devices_view.dart b/lib/features/devices/view/widgets/no_devices_view.dart index 55ef22a..b21bab1 100644 --- a/lib/features/devices/view/widgets/no_devices_view.dart +++ b/lib/features/devices/view/widgets/no_devices_view.dart @@ -14,7 +14,7 @@ class NoDevicesView extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( - Assets.imagesBoxEmpty, + Assets.assetsImagesBoxEmpty, opacity: const AlwaysStoppedAnimation(0.5), scale: 1, width: 140, diff --git a/lib/features/devices/view/widgets/presence_sensors/ceiling_sensor_interface.dart b/lib/features/devices/view/widgets/presence_sensors/ceiling_sensor_interface.dart index 238cdc3..1a00f1f 100644 --- a/lib/features/devices/view/widgets/presence_sensors/ceiling_sensor_interface.dart +++ b/lib/features/devices/view/widgets/presence_sensors/ceiling_sensor_interface.dart @@ -51,7 +51,7 @@ class CeilingSensorInterface extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, @@ -104,8 +104,9 @@ class CeilingSensorInterface extends StatelessWidget { }, child: SvgPicture.asset( state == 'presence' - ? Assets.presenceSensorAssetsPresence - : Assets.presenceSensorAssetsPresenceSensorMotion, + ? Assets.assetsIconsPresenceSensorAssetsPresence + : Assets + .assetsIconsPresenceSensorAssetsPresenceSensorMotion, width: 100, height: 100, // colorFilter: ColorFilter.mode( @@ -258,17 +259,17 @@ class CeilingSensorInterface extends StatelessWidget { var ceilingSensorButtons = [ { 'title': 'Parameter Settings', - 'icon': Assets.presenceSensorAssetsParameterSettings, + 'icon': Assets.assetsIconsPresenceSensorAssetsParameterSettings, 'page': null, }, { 'title': 'Induction History', - 'icon': Assets.presenceSensorAssetsInductionRecording, + 'icon': Assets.assetsIconsPresenceSensorAssetsInductionRecording, 'page': null, }, { 'title': 'Help Description', - 'icon': Assets.presenceSensorAssetsHelpDescription, + 'icon': Assets.assetsIconsPresenceSensorAssetsHelpDescription, 'page': null, }, ]; diff --git a/lib/features/devices/view/widgets/presence_sensors/parameters_list.dart b/lib/features/devices/view/widgets/presence_sensors/parameters_list.dart index cad1776..da9ef21 100644 --- a/lib/features/devices/view/widgets/presence_sensors/parameters_list.dart +++ b/lib/features/devices/view/widgets/presence_sensors/parameters_list.dart @@ -213,38 +213,38 @@ class ParametersList extends StatelessWidget { //{"result":{"productId":"awarhusb","productType":"WPS","status":[{"code":"presence_state","value":"none"},{"code":"far_detection","value":75},{"code":"presence_time","value":0},{"code":"motion_sensitivity_value","value":5},{"code":"motionless_sensitivity","value":5},{"code":"dis_current","value":214},{"code":"illuminance_value","value":231},{"code":"indicator","value":true}]},"success":true} final List> wallSensorButtons = const [ { - 'icon': Assets.presenceSensorAssetsTime, + 'icon': Assets.assetsIconsPresenceSensorAssetsTime, 'title': 'Presence Time', 'code': 'presence_time', }, { - 'icon': Assets.presenceSensorAssetsDistance, + 'icon': Assets.assetsIconsPresenceSensorAssetsDistance, 'title': 'Current Distance', 'code': 'dis_current', }, { - 'icon': Assets.presenceSensorAssetsIlluminanceValue, + 'icon': Assets.assetsIconsPresenceSensorAssetsIlluminanceValue, 'title': 'Illuminance Value', 'code': 'illuminance_value', }, { - 'icon': Assets.presenceSensorAssetsEmpty, + 'icon': Assets.assetsIconsPresenceSensorAssetsEmpty, 'title': 'Nobody Time', 'code': null, //TODO: Implement the nobody time }, { - 'icon': Assets.presenceSensorAssetsIndicator, + 'icon': Assets.assetsIconsPresenceSensorAssetsIndicator, 'title': 'Indicator', 'code': 'indicator', }, { - 'icon': Assets.presenceSensorAssetsRecord, + 'icon': Assets.assetsIconsPresenceSensorAssetsRecord, 'title': 'Presence Record', 'code': null }, { - 'icon': Assets.presenceSensorAssetsIlluminanceRecord, + 'icon': Assets.assetsIconsPresenceSensorAssetsIlluminanceRecord, 'title': 'Illuminance Record', 'code': null }, diff --git a/lib/features/devices/view/widgets/presence_sensors/presence_indicator.dart b/lib/features/devices/view/widgets/presence_sensors/presence_indicator.dart index ad21528..f9dc6fb 100644 --- a/lib/features/devices/view/widgets/presence_sensors/presence_indicator.dart +++ b/lib/features/devices/view/widgets/presence_sensors/presence_indicator.dart @@ -16,8 +16,8 @@ class PresenceIndicator extends StatelessWidget { children: [ SvgPicture.asset( state == 'presence' - ? Assets.presenceSensorAssetsPresence - : Assets.presenceSensorAssetsPresenceSensorMotion, + ? Assets.assetsIconsPresenceSensorAssetsPresence + : Assets.assetsIconsPresenceSensorAssetsPresenceSensorMotion, width: 100, height: 100, ), diff --git a/lib/features/devices/view/widgets/presence_sensors/wall_sensor_interface.dart b/lib/features/devices/view/widgets/presence_sensors/wall_sensor_interface.dart index 5c1ee4f..8690bfa 100644 --- a/lib/features/devices/view/widgets/presence_sensors/wall_sensor_interface.dart +++ b/lib/features/devices/view/widgets/presence_sensors/wall_sensor_interface.dart @@ -52,7 +52,7 @@ class WallMountedInterface extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, diff --git a/lib/features/devices/view/widgets/smart_door/door_button.dart b/lib/features/devices/view/widgets/smart_door/door_button.dart index cfc91c1..171f5ab 100644 --- a/lib/features/devices/view/widgets/smart_door/door_button.dart +++ b/lib/features/devices/view/widgets/smart_door/door_button.dart @@ -163,7 +163,7 @@ class _DoorLockButtonState extends State ), child: Center( child: SvgPicture.asset( - Assets.doorlockAssetsLockIcon, + Assets.assetsIconsDoorlockAssetsLockIcon, ), ), ), diff --git a/lib/features/devices/view/widgets/smart_door/door_grid.dart b/lib/features/devices/view/widgets/smart_door/door_grid.dart index 425778a..920d5c0 100644 --- a/lib/features/devices/view/widgets/smart_door/door_grid.dart +++ b/lib/features/devices/view/widgets/smart_door/door_grid.dart @@ -69,22 +69,22 @@ class DoorLockGrid extends StatelessWidget { List> doorLockButtons = [ { 'title': 'Unlocking Records', - 'image': Assets.doorlockAssetsUnlockingRecords, + 'image': Assets.assetsIconsDoorlockAssetsUnlockingRecords, 'page': const UnlockingRecordsView(), }, { 'title': 'Memebers Managment', - 'image': Assets.doorlockAssetsMembersManagement, + 'image': Assets.assetsIconsDoorlockAssetsMembersManagement, 'page': const MembersManagementView(), }, { 'title': 'Temporary Password', - 'image': Assets.doorlockAssetsTemporaryPassword, + 'image': Assets.assetsIconsDoorlockAssetsTemporaryPassword, 'page': null, }, { 'title': 'Smart Linkage', - 'image': Assets.doorlockAssetsSmartLinkage, + 'image': Assets.assetsIconsDoorlockAssetsSmartLinkage, 'page': const SmartLinkgeView() }, ]; diff --git a/lib/features/devices/view/widgets/smart_door/door_interface.dart b/lib/features/devices/view/widgets/smart_door/door_interface.dart index 905d45d..bf5945f 100644 --- a/lib/features/devices/view/widgets/smart_door/door_interface.dart +++ b/lib/features/devices/view/widgets/smart_door/door_interface.dart @@ -42,7 +42,7 @@ class DoorInterface extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, diff --git a/lib/features/devices/view/widgets/smart_door/door_status_bar.dart b/lib/features/devices/view/widgets/smart_door/door_status_bar.dart index 1be19d1..2b2b761 100644 --- a/lib/features/devices/view/widgets/smart_door/door_status_bar.dart +++ b/lib/features/devices/view/widgets/smart_door/door_status_bar.dart @@ -12,8 +12,9 @@ class DoorLockStatusBar extends StatelessWidget { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SvgPicture.asset(Assets.iconsWifi), - SvgPicture.asset(Assets.dmOffPerOnchargOfflowOffpmOffstDefaultdmOff), + SvgPicture.asset(Assets.assetsIconsWifi), + SvgPicture.asset(Assets + .assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff), ], ); } diff --git a/lib/features/devices/view/widgets/smart_door/smart_linkage_view.dart b/lib/features/devices/view/widgets/smart_door/smart_linkage_view.dart index e50aeba..444fb35 100644 --- a/lib/features/devices/view/widgets/smart_door/smart_linkage_view.dart +++ b/lib/features/devices/view/widgets/smart_door/smart_linkage_view.dart @@ -25,7 +25,8 @@ class SmartLinkgeView extends StatelessWidget { SizedBox( width: 45, height: 40, - child: SvgPicture.asset(Assets.linkageIconsFamilyHome), + child: SvgPicture.asset( + Assets.assetsIconsLinkageIconsFamilyHome), ), const SizedBox(width: 15), const Expanded( @@ -62,7 +63,8 @@ class SmartLinkgeView extends StatelessWidget { SizedBox( width: 45, height: 40, - child: SvgPicture.asset(Assets.linkageIconsDoorLockAlarm), + child: SvgPicture.asset( + Assets.assetsIconsLinkageIconsDoorLockAlarm), ), const SizedBox(width: 15), const Expanded( diff --git a/lib/features/devices/view/widgets/smart_door/unlocking_records_view.dart b/lib/features/devices/view/widgets/smart_door/unlocking_records_view.dart index 9eb2061..2a20a38 100644 --- a/lib/features/devices/view/widgets/smart_door/unlocking_records_view.dart +++ b/lib/features/devices/view/widgets/smart_door/unlocking_records_view.dart @@ -48,13 +48,13 @@ class UnlockingRecordsView extends StatelessWidget { child: records[i]['method'] == UnlockingMethod.Fingerprint ? SvgPicture.asset(Assets - .unlockingMethodsIconsFingerprint) + .assetsIconsUnlockingMethodsIconsFingerprint) : records[i]['method'] == UnlockingMethod.Remote ? SvgPicture.asset(Assets - .unlockingMethodsIconsRemote) + .assetsIconsUnlockingMethodsIconsRemote) : SvgPicture.asset(Assets - .unlockingMethodsIconsFace), + .assetsIconsUnlockingMethodsIconsFace), ), const SizedBox( width: 13, diff --git a/lib/features/devices/view/widgets/three_gang/gang_switch.dart b/lib/features/devices/view/widgets/three_gang/gang_switch.dart index ff78992..2c1dd60 100644 --- a/lib/features/devices/view/widgets/three_gang/gang_switch.dart +++ b/lib/features/devices/view/widgets/three_gang/gang_switch.dart @@ -66,8 +66,8 @@ class GangSwitch extends StatelessWidget { child: Center(child: CircularProgressIndicator())) : SvgPicture.asset( control.value! - ? Assets.iconsLightSwitchOn - : Assets.iconsLightSwitchOff, + ? Assets.assetsIconsLightSwitchOn + : Assets.assetsIconsLightSwitchOff, fit: BoxFit.fill, ), ), diff --git a/lib/features/devices/view/widgets/three_gang/three_gang_interface.dart b/lib/features/devices/view/widgets/three_gang/three_gang_interface.dart index a12dfcb..d343d9b 100644 --- a/lib/features/devices/view/widgets/three_gang/three_gang_interface.dart +++ b/lib/features/devices/view/widgets/three_gang/three_gang_interface.dart @@ -40,7 +40,7 @@ class ThreeGangInterface extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, diff --git a/lib/features/menu/view/widgets/join_home/join_home_view.dart b/lib/features/menu/view/widgets/join_home/join_home_view.dart index 2be31b2..f860f31 100644 --- a/lib/features/menu/view/widgets/join_home/join_home_view.dart +++ b/lib/features/menu/view/widgets/join_home/join_home_view.dart @@ -16,7 +16,7 @@ class JoinHomeView extends StatelessWidget { child: Column( children: [ SvgPicture.asset( - Assets.homeManagementIconsJoinAHome, + Assets.assetsIconsMenuIconsHomeManagementIconsJoinAHome, width: 70, height: 70, ), diff --git a/lib/features/scene/view/scene_view.dart b/lib/features/scene/view/scene_view.dart index 28e87bd..d5267a6 100644 --- a/lib/features/scene/view/scene_view.dart +++ b/lib/features/scene/view/scene_view.dart @@ -50,7 +50,7 @@ class SceneView extends StatelessWidget { Image.asset( height: 50, width: 50, - Assets.iconsHot1, + Assets.assetsIconsHot1, fit: BoxFit.contain, ), const Icon( @@ -87,7 +87,7 @@ class SceneView extends StatelessWidget { Image.asset( height: 50, width: 50, - Assets.iconsWinter1, + Assets.assetsIconsWinter1, fit: BoxFit.contain, ), const Icon( diff --git a/lib/features/scene/view/widgets/scene_view_no_scenes.dart b/lib/features/scene/view/widgets/scene_view_no_scenes.dart index f497e2a..d3496dc 100644 --- a/lib/features/scene/view/widgets/scene_view_no_scenes.dart +++ b/lib/features/scene/view/widgets/scene_view_no_scenes.dart @@ -16,7 +16,7 @@ class SceneViewNoScenes extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( - Assets.imagesAutomation, + Assets.assetsImagesAutomation, scale: 1, opacity: const AlwaysStoppedAnimation(.5), width: 140, diff --git a/lib/features/shared_widgets/default_scaffold.dart b/lib/features/shared_widgets/default_scaffold.dart index 4dcc674..78e3fbc 100644 --- a/lib/features/shared_widgets/default_scaffold.dart +++ b/lib/features/shared_widgets/default_scaffold.dart @@ -51,7 +51,7 @@ class DefaultScaffold extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, opacity: 0.4, diff --git a/lib/features/shared_widgets/syncrow_logo.dart b/lib/features/shared_widgets/syncrow_logo.dart index 739227a..17166fe 100644 --- a/lib/features/shared_widgets/syncrow_logo.dart +++ b/lib/features/shared_widgets/syncrow_logo.dart @@ -14,7 +14,9 @@ class SyncrowLogo extends StatelessWidget { @override Widget build(BuildContext context) { - return Image.asset(isDark ? Assets.imagesBlackLogo : Assets.imagesWhiteLogo, - scale: 1, width: width); + return Image.asset( + isDark ? Assets.assetsImagesBlackLogo : Assets.assetsImagesWhiteLogo, + scale: 1, + width: width); } } diff --git a/lib/features/splash/view/splash_view.dart b/lib/features/splash/view/splash_view.dart index 06180a9..e2d7b7c 100644 --- a/lib/features/splash/view/splash_view.dart +++ b/lib/features/splash/view/splash_view.dart @@ -37,7 +37,7 @@ class SplashView extends StatelessWidget { decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( - Assets.imagesBackground, + Assets.assetsImagesBackground, ), fit: BoxFit.cover, ), @@ -48,14 +48,14 @@ class SplashView extends StatelessWidget { height: MediaQuery.sizeOf(context).height, decoration: const BoxDecoration( image: DecorationImage( - image: AssetImage(Assets.imagesVector), + image: AssetImage(Assets.assetsImagesVector), fit: BoxFit.cover, opacity: 0.9, ), ), ), SvgPicture.asset( - Assets.imagesLogo, + Assets.assetsImagesLogo, width: 240, ) ], diff --git a/lib/generated/Assets.assetsIconsDart b/lib/generated/Assets.assetsIconsDart new file mode 100644 index 0000000..e11bfb2 --- /dev/null +++ b/lib/generated/Assets.assetsIconsDart @@ -0,0 +1,636 @@ +class Assets { + Assets._(); + + /// Assets for assetsFontsAftikaRegular + /// assets/fonts/AftikaRegular.ttf + static const String assetsFontsAftikaRegular = "assets/fonts/AftikaRegular.ttf"; + + /// Assets for assetsIcons3GangSwitch + /// assets/icons/3GangSwitch.svg + static const String assetsIcons3GangSwitch = "assets/icons/3GangSwitch.svg"; + + /// Assets for assetsIconsAC + /// assets/icons/AC.svg + static const String assetsIconsAC = "assets/icons/AC.svg"; + + /// Assets for assetsIconsActive + /// assets/icons/active.svg + static const String assetsIconsActive = "assets/icons/active.svg"; + + /// Assets for assetsIconsAutomatedClock + /// assets/icons/automated_clock.svg + static const String assetsIconsAutomatedClock = "assets/icons/automated_clock.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff = "assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff = "assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff = "assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff = "assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff = "assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff = "assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff + /// assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff = "assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff + /// assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg + static const String assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff = "assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff = "assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff = "assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff = "assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff = "assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff = "assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff = "assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff + /// assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff = "assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOnstlowpmdmOff + /// assets/icons/battery/dmOff/perOnchargOnlowOnpmOnstlowpmdmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOnlowOnpmOnstlowpmdmOff = "assets/icons/battery/dmOff/perOnchargOnlowOnpmOnstlowpmdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn = "assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn = "assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn = "assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn = "assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn = "assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn = "assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn + /// assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn = "assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOnstlowpmdmOn + /// assets/icons/battery/dmOn/perOffchargOnlowOnpmOnstlowpmdmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOnlowOnpmOnstlowpmdmOn = "assets/icons/battery/dmOn/perOffchargOnlowOnpmOnstlowpmdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn = "assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn = "assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn = "assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn = "assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn = "assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn = "assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn + /// assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn = "assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOnstlowpmdmOn + /// assets/icons/battery/dmOn/perOnchargOnlowOnpmOnstlowpmdmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOnlowOnpmOnstlowpmdmOn = "assets/icons/battery/dmOn/perOnchargOnlowOnpmOnstlowpmdmOn.svg"; + + /// Assets for assetsIconsCO2 + /// assets/icons/CO2.svg + static const String assetsIconsCO2 = "assets/icons/CO2.svg"; + + /// Assets for assetsIconsColdMode + /// assets/icons/coldMode.svg + static const String assetsIconsColdMode = "assets/icons/coldMode.svg"; + + /// Assets for assetsIconsColorWheel + /// assets/icons/color_wheel.svg + static const String assetsIconsColorWheel = "assets/icons/color_wheel.svg"; + + /// Assets for assetsIconsCurtain + /// assets/icons/Curtain.svg + static const String assetsIconsCurtain = "assets/icons/Curtain.svg"; + + /// Assets for assetsIconsCurtainsIconCloseCurtain + /// assets/icons/curtainsIcon/closeCurtain.svg + static const String assetsIconsCurtainsIconCloseCurtain = "assets/icons/curtainsIcon/closeCurtain.svg"; + + /// Assets for assetsIconsCurtainsIconCurtainHolder + /// assets/icons/curtainsIcon/curtainHolder.svg + static const String assetsIconsCurtainsIconCurtainHolder = "assets/icons/curtainsIcon/curtainHolder.svg"; + + /// Assets for assetsIconsCurtainsIconOpenCurtain + /// assets/icons/curtainsIcon/openCurtain.svg + static const String assetsIconsCurtainsIconOpenCurtain = "assets/icons/curtainsIcon/openCurtain.svg"; + + /// Assets for assetsIconsCurtainsIconVerticalBlade + /// assets/icons/curtainsIcon/verticalBlade.svg + static const String assetsIconsCurtainsIconVerticalBlade = "assets/icons/curtainsIcon/verticalBlade.svg"; + + /// Assets for assetsIconsDashboard + /// assets/icons/dashboard.svg + static const String assetsIconsDashboard = "assets/icons/dashboard.svg"; + + /// Assets for assetsIconsDashboardFill + /// assets/icons/dashboard-fill.svg + static const String assetsIconsDashboardFill = "assets/icons/dashboard-fill.svg"; + + /// Assets for assetsIconsDevices + /// assets/icons/Devices.svg + static const String assetsIconsDevices = "assets/icons/Devices.svg"; + + /// Assets for assetsIconsDevicesFill + /// assets/icons/Devices-fill.svg + static const String assetsIconsDevicesFill = "assets/icons/Devices-fill.svg"; + + /// Assets for assetsIconsDoorLock + /// assets/icons/doorLock.svg + static const String assetsIconsDoorLock = "assets/icons/doorLock.svg"; + + /// Assets for assetsIconsDoorLockLinkage + /// assets/icons/DoorLockLinkage.svg + static const String assetsIconsDoorLockLinkage = "assets/icons/DoorLockLinkage.svg"; + + /// Assets for assetsIconsDoorLockLock + /// assets/icons/DoorLockLock.svg + static const String assetsIconsDoorLockLock = "assets/icons/DoorLockLock.svg"; + + /// Assets for assetsIconsDoorLockMembers + /// assets/icons/DoorLockMembers.svg + static const String assetsIconsDoorLockMembers = "assets/icons/DoorLockMembers.svg"; + + /// Assets for assetsIconsDoorLockPassword + /// assets/icons/DoorLockPassword.svg + static const String assetsIconsDoorLockPassword = "assets/icons/DoorLockPassword.svg"; + + /// Assets for assetsIconsDoorLockRecords + /// assets/icons/DoorLockRecords.svg + static const String assetsIconsDoorLockRecords = "assets/icons/DoorLockRecords.svg"; + + /// Assets for assetsIconsDoorlockAssetsBatteryIndicator + /// assets/icons/doorlock-assets/BatteryIndicator.svg + static const String assetsIconsDoorlockAssetsBatteryIndicator = "assets/icons/doorlock-assets/BatteryIndicator.svg"; + + /// Assets for assetsIconsDoorlockAssetsDoorlockButtonOne + /// assets/icons/doorlock-assets/doorlock-button-one.svg + static const String assetsIconsDoorlockAssetsDoorlockButtonOne = "assets/icons/doorlock-assets/doorlock-button-one.svg"; + + /// Assets for assetsIconsDoorlockAssetsDoorlockButtonTwo + /// assets/icons/doorlock-assets/doorlock-button-two.svg + static const String assetsIconsDoorlockAssetsDoorlockButtonTwo = "assets/icons/doorlock-assets/doorlock-button-two.svg"; + + /// Assets for assetsIconsDoorlockAssetsLockIcon + /// assets/icons/doorlock-assets/lockIcon.svg + static const String assetsIconsDoorlockAssetsLockIcon = "assets/icons/doorlock-assets/lockIcon.svg"; + + /// Assets for assetsIconsDoorlockAssetsMembersManagement + /// assets/icons/doorlock-assets/members-management.svg + static const String assetsIconsDoorlockAssetsMembersManagement = "assets/icons/doorlock-assets/members-management.svg"; + + /// Assets for assetsIconsDoorlockAssetsSmartLinkage + /// assets/icons/doorlock-assets/smart-linkage.svg + static const String assetsIconsDoorlockAssetsSmartLinkage = "assets/icons/doorlock-assets/smart-linkage.svg"; + + /// Assets for assetsIconsDoorlockAssetsTemporaryPassword + /// assets/icons/doorlock-assets/temporary-password.svg + static const String assetsIconsDoorlockAssetsTemporaryPassword = "assets/icons/doorlock-assets/temporary-password.svg"; + + /// Assets for assetsIconsDoorlockAssetsUnlockingRecords + /// assets/icons/doorlock-assets/unlocking-records.svg + static const String assetsIconsDoorlockAssetsUnlockingRecords = "assets/icons/doorlock-assets/unlocking-records.svg"; + + /// Assets for assetsIconsFacebook + /// assets/icons/Facebook.svg + static const String assetsIconsFacebook = "assets/icons/Facebook.svg"; + + /// Assets for assetsIconsFan0 + /// assets/icons/fan-0.svg + static const String assetsIconsFan0 = "assets/icons/fan-0.svg"; + + /// Assets for assetsIconsFan1 + /// assets/icons/fan-1.svg + static const String assetsIconsFan1 = "assets/icons/fan-1.svg"; + + /// Assets for assetsIconsFan2 + /// assets/icons/fan-2.svg + static const String assetsIconsFan2 = "assets/icons/fan-2.svg"; + + /// Assets for assetsIconsFan3 + /// assets/icons/fan-3.svg + static const String assetsIconsFan3 = "assets/icons/fan-3.svg"; + + /// Assets for assetsIconsFilter + /// assets/icons/filter.png + static const String assetsIconsFilter = "assets/icons/filter.png"; + + /// Assets for assetsIconsFrequency + /// assets/icons/frequency.svg + static const String assetsIconsFrequency = "assets/icons/frequency.svg"; + + /// Assets for assetsIconsGang + /// assets/icons/gang.svg + static const String assetsIconsGang = "assets/icons/gang.svg"; + + /// Assets for assetsIconsGateway + /// assets/icons/Gateway.svg + static const String assetsIconsGateway = "assets/icons/Gateway.svg"; + + /// Assets for assetsIconsGoogle + /// assets/icons/Google.svg + static const String assetsIconsGoogle = "assets/icons/Google.svg"; + + /// Assets for assetsIconsHome + /// assets/icons/home.svg + static const String assetsIconsHome = "assets/icons/home.svg"; + + /// Assets for assetsIconsHot1 + /// assets/icons/hot1.jpg + static const String assetsIconsHot1 = "assets/icons/hot1.jpg"; + + /// Assets for assetsIconsKalvin + /// assets/icons/kalvin.svg + static const String assetsIconsKalvin = "assets/icons/kalvin.svg"; + + /// Assets for assetsIconsLayout + /// assets/icons/Layout.svg + static const String assetsIconsLayout = "assets/icons/Layout.svg"; + + /// Assets for assetsIconsLayoutFill + /// assets/icons/Layout-fill.svg + static const String assetsIconsLayoutFill = "assets/icons/Layout-fill.svg"; + + /// Assets for assetsIconsLight + /// assets/icons/Light.svg + static const String assetsIconsLight = "assets/icons/Light.svg"; + + /// Assets for assetsIconsLightSwitchOff + /// assets/icons/lightSwitchOff.svg + static const String assetsIconsLightSwitchOff = "assets/icons/lightSwitchOff.svg"; + + /// Assets for assetsIconsLightSwitchOn + /// assets/icons/lightSwitchOn.svg + static const String assetsIconsLightSwitchOn = "assets/icons/lightSwitchOn.svg"; + + /// Assets for assetsIconsLinkageIconsDoorLockAlarm + /// assets/icons/linkageIcons/doorLockAlarm.svg + static const String assetsIconsLinkageIconsDoorLockAlarm = "assets/icons/linkageIcons/doorLockAlarm.svg"; + + /// Assets for assetsIconsLinkageIconsFamilyHome + /// assets/icons/linkageIcons/familyHome.svg + static const String assetsIconsLinkageIconsFamilyHome = "assets/icons/linkageIcons/familyHome.svg"; + + /// Assets for assetsIconsLock + /// assets/icons/lock.svg + static const String assetsIconsLock = "assets/icons/lock.svg"; + + /// Assets for assetsIconsLogo + /// assets/icons/logo.png + static const String assetsIconsLogo = "assets/icons/logo.png"; + + /// Assets for assetsIconsMenu + /// assets/icons/Menu.svg + static const String assetsIconsMenu = "assets/icons/Menu.svg"; + + /// Assets for assetsIconsMenuFill + /// assets/icons/Menu-fill.svg + static const String assetsIconsMenuFill = "assets/icons/Menu-fill.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsClearCach + /// assets/icons/MenuIcons/GeneralSettingsIcons/clearCach.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsClearCach = "assets/icons/MenuIcons/GeneralSettingsIcons/clearCach.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsLanguage + /// assets/icons/MenuIcons/GeneralSettingsIcons/language.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsLanguage = "assets/icons/MenuIcons/GeneralSettingsIcons/language.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsNetworkDiagnosis + /// assets/icons/MenuIcons/GeneralSettingsIcons/networkDiagnosis.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsNetworkDiagnosis = "assets/icons/MenuIcons/GeneralSettingsIcons/networkDiagnosis.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsTemperatureUnit + /// assets/icons/MenuIcons/GeneralSettingsIcons/temperatureUnit.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsTemperatureUnit = "assets/icons/MenuIcons/GeneralSettingsIcons/temperatureUnit.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsTouchTone + /// assets/icons/MenuIcons/GeneralSettingsIcons/touchTone.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsTouchTone = "assets/icons/MenuIcons/GeneralSettingsIcons/touchTone.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsVoiceAssistant + /// assets/icons/MenuIcons/GeneralSettingsIcons/voiceAssistant.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsVoiceAssistant = "assets/icons/MenuIcons/GeneralSettingsIcons/voiceAssistant.svg"; + + /// Assets for assetsIconsMenuIconsHomeManagementIconsCreateHome + /// assets/icons/MenuIcons/HomeManagementIcons/CreateHome.svg + static const String assetsIconsMenuIconsHomeManagementIconsCreateHome = "assets/icons/MenuIcons/HomeManagementIcons/CreateHome.svg"; + + /// Assets for assetsIconsMenuIconsHomeManagementIconsJoinAHome + /// assets/icons/MenuIcons/HomeManagementIcons/joinAHome.svg + static const String assetsIconsMenuIconsHomeManagementIconsJoinAHome = "assets/icons/MenuIcons/HomeManagementIcons/joinAHome.svg"; + + /// Assets for assetsIconsMenuIconsHomeManagementIconsManageYourHome + /// assets/icons/MenuIcons/HomeManagementIcons/ManageYourHome.svg + static const String assetsIconsMenuIconsHomeManagementIconsManageYourHome = "assets/icons/MenuIcons/HomeManagementIcons/ManageYourHome.svg"; + + /// Assets for assetsIconsMenuIconsLeagalInfoIconsAbout + /// assets/icons/MenuIcons/LeagalInfoIcons/About.svg + static const String assetsIconsMenuIconsLeagalInfoIconsAbout = "assets/icons/MenuIcons/LeagalInfoIcons/About.svg"; + + /// Assets for assetsIconsMenuIconsLeagalInfoIconsPrivacyPolicy + /// assets/icons/MenuIcons/LeagalInfoIcons/PrivacyPolicy.svg + static const String assetsIconsMenuIconsLeagalInfoIconsPrivacyPolicy = "assets/icons/MenuIcons/LeagalInfoIcons/PrivacyPolicy.svg"; + + /// Assets for assetsIconsMenuIconsLeagalInfoIconsUserAgreement + /// assets/icons/MenuIcons/LeagalInfoIcons/UserAgreement.svg + static const String assetsIconsMenuIconsLeagalInfoIconsUserAgreement = "assets/icons/MenuIcons/LeagalInfoIcons/UserAgreement.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsAlerts + /// assets/icons/MenuIcons/MessagesCenterIcons/Alerts.svg + static const String assetsIconsMenuIconsMessagesCenterIconsAlerts = "assets/icons/MenuIcons/MessagesCenterIcons/Alerts.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsFAQs + /// assets/icons/MenuIcons/MessagesCenterIcons/FAQs.svg + static const String assetsIconsMenuIconsMessagesCenterIconsFAQs = "assets/icons/MenuIcons/MessagesCenterIcons/FAQs.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsHelpAndFeedback + /// assets/icons/MenuIcons/MessagesCenterIcons/HelpAndFeedback.svg + static const String assetsIconsMenuIconsMessagesCenterIconsHelpAndFeedback = "assets/icons/MenuIcons/MessagesCenterIcons/HelpAndFeedback.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsMessages + /// assets/icons/MenuIcons/MessagesCenterIcons/Messages.svg + static const String assetsIconsMenuIconsMessagesCenterIconsMessages = "assets/icons/MenuIcons/MessagesCenterIcons/Messages.svg"; + + /// Assets for assetsIconsMenuIconsSecurityAndPrivacyIconsPrivacy + /// assets/icons/MenuIcons/SecurityAndPrivacyIcons/Privacy.svg + static const String assetsIconsMenuIconsSecurityAndPrivacyIconsPrivacy = "assets/icons/MenuIcons/SecurityAndPrivacyIcons/Privacy.svg"; + + /// Assets for assetsIconsMenuIconsSecurityAndPrivacyIconsSecurty + /// assets/icons/MenuIcons/SecurityAndPrivacyIcons/Securty.svg + static const String assetsIconsMenuIconsSecurityAndPrivacyIconsSecurty = "assets/icons/MenuIcons/SecurityAndPrivacyIcons/Securty.svg"; + + /// Assets for assetsIconsMinus + /// assets/icons/minus.svg + static const String assetsIconsMinus = "assets/icons/minus.svg"; + + /// Assets for assetsIconsPlus + /// assets/icons/plus.svg + static const String assetsIconsPlus = "assets/icons/plus.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsDistance + /// assets/icons/presence-sensor-assets/Distance.svg + static const String assetsIconsPresenceSensorAssetsDistance = "assets/icons/presence-sensor-assets/Distance.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsEmpty + /// assets/icons/presence-sensor-assets/Empty.svg + static const String assetsIconsPresenceSensorAssetsEmpty = "assets/icons/presence-sensor-assets/Empty.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsHelpDescription + /// assets/icons/presence-sensor-assets/help-description.svg + static const String assetsIconsPresenceSensorAssetsHelpDescription = "assets/icons/presence-sensor-assets/help-description.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsIlluminanceRecord + /// assets/icons/presence-sensor-assets/Illuminance-Record.svg + static const String assetsIconsPresenceSensorAssetsIlluminanceRecord = "assets/icons/presence-sensor-assets/Illuminance-Record.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsIlluminanceValue + /// assets/icons/presence-sensor-assets/Illuminance-Value.svg + static const String assetsIconsPresenceSensorAssetsIlluminanceValue = "assets/icons/presence-sensor-assets/Illuminance-Value.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsIndicator + /// assets/icons/presence-sensor-assets/Indicator.svg + static const String assetsIconsPresenceSensorAssetsIndicator = "assets/icons/presence-sensor-assets/Indicator.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsInductionRecording + /// assets/icons/presence-sensor-assets/induction-recording.svg + static const String assetsIconsPresenceSensorAssetsInductionRecording = "assets/icons/presence-sensor-assets/induction-recording.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsParameterSettings + /// assets/icons/presence-sensor-assets/parameter-settings.svg + static const String assetsIconsPresenceSensorAssetsParameterSettings = "assets/icons/presence-sensor-assets/parameter-settings.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsPresence + /// assets/icons/presence-sensor-assets/Presence.svg + static const String assetsIconsPresenceSensorAssetsPresence = "assets/icons/presence-sensor-assets/Presence.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsPresenceSensorMotion + /// assets/icons/presence-sensor-assets/presence-sensor-motion.svg + static const String assetsIconsPresenceSensorAssetsPresenceSensorMotion = "assets/icons/presence-sensor-assets/presence-sensor-motion.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsRecord + /// assets/icons/presence-sensor-assets/Record.svg + static const String assetsIconsPresenceSensorAssetsRecord = "assets/icons/presence-sensor-assets/Record.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsTime + /// assets/icons/presence-sensor-assets/Time.svg + static const String assetsIconsPresenceSensorAssetsTime = "assets/icons/presence-sensor-assets/Time.svg"; + + /// Assets for assetsIconsRoutines + /// assets/icons/Routines.svg + static const String assetsIconsRoutines = "assets/icons/Routines.svg"; + + /// Assets for assetsIconsRoutinesFill + /// assets/icons/Routines-fill.svg + static const String assetsIconsRoutinesFill = "assets/icons/Routines-fill.svg"; + + /// Assets for assetsIconsScan + /// assets/icons/Scan.svg + static const String assetsIconsScan = "assets/icons/Scan.svg"; + + /// Assets for assetsIconsScreen + /// assets/icons/Screen.svg + static const String assetsIconsScreen = "assets/icons/Screen.svg"; + + /// Assets for assetsIconsSensors + /// assets/icons/sensors.svg + static const String assetsIconsSensors = "assets/icons/sensors.svg"; + + /// Assets for assetsIconsSettings + /// assets/icons/settings.svg + static const String assetsIconsSettings = "assets/icons/settings.svg"; + + /// Assets for assetsIconsSettings + /// assets/icons/settings.png + static const String assetsIconsSettings = "assets/icons/settings.png"; + + /// Assets for assetsIconsSummer + /// assets/icons/Summer.svg + static const String assetsIconsSummer = "assets/icons/Summer.svg"; + + /// Assets for assetsIconsSummerMode + /// assets/icons/summer_mode.svg + static const String assetsIconsSummerMode = "assets/icons/summer_mode.svg"; + + /// Assets for assetsIconsSunnyMode + /// assets/icons/sunnyMode.svg + static const String assetsIconsSunnyMode = "assets/icons/sunnyMode.svg"; + + /// Assets for assetsIconsSustainability + /// assets/icons/sustainability.svg + static const String assetsIconsSustainability = "assets/icons/sustainability.svg"; + + /// Assets for assetsIconsUnlockingMethodsIconsFace + /// assets/icons/unlockingMethodsIcons/face.svg + static const String assetsIconsUnlockingMethodsIconsFace = "assets/icons/unlockingMethodsIcons/face.svg"; + + /// Assets for assetsIconsUnlockingMethodsIconsFingerprint + /// assets/icons/unlockingMethodsIcons/fingerprint.svg + static const String assetsIconsUnlockingMethodsIconsFingerprint = "assets/icons/unlockingMethodsIcons/fingerprint.svg"; + + /// Assets for assetsIconsUnlockingMethodsIconsRemote + /// assets/icons/unlockingMethodsIcons/remote.svg + static const String assetsIconsUnlockingMethodsIconsRemote = "assets/icons/unlockingMethodsIcons/remote.svg"; + + /// Assets for assetsIconsVector + /// assets/icons/Vector.svg + static const String assetsIconsVector = "assets/icons/Vector.svg"; + + /// Assets for assetsIconsVector1 + /// assets/icons/Vector-1.svg + static const String assetsIconsVector1 = "assets/icons/Vector-1.svg"; + + /// Assets for assetsIconsVoltMeter + /// assets/icons/volt-meter.svg + static const String assetsIconsVoltMeter = "assets/icons/volt-meter.svg"; + + /// Assets for assetsIconsWifi + /// assets/icons/Wifi.svg + static const String assetsIconsWifi = "assets/icons/Wifi.svg"; + + /// Assets for assetsIconsWindyMode + /// assets/icons/windyMode.svg + static const String assetsIconsWindyMode = "assets/icons/windyMode.svg"; + + /// Assets for assetsIconsWinter + /// assets/icons/Winter.svg + static const String assetsIconsWinter = "assets/icons/Winter.svg"; + + /// Assets for assetsIconsWinter1 + /// assets/icons/winter1.jpg + static const String assetsIconsWinter1 = "assets/icons/winter1.jpg"; + + /// Assets for assetsIconsWinterMode + /// assets/icons/Winter_mode.svg + static const String assetsIconsWinterMode = "assets/icons/Winter_mode.svg"; + + /// Assets for assetsImagesAutomation + /// assets/images/automation.jpg + static const String assetsImagesAutomation = "assets/images/automation.jpg"; + + /// Assets for assetsImagesBackground + /// assets/images/Background.png + static const String assetsImagesBackground = "assets/images/Background.png"; + + /// Assets for assetsImagesBlackLogo + /// assets/images/black-logo.png + static const String assetsImagesBlackLogo = "assets/images/black-logo.png"; + + /// Assets for assetsImagesBlind + /// assets/images/blind.png + static const String assetsImagesBlind = "assets/images/blind.png"; + + /// Assets for assetsImagesBoxEmpty + /// assets/images/box-empty.jpg + static const String assetsImagesBoxEmpty = "assets/images/box-empty.jpg"; + + /// Assets for assetsImagesCurtain + /// assets/images/curtain.png + static const String assetsImagesCurtain = "assets/images/curtain.png"; + + /// Assets for assetsImagesDown + /// assets/images/Down.png + static const String assetsImagesDown = "assets/images/Down.png"; + + /// Assets for assetsImagesHorizintalBlade + /// assets/images/HorizintalBlade.png + static const String assetsImagesHorizintalBlade = "assets/images/HorizintalBlade.png"; + + /// Assets for assetsImagesLogo + /// assets/images/Logo.svg + static const String assetsImagesLogo = "assets/images/Logo.svg"; + + /// Assets for assetsImagesLogoHorizontal + /// assets/images/logo_horizontal.png + static const String assetsImagesLogoHorizontal = "assets/images/logo_horizontal.png"; + + /// Assets for assetsImagesPause + /// assets/images/Pause.png + static const String assetsImagesPause = "assets/images/Pause.png"; + + /// Assets for assetsImagesTestDash + /// assets/images/test_dash.png + static const String assetsImagesTestDash = "assets/images/test_dash.png"; + + /// Assets for assetsImagesTestDash2 + /// assets/images/test_dash2.png + static const String assetsImagesTestDash2 = "assets/images/test_dash2.png"; + + /// Assets for assetsImagesUp + /// assets/images/Up.png + static const String assetsImagesUp = "assets/images/Up.png"; + + /// Assets for assetsImagesVector + /// assets/images/Vector.png + static const String assetsImagesVector = "assets/images/Vector.png"; + + /// Assets for assetsImagesWhiteLogo + /// assets/images/white-logo.png + static const String assetsImagesWhiteLogo = "assets/images/white-logo.png"; + + /// Assets for assetsImagesWindow + /// assets/images/Window.png + static const String assetsImagesWindow = "assets/images/Window.png"; +} + diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart index 15d94ec..749aba6 100644 --- a/lib/generated/assets.dart +++ b/lib/generated/assets.dart @@ -1,237 +1,752 @@ -///This file is automatically generated. DO NOT EDIT, all your changes would be lost. class Assets { Assets._(); - static const String assetsIconsSettings = 'assets/icons/settings.svg'; - static const String dmOffPerOffchargOfflowOffpmOffstChargeddmOff = - 'assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg'; - static const String dmOffPerOffchargOfflowOffpmOffstDefaultdmOff = - 'assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg'; - static const String dmOffPerOffchargOfflowOffpmOnstChargeddmOff = - 'assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg'; - static const String dmOffPerOffchargOfflowOnpmOffstDefaultdmOff = - 'assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg'; - static const String dmOffPerOffchargOfflowOnpmOnstDefaultdmOff = - 'assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg'; - static const String dmOffPerOffchargOnlowOffpmOffstChargeddmOff = - 'assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg'; - static const String dmOffPerOffchargOnlowOnpmOffstlowBatterydmOff = - 'assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg'; - static const String dmOffPerOffchargOnlowOnpmOnstlowpmdmOff = - 'assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg'; - static const String dmOffPerOnchargOfflowOffpmOffstChargeddmOff = - 'assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg'; - static const String dmOffPerOnchargOfflowOffpmOffstDefaultdmOff = - 'assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg'; - static const String dmOffPerOnchargOfflowOffpmOnstChargeddmOff = - 'assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg'; - static const String dmOffPerOnchargOfflowOnpmOffstDefaultdmOff = - 'assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg'; - static const String dmOffPerOnchargOfflowOnpmOnstDefaultdmOff = - 'assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg'; - static const String dmOffPerOnchargOnlowOffpmOffstChargeddmOff = - 'assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg'; - static const String dmOffPerOnchargOnlowOnpmOffstlowBatterydmOff = - 'assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg'; - static const String dmOffPerOnchargOnlowOnpmOnstlowpmdmOff = - 'assets/icons/battery/dmOff/perOnchargOnlowOnpmOnstlowpmdmOff.svg'; - static const String dmOnPerOffchargOfflowOffpmOffstChargeddmOn = - 'assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg'; - static const String dmOnPerOffchargOfflowOffpmOffstDefaultdmOn = - 'assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg'; - static const String dmOnPerOffchargOfflowOffpmOnstChargeddmOn = - 'assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg'; - static const String dmOnPerOffchargOfflowOnpmOffstDefaultdmOn = - 'assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg'; - static const String dmOnPerOffchargOfflowOnpmOnstDefaultdmOn = - 'assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg'; - static const String dmOnPerOffchargOnlowOffpmOffstChargeddmOn = - 'assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg'; - static const String dmOnPerOffchargOnlowOnpmOffstlowBatterydmOn = - 'assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg'; - static const String dmOnPerOffchargOnlowOnpmOnstlowpmdmOn = - 'assets/icons/battery/dmOn/perOffchargOnlowOnpmOnstlowpmdmOn.svg'; - static const String dmOnPerOnchargOfflowOffpmOffstChargeddmOn = - 'assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg'; - static const String dmOnPerOnchargOfflowOffpmOffstDefaultdmOn = - 'assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg'; - static const String dmOnPerOnchargOfflowOffpmOnstChargeddmOn = - 'assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg'; - static const String dmOnPerOnchargOfflowOnpmOffstDefaultdmOn = - 'assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg'; - static const String dmOnPerOnchargOfflowOnpmOnstDefaultdmOn = - 'assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg'; - static const String dmOnPerOnchargOnlowOffpmOffstChargeddmOn = - 'assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg'; - static const String dmOnPerOnchargOnlowOnpmOffstlowBatterydmOn = - 'assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg'; - static const String dmOnPerOnchargOnlowOnpmOnstlowpmdmOn = - 'assets/icons/battery/dmOn/perOnchargOnlowOnpmOnstlowpmdmOn.svg'; - static const String doorlockAssetsBatteryIndicator = - 'assets/icons/doorlock-assets/BatteryIndicator.svg'; - static const String doorlockAssetsDoorlockButtonOne = - 'assets/icons/doorlock-assets/doorlock-button-one.svg'; - static const String doorlockAssetsDoorlockButtonTwo = - 'assets/icons/doorlock-assets/doorlock-button-two.svg'; - static const String doorlockAssetsLockIcon = - 'assets/icons/doorlock-assets/lockIcon.svg'; - static const String doorlockAssetsMembersManagement = - 'assets/icons/doorlock-assets/members-management.svg'; - static const String doorlockAssetsSmartLinkage = - 'assets/icons/doorlock-assets/smart-linkage.svg'; - static const String doorlockAssetsTemporaryPassword = - 'assets/icons/doorlock-assets/temporary-password.svg'; - static const String doorlockAssetsUnlockingRecords = - 'assets/icons/doorlock-assets/unlocking-records.svg'; - static const String fontsAftikaRegular = 'assets/fonts/AftikaRegular.ttf'; - static const String generalSettingsIconsClearCach = - 'assets/icons/MenuIcons/GeneralSettingsIcons/clearCach.svg'; - static const String generalSettingsIconsLanguage = - 'assets/icons/MenuIcons/GeneralSettingsIcons/language.svg'; - static const String generalSettingsIconsNetworkDiagnosis = - 'assets/icons/MenuIcons/GeneralSettingsIcons/networkDiagnosis.svg'; - static const String generalSettingsIconsTemperatureUnit = - 'assets/icons/MenuIcons/GeneralSettingsIcons/temperatureUnit.svg'; - static const String generalSettingsIconsTouchTone = - 'assets/icons/MenuIcons/GeneralSettingsIcons/touchTone.svg'; - static const String generalSettingsIconsVoiceAssistant = - 'assets/icons/MenuIcons/GeneralSettingsIcons/voiceAssistant.svg'; - static const String homeManagementIconsCreateHome = - 'assets/icons/MenuIcons/HomeManagementIcons/CreateHome.svg'; - static const String homeManagementIconsJoinAHome = - 'assets/icons/MenuIcons/HomeManagementIcons/joinAHome.svg'; - static const String homeManagementIconsManageYourHome = - 'assets/icons/MenuIcons/HomeManagementIcons/ManageYourHome.svg'; - static const String icons3GangSwitch = 'assets/icons/3GangSwitch.svg'; - static const String iconsAC = 'assets/icons/AC.svg'; - static const String iconsActive = 'assets/icons/active.svg'; - static const String iconsAutomatedClock = 'assets/icons/automated_clock.svg'; - static const String iconsCO2 = 'assets/icons/CO2.svg'; - static const String iconsColdMode = 'assets/icons/coldMode.svg'; - static const String iconsColorWheel = 'assets/icons/color_wheel.svg'; - static const String iconsCurtain = 'assets/icons/Curtain.svg'; - static const String iconsDashboard = 'assets/icons/dashboard.svg'; - static const String iconsDashboardFill = 'assets/icons/dashboard-fill.svg'; - static const String iconsDevices = 'assets/icons/Devices.svg'; - static const String iconsDevicesFill = 'assets/icons/Devices-fill.svg'; - static const String iconsDoorLock = 'assets/icons/doorLock.svg'; - static const String iconsDoorLockLinkage = 'assets/icons/DoorLockLinkage.svg'; - static const String iconsDoorLockLock = 'assets/icons/DoorLockLock.svg'; - static const String iconsDoorLockMembers = 'assets/icons/DoorLockMembers.svg'; - static const String iconsDoorLockPassword = - 'assets/icons/DoorLockPassword.svg'; - static const String iconsDoorLockRecords = 'assets/icons/DoorLockRecords.svg'; - static const String iconsFacebook = 'assets/icons/Facebook.svg'; - static const String iconsFan0 = 'assets/icons/fan-0.svg'; - static const String iconsFan1 = 'assets/icons/fan-1.svg'; - static const String iconsFan2 = 'assets/icons/fan-2.svg'; - static const String iconsFan3 = 'assets/icons/fan-3.svg'; - static const String iconsFilter = 'assets/icons/filter.png'; - static const String iconsFrequency = 'assets/icons/frequency.svg'; - static const String iconsGang = 'assets/icons/gang.svg'; - static const String iconsGateway = 'assets/icons/Gateway.svg'; - static const String iconsGoogle = 'assets/icons/Google.svg'; - static const String iconsHome = 'assets/icons/home.svg'; - static const String iconsHot1 = 'assets/icons/hot1.jpg'; - static const String iconsKalvin = 'assets/icons/kalvin.svg'; - static const String iconsLayout = 'assets/icons/Layout.svg'; - static const String iconsLayoutFill = 'assets/icons/Layout-fill.svg'; - static const String iconsLight = 'assets/icons/Light.svg'; - static const String iconsLightSwitchOff = 'assets/icons/lightSwitchOff.svg'; - static const String iconsLightSwitchOn = 'assets/icons/lightSwitchOn.svg'; - static const String iconsLock = 'assets/icons/lock.svg'; - static const String iconsLogo = 'assets/icons/logo.png'; - static const String iconsMenu = 'assets/icons/Menu.svg'; - static const String iconsMenuFill = 'assets/icons/Menu-fill.svg'; - static const String iconsMinus = 'assets/icons/minus.svg'; - static const String iconsPlus = 'assets/icons/plus.svg'; - static const String iconsRoutines = 'assets/icons/Routines.svg'; - static const String iconsRoutinesFill = 'assets/icons/Routines-fill.svg'; - static const String iconsScan = 'assets/icons/Scan.svg'; - static const String iconsScreen = 'assets/icons/Screen.svg'; - static const String iconsSensors = 'assets/icons/sensors.svg'; - static const String iconsSettings = 'assets/icons/settings.png'; - static const String iconsSummer = 'assets/icons/Summer.svg'; - static const String iconsSummerMode = 'assets/icons/summer_mode.svg'; - static const String iconsSunnyMode = 'assets/icons/sunnyMode.svg'; - static const String iconsSustainability = 'assets/icons/sustainability.svg'; - static const String iconsVector = 'assets/icons/Vector.svg'; - static const String iconsVector1 = 'assets/icons/Vector-1.svg'; - static const String iconsVoltMeter = 'assets/icons/volt-meter.svg'; - static const String iconsWifi = 'assets/icons/Wifi.svg'; - static const String iconsWindyMode = 'assets/icons/windyMode.svg'; - static const String iconsWinter = 'assets/icons/Winter.svg'; - static const String iconsWinter1 = 'assets/icons/winter1.jpg'; - static const String iconsWinterMode = 'assets/icons/Winter_mode.svg'; - static const String imagesAutomation = 'assets/images/automation.jpg'; - static const String imagesBackground = 'assets/images/Background.png'; - static const String imagesBlackLogo = 'assets/images/black-logo.png'; - static const String imagesBlind = 'assets/images/blind.png'; - static const String imagesBoxEmpty = 'assets/images/box-empty.jpg'; - static const String imagesCurtain = 'assets/images/curtain.png'; - static const String imagesDown = 'assets/images/Down.png'; - static const String imagesHorizintalBlade = - 'assets/images/HorizintalBlade.png'; - static const String imagesLogo = 'assets/images/Logo.svg'; - static const String imagesLogoHorizontal = - 'assets/images/logo_horizontal.png'; - static const String imagesPause = 'assets/images/Pause.png'; - static const String imagesTestDash = 'assets/images/test_dash.png'; - static const String imagesTestDash2 = 'assets/images/test_dash2.png'; - static const String imagesUp = 'assets/images/Up.png'; - static const String imagesVector = 'assets/images/Vector.png'; - static const String imagesWhiteLogo = 'assets/images/white-logo.png'; - static const String imagesWindow = 'assets/images/Window.png'; - static const String leagalInfoIconsAbout = - 'assets/icons/MenuIcons/LeagalInfoIcons/About.svg'; - static const String leagalInfoIconsPrivacyPolicy = - 'assets/icons/MenuIcons/LeagalInfoIcons/PrivacyPolicy.svg'; - static const String leagalInfoIconsUserAgreement = - 'assets/icons/MenuIcons/LeagalInfoIcons/UserAgreement.svg'; - static const String linkageIconsDoorLockAlarm = - 'assets/icons/linkageIcons/doorLockAlarm.svg'; - static const String linkageIconsFamilyHome = - 'assets/icons/linkageIcons/familyHome.svg'; - static const String messagesCenterIconsAlerts = - 'assets/icons/MenuIcons/MessagesCenterIcons/Alerts.svg'; - static const String messagesCenterIconsFAQs = - 'assets/icons/MenuIcons/MessagesCenterIcons/FAQs.svg'; - static const String messagesCenterIconsHelpAndFeedback = - 'assets/icons/MenuIcons/MessagesCenterIcons/HelpAndFeedback.svg'; - static const String messagesCenterIconsMessages = - 'assets/icons/MenuIcons/MessagesCenterIcons/Messages.svg'; - static const String presenceSensorAssetsDistance = - 'assets/icons/presence-sensor-assets/Distance.svg'; - static const String presenceSensorAssetsEmpty = - 'assets/icons/presence-sensor-assets/Empty.svg'; - static const String presenceSensorAssetsHelpDescription = - 'assets/icons/presence-sensor-assets/help-description.svg'; - static const String presenceSensorAssetsIlluminanceRecord = - 'assets/icons/presence-sensor-assets/Illuminance-Record.svg'; - static const String presenceSensorAssetsIlluminanceValue = - 'assets/icons/presence-sensor-assets/Illuminance-Value.svg'; - static const String presenceSensorAssetsIndicator = - 'assets/icons/presence-sensor-assets/Indicator.svg'; - static const String presenceSensorAssetsInductionRecording = - 'assets/icons/presence-sensor-assets/induction-recording.svg'; - static const String presenceSensorAssetsParameterSettings = - 'assets/icons/presence-sensor-assets/parameter-settings.svg'; - static const String presenceSensorAssetsPresence = - 'assets/icons/presence-sensor-assets/Presence.svg'; - static const String presenceSensorAssetsPresenceSensorMotion = - 'assets/icons/presence-sensor-assets/presence-sensor-motion.svg'; - static const String presenceSensorAssetsRecord = - 'assets/icons/presence-sensor-assets/Record.svg'; - static const String presenceSensorAssetsTime = - 'assets/icons/presence-sensor-assets/Time.svg'; - static const String securityAndPrivacyIconsPrivacy = - 'assets/icons/MenuIcons/SecurityAndPrivacyIcons/Privacy.svg'; - static const String securityAndPrivacyIconsSecurty = - 'assets/icons/MenuIcons/SecurityAndPrivacyIcons/Securty.svg'; - static const String unlockingMethodsIconsFace = - 'assets/icons/unlockingMethodsIcons/face.svg'; - static const String unlockingMethodsIconsFingerprint = - 'assets/icons/unlockingMethodsIcons/fingerprint.svg'; - static const String unlockingMethodsIconsRemote = - 'assets/icons/unlockingMethodsIcons/remote.svg'; + /// Assets for assetsFontsAftikaRegular + /// assets/fonts/AftikaRegular.ttf + static const String assetsFontsAftikaRegular = + "assets/fonts/AftikaRegular.ttf"; + + /// Assets for assetsIcons3GangSwitch + /// assets/icons/3GangSwitch.svg + static const String assetsIcons3GangSwitch = "assets/icons/3GangSwitch.svg"; + + /// Assets for assetsIconsAC + /// assets/icons/AC.svg + static const String assetsIconsAC = "assets/icons/AC.svg"; + + /// Assets for assetsIconsActive + /// assets/icons/active.svg + static const String assetsIconsActive = "assets/icons/active.svg"; + + /// Assets for assetsIconsAutomatedClock + /// assets/icons/automated_clock.svg + static const String assetsIconsAutomatedClock = + "assets/icons/automated_clock.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff = + "assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff = + "assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff = + "assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff = + "assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff + /// assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff = + "assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff = + "assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff + /// assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff = + "assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff + /// assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg + static const String + assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff = + "assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg + static const String + assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff = + "assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg + static const String + assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff = + "assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg + static const String + assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff = + "assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg + static const String + assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff = + "assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff + /// assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg + static const String + assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff = + "assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff + /// assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg + static const String + assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff = + "assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff + /// assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg + static const String + assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff = + "assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg"; + + /// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOnstlowpmdmOff + /// assets/icons/battery/dmOff/perOnchargOnlowOnpmOnstlowpmdmOff.svg + static const String assetsIconsBatteryDmOffPerOnchargOnlowOnpmOnstlowpmdmOff = + "assets/icons/battery/dmOff/perOnchargOnlowOnpmOnstlowpmdmOff.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg + static const String + assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn = + "assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg + static const String + assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn = + "assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg + static const String + assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn = + "assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg + static const String + assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn = + "assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn + /// assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg + static const String + assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn = + "assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg + static const String + assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn = + "assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn + /// assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg + static const String + assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn = + "assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOnstlowpmdmOn + /// assets/icons/battery/dmOn/perOffchargOnlowOnpmOnstlowpmdmOn.svg + static const String assetsIconsBatteryDmOnPerOffchargOnlowOnpmOnstlowpmdmOn = + "assets/icons/battery/dmOn/perOffchargOnlowOnpmOnstlowpmdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg + static const String + assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn = + "assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg + static const String + assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn = + "assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg + static const String + assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn = + "assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg + static const String + assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn = + "assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn + /// assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg + static const String + assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn = + "assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn + /// assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg + static const String + assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn = + "assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn + /// assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg + static const String + assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn = + "assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg"; + + /// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOnstlowpmdmOn + /// assets/icons/battery/dmOn/perOnchargOnlowOnpmOnstlowpmdmOn.svg + static const String assetsIconsBatteryDmOnPerOnchargOnlowOnpmOnstlowpmdmOn = + "assets/icons/battery/dmOn/perOnchargOnlowOnpmOnstlowpmdmOn.svg"; + + /// Assets for assetsIconsCO2 + /// assets/icons/CO2.svg + static const String assetsIconsCO2 = "assets/icons/CO2.svg"; + + /// Assets for assetsIconsColdMode + /// assets/icons/coldMode.svg + static const String assetsIconsColdMode = "assets/icons/coldMode.svg"; + + /// Assets for assetsIconsColorWheel + /// assets/icons/color_wheel.svg + static const String assetsIconsColorWheel = "assets/icons/color_wheel.svg"; + + /// Assets for assetsIconsCurtain + /// assets/icons/Curtain.svg + static const String assetsIconsCurtain = "assets/icons/Curtain.svg"; + + /// Assets for assetsIconsCurtainsIconCloseCurtainsvg + /// assets/icons/curtainsIcon/closeCurtainsvg.svg + static const String assetsIconsCurtainsIconCloseCurtain = + "assets/icons/curtainsIcon/closeCurtain.svg"; + + /// Assets for assetsIconsCurtainsIconCurtainHolder + /// assets/icons/curtainsIcon/curtainHolder.svg + static const String assetsIconsCurtainsIconCurtainHolder = + "assets/icons/curtainsIcon/curtainHolder.svg"; + + /// Assets for assetsIconsCurtainsIconOpenCurtain + /// assets/icons/curtainsIcon/openCurtain.svg + static const String assetsIconsCurtainsIconOpenCurtain = + "assets/icons/curtainsIcon/openCurtain.svg"; + + /// Assets for assetsIconsCurtainsIconVerticalBlade + /// assets/icons/curtainsIcon/verticalBlade.svg + static const String assetsIconsCurtainsIconVerticalBlade = + "assets/icons/curtainsIcon/verticalBlade.svg"; + + /// Assets for assetsIconsDashboard + /// assets/icons/dashboard.svg + static const String assetsIconsDashboard = "assets/icons/dashboard.svg"; + + /// Assets for assetsIconsDashboardFill + /// assets/icons/dashboard-fill.svg + static const String assetsIconsDashboardFill = + "assets/icons/dashboard-fill.svg"; + + /// Assets for assetsIconsDevices + /// assets/icons/Devices.svg + static const String assetsIconsDevices = "assets/icons/Devices.svg"; + + /// Assets for assetsIconsDevicesFill + /// assets/icons/Devices-fill.svg + static const String assetsIconsDevicesFill = "assets/icons/Devices-fill.svg"; + + /// Assets for assetsIconsDoorLock + /// assets/icons/doorLock.svg + static const String assetsIconsDoorLock = "assets/icons/doorLock.svg"; + + /// Assets for assetsIconsDoorLockLinkage + /// assets/icons/DoorLockLinkage.svg + static const String assetsIconsDoorLockLinkage = + "assets/icons/DoorLockLinkage.svg"; + + /// Assets for assetsIconsDoorLockLock + /// assets/icons/DoorLockLock.svg + static const String assetsIconsDoorLockLock = "assets/icons/DoorLockLock.svg"; + + /// Assets for assetsIconsDoorLockMembers + /// assets/icons/DoorLockMembers.svg + static const String assetsIconsDoorLockMembers = + "assets/icons/DoorLockMembers.svg"; + + /// Assets for assetsIconsDoorLockPassword + /// assets/icons/DoorLockPassword.svg + static const String assetsIconsDoorLockPassword = + "assets/icons/DoorLockPassword.svg"; + + /// Assets for assetsIconsDoorLockRecords + /// assets/icons/DoorLockRecords.svg + static const String assetsIconsDoorLockRecords = + "assets/icons/DoorLockRecords.svg"; + + /// Assets for assetsIconsDoorlockAssetsBatteryIndicator + /// assets/icons/doorlock-assets/BatteryIndicator.svg + static const String assetsIconsDoorlockAssetsBatteryIndicator = + "assets/icons/doorlock-assets/BatteryIndicator.svg"; + + /// Assets for assetsIconsDoorlockAssetsDoorlockButtonOne + /// assets/icons/doorlock-assets/doorlock-button-one.svg + static const String assetsIconsDoorlockAssetsDoorlockButtonOne = + "assets/icons/doorlock-assets/doorlock-button-one.svg"; + + /// Assets for assetsIconsDoorlockAssetsDoorlockButtonTwo + /// assets/icons/doorlock-assets/doorlock-button-two.svg + static const String assetsIconsDoorlockAssetsDoorlockButtonTwo = + "assets/icons/doorlock-assets/doorlock-button-two.svg"; + + /// Assets for assetsIconsDoorlockAssetsLockIcon + /// assets/icons/doorlock-assets/lockIcon.svg + static const String assetsIconsDoorlockAssetsLockIcon = + "assets/icons/doorlock-assets/lockIcon.svg"; + + /// Assets for assetsIconsDoorlockAssetsMembersManagement + /// assets/icons/doorlock-assets/members-management.svg + static const String assetsIconsDoorlockAssetsMembersManagement = + "assets/icons/doorlock-assets/members-management.svg"; + + /// Assets for assetsIconsDoorlockAssetsSmartLinkage + /// assets/icons/doorlock-assets/smart-linkage.svg + static const String assetsIconsDoorlockAssetsSmartLinkage = + "assets/icons/doorlock-assets/smart-linkage.svg"; + + /// Assets for assetsIconsDoorlockAssetsTemporaryPassword + /// assets/icons/doorlock-assets/temporary-password.svg + static const String assetsIconsDoorlockAssetsTemporaryPassword = + "assets/icons/doorlock-assets/temporary-password.svg"; + + /// Assets for assetsIconsDoorlockAssetsUnlockingRecords + /// assets/icons/doorlock-assets/unlocking-records.svg + static const String assetsIconsDoorlockAssetsUnlockingRecords = + "assets/icons/doorlock-assets/unlocking-records.svg"; + + /// Assets for assetsIconsFacebook + /// assets/icons/Facebook.svg + static const String assetsIconsFacebook = "assets/icons/Facebook.svg"; + + /// Assets for assetsIconsFan0 + /// assets/icons/fan-0.svg + static const String assetsIconsFan0 = "assets/icons/fan-0.svg"; + + /// Assets for assetsIconsFan1 + /// assets/icons/fan-1.svg + static const String assetsIconsFan1 = "assets/icons/fan-1.svg"; + + /// Assets for assetsIconsFan2 + /// assets/icons/fan-2.svg + static const String assetsIconsFan2 = "assets/icons/fan-2.svg"; + + /// Assets for assetsIconsFan3 + /// assets/icons/fan-3.svg + static const String assetsIconsFan3 = "assets/icons/fan-3.svg"; + + /// Assets for assetsIconsFilter + /// assets/icons/filter.png + static const String assetsIconsFilter = "assets/icons/filter.png"; + + /// Assets for assetsIconsFrequency + /// assets/icons/frequency.svg + static const String assetsIconsFrequency = "assets/icons/frequency.svg"; + + /// Assets for assetsIconsGang + /// assets/icons/gang.svg + static const String assetsIconsGang = "assets/icons/gang.svg"; + + /// Assets for assetsIconsGateway + /// assets/icons/Gateway.svg + static const String assetsIconsGateway = "assets/icons/Gateway.svg"; + + /// Assets for assetsIconsGoogle + /// assets/icons/Google.svg + static const String assetsIconsGoogle = "assets/icons/Google.svg"; + + /// Assets for assetsIconsHome + /// assets/icons/home.svg + static const String assetsIconsHome = "assets/icons/home.svg"; + + /// Assets for assetsIconsHot1 + /// assets/icons/hot1.jpg + static const String assetsIconsHot1 = "assets/icons/hot1.jpg"; + + /// Assets for assetsIconsKalvin + /// assets/icons/kalvin.svg + static const String assetsIconsKalvin = "assets/icons/kalvin.svg"; + + /// Assets for assetsIconsLayout + /// assets/icons/Layout.svg + static const String assetsIconsLayout = "assets/icons/Layout.svg"; + + /// Assets for assetsIconsLayoutFill + /// assets/icons/Layout-fill.svg + static const String assetsIconsLayoutFill = "assets/icons/Layout-fill.svg"; + + /// Assets for assetsIconsLight + /// assets/icons/Light.svg + static const String assetsIconsLight = "assets/icons/Light.svg"; + + /// Assets for assetsIconsLightSwitchOff + /// assets/icons/lightSwitchOff.svg + static const String assetsIconsLightSwitchOff = + "assets/icons/lightSwitchOff.svg"; + + /// Assets for assetsIconsLightSwitchOn + /// assets/icons/lightSwitchOn.svg + static const String assetsIconsLightSwitchOn = + "assets/icons/lightSwitchOn.svg"; + + /// Assets for assetsIconsLinkageIconsDoorLockAlarm + /// assets/icons/linkageIcons/doorLockAlarm.svg + static const String assetsIconsLinkageIconsDoorLockAlarm = + "assets/icons/linkageIcons/doorLockAlarm.svg"; + + /// Assets for assetsIconsLinkageIconsFamilyHome + /// assets/icons/linkageIcons/familyHome.svg + static const String assetsIconsLinkageIconsFamilyHome = + "assets/icons/linkageIcons/familyHome.svg"; + + /// Assets for assetsIconsLock + /// assets/icons/lock.svg + static const String assetsIconsLock = "assets/icons/lock.svg"; + + /// Assets for assetsIconsLogo + /// assets/icons/logo.png + static const String assetsIconsLogo = "assets/icons/logo.png"; + + /// Assets for assetsIconsMenu + /// assets/icons/Menu.svg + static const String assetsIconsMenu = "assets/icons/Menu.svg"; + + /// Assets for assetsIconsMenuFill + /// assets/icons/Menu-fill.svg + static const String assetsIconsMenuFill = "assets/icons/Menu-fill.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsClearCach + /// assets/icons/MenuIcons/GeneralSettingsIcons/clearCach.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsClearCach = + "assets/icons/MenuIcons/GeneralSettingsIcons/clearCach.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsLanguage + /// assets/icons/MenuIcons/GeneralSettingsIcons/language.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsLanguage = + "assets/icons/MenuIcons/GeneralSettingsIcons/language.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsNetworkDiagnosis + /// assets/icons/MenuIcons/GeneralSettingsIcons/networkDiagnosis.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsNetworkDiagnosis = + "assets/icons/MenuIcons/GeneralSettingsIcons/networkDiagnosis.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsTemperatureUnit + /// assets/icons/MenuIcons/GeneralSettingsIcons/temperatureUnit.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsTemperatureUnit = + "assets/icons/MenuIcons/GeneralSettingsIcons/temperatureUnit.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsTouchTone + /// assets/icons/MenuIcons/GeneralSettingsIcons/touchTone.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsTouchTone = + "assets/icons/MenuIcons/GeneralSettingsIcons/touchTone.svg"; + + /// Assets for assetsIconsMenuIconsGeneralSettingsIconsVoiceAssistant + /// assets/icons/MenuIcons/GeneralSettingsIcons/voiceAssistant.svg + static const String assetsIconsMenuIconsGeneralSettingsIconsVoiceAssistant = + "assets/icons/MenuIcons/GeneralSettingsIcons/voiceAssistant.svg"; + + /// Assets for assetsIconsMenuIconsHomeManagementIconsCreateHome + /// assets/icons/MenuIcons/HomeManagementIcons/CreateHome.svg + static const String assetsIconsMenuIconsHomeManagementIconsCreateHome = + "assets/icons/MenuIcons/HomeManagementIcons/CreateHome.svg"; + + /// Assets for assetsIconsMenuIconsHomeManagementIconsJoinAHome + /// assets/icons/MenuIcons/HomeManagementIcons/joinAHome.svg + static const String assetsIconsMenuIconsHomeManagementIconsJoinAHome = + "assets/icons/MenuIcons/HomeManagementIcons/joinAHome.svg"; + + /// Assets for assetsIconsMenuIconsHomeManagementIconsManageYourHome + /// assets/icons/MenuIcons/HomeManagementIcons/ManageYourHome.svg + static const String assetsIconsMenuIconsHomeManagementIconsManageYourHome = + "assets/icons/MenuIcons/HomeManagementIcons/ManageYourHome.svg"; + + /// Assets for assetsIconsMenuIconsLeagalInfoIconsAbout + /// assets/icons/MenuIcons/LeagalInfoIcons/About.svg + static const String assetsIconsMenuIconsLeagalInfoIconsAbout = + "assets/icons/MenuIcons/LeagalInfoIcons/About.svg"; + + /// Assets for assetsIconsMenuIconsLeagalInfoIconsPrivacyPolicy + /// assets/icons/MenuIcons/LeagalInfoIcons/PrivacyPolicy.svg + static const String assetsIconsMenuIconsLeagalInfoIconsPrivacyPolicy = + "assets/icons/MenuIcons/LeagalInfoIcons/PrivacyPolicy.svg"; + + /// Assets for assetsIconsMenuIconsLeagalInfoIconsUserAgreement + /// assets/icons/MenuIcons/LeagalInfoIcons/UserAgreement.svg + static const String assetsIconsMenuIconsLeagalInfoIconsUserAgreement = + "assets/icons/MenuIcons/LeagalInfoIcons/UserAgreement.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsAlerts + /// assets/icons/MenuIcons/MessagesCenterIcons/Alerts.svg + static const String assetsIconsMenuIconsMessagesCenterIconsAlerts = + "assets/icons/MenuIcons/MessagesCenterIcons/Alerts.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsFAQs + /// assets/icons/MenuIcons/MessagesCenterIcons/FAQs.svg + static const String assetsIconsMenuIconsMessagesCenterIconsFAQs = + "assets/icons/MenuIcons/MessagesCenterIcons/FAQs.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsHelpAndFeedback + /// assets/icons/MenuIcons/MessagesCenterIcons/HelpAndFeedback.svg + static const String assetsIconsMenuIconsMessagesCenterIconsHelpAndFeedback = + "assets/icons/MenuIcons/MessagesCenterIcons/HelpAndFeedback.svg"; + + /// Assets for assetsIconsMenuIconsMessagesCenterIconsMessages + /// assets/icons/MenuIcons/MessagesCenterIcons/Messages.svg + static const String assetsIconsMenuIconsMessagesCenterIconsMessages = + "assets/icons/MenuIcons/MessagesCenterIcons/Messages.svg"; + + /// Assets for assetsIconsMenuIconsSecurityAndPrivacyIconsPrivacy + /// assets/icons/MenuIcons/SecurityAndPrivacyIcons/Privacy.svg + static const String assetsIconsMenuIconsSecurityAndPrivacyIconsPrivacy = + "assets/icons/MenuIcons/SecurityAndPrivacyIcons/Privacy.svg"; + + /// Assets for assetsIconsMenuIconsSecurityAndPrivacyIconsSecurty + /// assets/icons/MenuIcons/SecurityAndPrivacyIcons/Securty.svg + static const String assetsIconsMenuIconsSecurityAndPrivacyIconsSecurty = + "assets/icons/MenuIcons/SecurityAndPrivacyIcons/Securty.svg"; + + /// Assets for assetsIconsMinus + /// assets/icons/minus.svg + static const String assetsIconsMinus = "assets/icons/minus.svg"; + + /// Assets for assetsIconsPlus + /// assets/icons/plus.svg + static const String assetsIconsPlus = "assets/icons/plus.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsDistance + /// assets/icons/presence-sensor-assets/Distance.svg + static const String assetsIconsPresenceSensorAssetsDistance = + "assets/icons/presence-sensor-assets/Distance.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsEmpty + /// assets/icons/presence-sensor-assets/Empty.svg + static const String assetsIconsPresenceSensorAssetsEmpty = + "assets/icons/presence-sensor-assets/Empty.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsHelpDescription + /// assets/icons/presence-sensor-assets/help-description.svg + static const String assetsIconsPresenceSensorAssetsHelpDescription = + "assets/icons/presence-sensor-assets/help-description.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsIlluminanceRecord + /// assets/icons/presence-sensor-assets/Illuminance-Record.svg + static const String assetsIconsPresenceSensorAssetsIlluminanceRecord = + "assets/icons/presence-sensor-assets/Illuminance-Record.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsIlluminanceValue + /// assets/icons/presence-sensor-assets/Illuminance-Value.svg + static const String assetsIconsPresenceSensorAssetsIlluminanceValue = + "assets/icons/presence-sensor-assets/Illuminance-Value.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsIndicator + /// assets/icons/presence-sensor-assets/Indicator.svg + static const String assetsIconsPresenceSensorAssetsIndicator = + "assets/icons/presence-sensor-assets/Indicator.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsInductionRecording + /// assets/icons/presence-sensor-assets/induction-recording.svg + static const String assetsIconsPresenceSensorAssetsInductionRecording = + "assets/icons/presence-sensor-assets/induction-recording.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsParameterSettings + /// assets/icons/presence-sensor-assets/parameter-settings.svg + static const String assetsIconsPresenceSensorAssetsParameterSettings = + "assets/icons/presence-sensor-assets/parameter-settings.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsPresence + /// assets/icons/presence-sensor-assets/Presence.svg + static const String assetsIconsPresenceSensorAssetsPresence = + "assets/icons/presence-sensor-assets/Presence.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsPresenceSensorMotion + /// assets/icons/presence-sensor-assets/presence-sensor-motion.svg + static const String assetsIconsPresenceSensorAssetsPresenceSensorMotion = + "assets/icons/presence-sensor-assets/presence-sensor-motion.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsRecord + /// assets/icons/presence-sensor-assets/Record.svg + static const String assetsIconsPresenceSensorAssetsRecord = + "assets/icons/presence-sensor-assets/Record.svg"; + + /// Assets for assetsIconsPresenceSensorAssetsTime + /// assets/icons/presence-sensor-assets/Time.svg + static const String assetsIconsPresenceSensorAssetsTime = + "assets/icons/presence-sensor-assets/Time.svg"; + + /// Assets for assetsIconsRoutines + /// assets/icons/Routines.svg + static const String assetsIconsRoutines = "assets/icons/Routines.svg"; + + /// Assets for assetsIconsRoutinesFill + /// assets/icons/Routines-fill.svg + static const String assetsIconsRoutinesFill = + "assets/icons/Routines-fill.svg"; + + /// Assets for assetsIconsScan + /// assets/icons/Scan.svg + static const String assetsIconsScan = "assets/icons/Scan.svg"; + + /// Assets for assetsIconsScreen + /// assets/icons/Screen.svg + static const String assetsIconsScreen = "assets/icons/Screen.svg"; + + /// Assets for assetsIconsSensors + /// assets/icons/sensors.svg + static const String assetsIconsSensors = "assets/icons/sensors.svg"; + + /// Assets for assetsIconsSettings + /// assets/icons/settings.svg + static const String assetsIconsSettings = "assets/icons/settings.svg"; + + /// Assets for assetsIconsSummer + /// assets/icons/Summer.svg + static const String assetsIconsSummer = "assets/icons/Summer.svg"; + + /// Assets for assetsIconsSummerMode + /// assets/icons/summer_mode.svg + static const String assetsIconsSummerMode = "assets/icons/summer_mode.svg"; + + /// Assets for assetsIconsSunnyMode + /// assets/icons/sunnyMode.svg + static const String assetsIconsSunnyMode = "assets/icons/sunnyMode.svg"; + + /// Assets for assetsIconsSustainability + /// assets/icons/sustainability.svg + static const String assetsIconsSustainability = + "assets/icons/sustainability.svg"; + + /// Assets for assetsIconsUnlockingMethodsIconsFace + /// assets/icons/unlockingMethodsIcons/face.svg + static const String assetsIconsUnlockingMethodsIconsFace = + "assets/icons/unlockingMethodsIcons/face.svg"; + + /// Assets for assetsIconsUnlockingMethodsIconsFingerprint + /// assets/icons/unlockingMethodsIcons/fingerprint.svg + static const String assetsIconsUnlockingMethodsIconsFingerprint = + "assets/icons/unlockingMethodsIcons/fingerprint.svg"; + + /// Assets for assetsIconsUnlockingMethodsIconsRemote + /// assets/icons/unlockingMethodsIcons/remote.svg + static const String assetsIconsUnlockingMethodsIconsRemote = + "assets/icons/unlockingMethodsIcons/remote.svg"; + + /// Assets for assetsIconsVector + /// assets/icons/Vector.svg + static const String assetsIconsVector = "assets/icons/Vector.svg"; + + /// Assets for assetsIconsVector1 + /// assets/icons/Vector-1.svg + static const String assetsIconsVector1 = "assets/icons/Vector-1.svg"; + + /// Assets for assetsIconsVoltMeter + /// assets/icons/volt-meter.svg + static const String assetsIconsVoltMeter = "assets/icons/volt-meter.svg"; + + /// Assets for assetsIconsWifi + /// assets/icons/Wifi.svg + static const String assetsIconsWifi = "assets/icons/Wifi.svg"; + + /// Assets for assetsIconsWindyMode + /// assets/icons/windyMode.svg + static const String assetsIconsWindyMode = "assets/icons/windyMode.svg"; + + /// Assets for assetsIconsWinter + /// assets/icons/Winter.svg + static const String assetsIconsWinter = "assets/icons/Winter.svg"; + + /// Assets for assetsIconsWinter1 + /// assets/icons/winter1.jpg + static const String assetsIconsWinter1 = "assets/icons/winter1.jpg"; + + /// Assets for assetsIconsWinterMode + /// assets/icons/Winter_mode.svg + static const String assetsIconsWinterMode = "assets/icons/Winter_mode.svg"; + + /// Assets for assetsImagesAutomation + /// assets/images/automation.jpg + static const String assetsImagesAutomation = "assets/images/automation.jpg"; + + /// Assets for assetsImagesBackground + /// assets/images/Background.png + static const String assetsImagesBackground = "assets/images/Background.png"; + + /// Assets for assetsImagesBlackLogo + /// assets/images/black-logo.png + static const String assetsImagesBlackLogo = "assets/images/black-logo.png"; + + /// Assets for assetsImagesBlind + /// assets/images/blind.png + static const String assetsImagesBlind = "assets/images/blind.png"; + + /// Assets for assetsImagesBoxEmpty + /// assets/images/box-empty.jpg + static const String assetsImagesBoxEmpty = "assets/images/box-empty.jpg"; + + /// Assets for assetsImagesCurtain + /// assets/images/curtain.png + static const String assetsImagesCurtain = "assets/images/curtain.png"; + + /// Assets for assetsImagesDown + /// assets/images/Down.png + static const String assetsImagesDown = "assets/images/Down.png"; + + /// Assets for assetsImagesHorizintalBlade + /// assets/images/HorizintalBlade.png + static const String assetsImagesHorizintalBlade = + "assets/images/HorizintalBlade.png"; + + /// Assets for assetsImagesLogo + /// assets/images/Logo.svg + static const String assetsImagesLogo = "assets/images/Logo.svg"; + + /// Assets for assetsImagesLogoHorizontal + /// assets/images/logo_horizontal.png + static const String assetsImagesLogoHorizontal = + "assets/images/logo_horizontal.png"; + + /// Assets for assetsImagesPause + /// assets/images/Pause.png + static const String assetsImagesPause = "assets/images/Pause.png"; + + /// Assets for assetsImagesTestDash + /// assets/images/test_dash.png + static const String assetsImagesTestDash = "assets/images/test_dash.png"; + + /// Assets for assetsImagesTestDash2 + /// assets/images/test_dash2.png + static const String assetsImagesTestDash2 = "assets/images/test_dash2.png"; + + /// Assets for assetsImagesUp + /// assets/images/Up.png + static const String assetsImagesUp = "assets/images/Up.png"; + + /// Assets for assetsImagesVector + /// assets/images/Vector.png + static const String assetsImagesVector = "assets/images/Vector.png"; + + /// Assets for assetsImagesWhiteLogo + /// assets/images/white-logo.png + static const String assetsImagesWhiteLogo = "assets/images/white-logo.png"; + + /// Assets for assetsImagesWindow + /// assets/images/Window.png + static const String assetsImagesWindow = "assets/images/Window.png"; } diff --git a/lib/services/api/devices_api.dart b/lib/services/api/devices_api.dart index 7d0e4fc..d4f1db2 100644 --- a/lib/services/api/devices_api.dart +++ b/lib/services/api/devices_api.dart @@ -63,10 +63,8 @@ class DevicesAPI { showServerMessage: false, expectedResponseModel: (json) { if (json == null || json.isEmpty || json == []) { - print('json: $json'); return []; } - print('json: $json'); List devices = []; for (var device in json) { devices.add(DeviceModel.fromJson(device)); diff --git a/lib/utils/resource_manager/constants.dart b/lib/utils/resource_manager/constants.dart index 748bf97..4bd68d2 100644 --- a/lib/utils/resource_manager/constants.dart +++ b/lib/utils/resource_manager/constants.dart @@ -204,16 +204,16 @@ enum TempModes { hot, cold, wind } enum FanSpeeds { auto, low, middle, high } final Map fanSpeedsIconMap = { - FanSpeeds.auto: Assets.iconsFan0, - FanSpeeds.low: Assets.iconsFan1, - FanSpeeds.middle: Assets.iconsFan2, - FanSpeeds.high: Assets.iconsFan3, + FanSpeeds.auto: Assets.assetsIconsFan0, + FanSpeeds.low: Assets.assetsIconsFan1, + FanSpeeds.middle: Assets.assetsIconsFan2, + FanSpeeds.high: Assets.assetsIconsFan3, }; final Map tempModesIconMap = { - TempModes.hot: Assets.iconsSunnyMode, - TempModes.cold: Assets.iconsColdMode, - TempModes.wind: Assets.iconsWindyMode, + TempModes.hot: Assets.assetsIconsSunnyMode, + TempModes.cold: Assets.assetsIconsColdMode, + TempModes.wind: Assets.assetsIconsWindyMode, }; final Map fanSpeedsMap = { @@ -275,17 +275,17 @@ List> menuSections = [ 'buttons': [ { 'title': 'Create a Home', - 'Icon': Assets.homeManagementIconsCreateHome, + 'Icon': Assets.assetsIconsMenuIconsHomeManagementIconsCreateHome, 'page': const CreateHomeView() }, { 'title': 'Join a Home', - 'Icon': Assets.homeManagementIconsJoinAHome, + 'Icon': Assets.assetsIconsMenuIconsHomeManagementIconsJoinAHome, 'page': const JoinHomeView() }, { 'title': 'Manage Your Home', - 'Icon': Assets.homeManagementIconsManageYourHome, + 'Icon': Assets.assetsIconsMenuIconsHomeManagementIconsManageYourHome, 'page': const ManageHomeView() }, ], @@ -297,32 +297,32 @@ List> menuSections = [ 'buttons': [ { 'title': 'Voice Assistant', - 'Icon': Assets.generalSettingsIconsVoiceAssistant, + 'Icon': Assets.assetsIconsMenuIconsGeneralSettingsIconsVoiceAssistant, 'page': null }, { 'title': 'Temperature unit', - 'Icon': Assets.generalSettingsIconsTemperatureUnit, + 'Icon': Assets.assetsIconsMenuIconsGeneralSettingsIconsTemperatureUnit, 'page': null }, { 'title': 'Touch tone on panel', - 'Icon': Assets.generalSettingsIconsTouchTone, + 'Icon': Assets.assetsIconsMenuIconsGeneralSettingsIconsTouchTone, 'page': null }, { 'title': 'Language', - 'Icon': Assets.generalSettingsIconsLanguage, + 'Icon': Assets.assetsIconsMenuIconsGeneralSettingsIconsLanguage, 'page': null }, { 'title': 'Network Diagnosis', - 'Icon': Assets.generalSettingsIconsNetworkDiagnosis, + 'Icon': Assets.assetsIconsMenuIconsGeneralSettingsIconsNetworkDiagnosis, 'page': null }, { 'title': 'Clear Cache', - 'Icon': Assets.generalSettingsIconsClearCach, + 'Icon': Assets.assetsIconsMenuIconsGeneralSettingsIconsClearCach, 'page': null }, ], @@ -334,18 +334,22 @@ List> menuSections = [ 'buttons': [ { 'title': 'Alerts', - 'Icon': Assets.messagesCenterIconsAlerts, + 'Icon': Assets.assetsIconsMenuIconsMessagesCenterIconsAlerts, 'page': null }, { 'title': 'Messages', - 'Icon': Assets.messagesCenterIconsMessages, + 'Icon': Assets.assetsIconsMenuIconsMessagesCenterIconsMessages, + 'page': null + }, + { + 'title': 'FAQs', + 'Icon': Assets.assetsIconsMenuIconsMessagesCenterIconsFAQs, 'page': null }, - {'title': 'FAQs', 'Icon': Assets.messagesCenterIconsFAQs, 'page': null}, { 'title': 'Help & Feedback', - 'Icon': Assets.messagesCenterIconsHelpAndFeedback, + 'Icon': Assets.assetsIconsMenuIconsMessagesCenterIconsHelpAndFeedback, 'page': null }, ], @@ -357,12 +361,12 @@ List> menuSections = [ 'buttons': [ { 'title': 'Security', - 'Icon': Assets.securityAndPrivacyIconsSecurty, + 'Icon': Assets.assetsIconsMenuIconsSecurityAndPrivacyIconsSecurty, 'page': const SecurtyView() }, { 'title': 'Privacy', - 'Icon': Assets.securityAndPrivacyIconsPrivacy, + 'Icon': Assets.assetsIconsMenuIconsSecurityAndPrivacyIconsPrivacy, 'page': const PrivacyView() }, ], @@ -372,15 +376,19 @@ List> menuSections = [ 'title': 'Legal Information', 'color': const Color(0xFF001B72), 'buttons': [ - {'title': 'About', 'Icon': Assets.leagalInfoIconsAbout, 'page': null}, + { + 'title': 'About', + 'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsAbout, + 'page': null + }, { 'title': 'Privacy Policy', - 'Icon': Assets.leagalInfoIconsPrivacyPolicy, + 'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsPrivacyPolicy, 'page': null }, { 'title': 'User Agreement', - 'Icon': Assets.leagalInfoIconsUserAgreement, + 'Icon': Assets.assetsIconsMenuIconsLeagalInfoIconsUserAgreement, 'page': null }, ], From 923e7a2d022592a321f49945aadc942b6fa19194 Mon Sep 17 00:00:00 2001 From: Mohammad Salameh Date: Tue, 7 May 2024 12:26:54 +0300 Subject: [PATCH 6/6] Added the curtain interface --- assets/icons/curtainsIcon/closeCurtain.svg | 56 +++++++++ assets/icons/curtainsIcon/curtainHolder.svg | 34 +++++ assets/icons/curtainsIcon/openCurtain.svg | 56 +++++++++ assets/icons/curtainsIcon/verticalBlade.svg | 32 +++++ .../widgets/curtains/curtain_buttons.dart | 116 ++++++++++++++++++ .../widgets/curtains/curtain_list_view.dart | 22 ++++ .../view/widgets/curtains/curtain_view.dart | 87 +++++++++++-- pubspec.yaml | 7 +- 8 files changed, 398 insertions(+), 12 deletions(-) create mode 100644 assets/icons/curtainsIcon/closeCurtain.svg create mode 100644 assets/icons/curtainsIcon/curtainHolder.svg create mode 100644 assets/icons/curtainsIcon/openCurtain.svg create mode 100644 assets/icons/curtainsIcon/verticalBlade.svg create mode 100644 lib/features/devices/view/widgets/curtains/curtain_buttons.dart create mode 100644 lib/features/devices/view/widgets/curtains/curtain_list_view.dart diff --git a/assets/icons/curtainsIcon/closeCurtain.svg b/assets/icons/curtainsIcon/closeCurtain.svg new file mode 100644 index 0000000..8fa548f --- /dev/null +++ b/assets/icons/curtainsIcon/closeCurtain.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/curtainsIcon/curtainHolder.svg b/assets/icons/curtainsIcon/curtainHolder.svg new file mode 100644 index 0000000..8ed2e91 --- /dev/null +++ b/assets/icons/curtainsIcon/curtainHolder.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/curtainsIcon/openCurtain.svg b/assets/icons/curtainsIcon/openCurtain.svg new file mode 100644 index 0000000..67fd13c --- /dev/null +++ b/assets/icons/curtainsIcon/openCurtain.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/curtainsIcon/verticalBlade.svg b/assets/icons/curtainsIcon/verticalBlade.svg new file mode 100644 index 0000000..3089113 --- /dev/null +++ b/assets/icons/curtainsIcon/verticalBlade.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/features/devices/view/widgets/curtains/curtain_buttons.dart b/lib/features/devices/view/widgets/curtains/curtain_buttons.dart new file mode 100644 index 0000000..356023c --- /dev/null +++ b/lib/features/devices/view/widgets/curtains/curtain_buttons.dart @@ -0,0 +1,116 @@ +part of "curtain_view.dart"; + +class CurtainButtons extends StatelessWidget { + const CurtainButtons({super.key, required this.curtain}); + final DeviceModel curtain; + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Stack( + alignment: Alignment.center, + children: [ + DecoratedBox( + decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: MaterialStateProperty.all(Colors.transparent), + onTap: () { + DevicesCubit.get(context).openCurtain(curtain.productType!); + }, + child: const SizedBox.square( + dimension: 60, + ), + ), + ), + Padding( + padding: const EdgeInsets.only(right: 5, bottom: 5), + child: InkWell( + overlayColor: MaterialStateProperty.all(Colors.transparent), + onTap: () { + DevicesCubit.get(context).openCurtain(curtain.productType!); + }, + child: SvgPicture.asset( + Assets.assetsIconsCurtainsIconOpenCurtain, + width: 110, + height: 110, + ), + ), + ) + ], + ), + DecoratedBox( + decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: InkWell( + overlayColor: MaterialStateProperty.all(Colors.transparent), + onTap: () { + DevicesCubit.get(context).pauseCurtain(); + }, + child: Image.asset( + Assets.assetsImagesPause, + width: 60, + height: 60, + ), + ), + ), + Stack( + alignment: Alignment.center, + children: [ + DecoratedBox( + decoration: BoxDecoration(shape: BoxShape.circle, boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 5, + offset: const Offset(3, 3), + ), + ]), + child: const SizedBox.square( + dimension: 60, + ), + // InkWell( + // overlayColor: MaterialStateProperty.all(Colors.transparent), + // onTap: () { + // DevicesCubit.get(context).closeCurtain(curtain.productType!); + // }, + // child: SvgPicture.asset( + // Assets.assetsIconsCurtainsIconCloseCurtain, + // width: 60, + // height: 60, + // ), + // ), + ), + Padding( + padding: const EdgeInsets.only(right: 5, bottom: 5), + child: InkWell( + overlayColor: MaterialStateProperty.all(Colors.transparent), + onTap: () { + DevicesCubit.get(context).closeCurtain(curtain.productType!); + }, + child: SvgPicture.asset( + Assets.assetsIconsCurtainsIconCloseCurtain, + width: 110, + height: 110, + ), + ), + ) + ], + ), + ], + ); + } +} diff --git a/lib/features/devices/view/widgets/curtains/curtain_list_view.dart b/lib/features/devices/view/widgets/curtains/curtain_list_view.dart new file mode 100644 index 0000000..445ad4f --- /dev/null +++ b/lib/features/devices/view/widgets/curtains/curtain_list_view.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; +import 'package:syncrow_app/features/devices/view/widgets/ACs/category_view_app_bar.dart'; +import 'package:syncrow_app/features/devices/view/widgets/curtains/curtain_list.dart'; +import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; + +class CurtainListView extends StatelessWidget { + const CurtainListView({super.key}); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + return const DefaultScaffold( + appBar: CategoryViewAppBar(), + child: CurtainList(), + ); + }, + ); + } +} diff --git a/lib/features/devices/view/widgets/curtains/curtain_view.dart b/lib/features/devices/view/widgets/curtains/curtain_view.dart index 65dae85..8815cb2 100644 --- a/lib/features/devices/view/widgets/curtains/curtain_view.dart +++ b/lib/features/devices/view/widgets/curtains/curtain_view.dart @@ -1,22 +1,87 @@ import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; -import 'package:syncrow_app/features/devices/view/widgets/ACs/category_view_app_bar.dart'; -import 'package:syncrow_app/features/devices/view/widgets/curtains/curtain_list.dart'; +import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart'; +import 'package:syncrow_app/generated/assets.dart'; + +part "curtain_buttons.dart"; class CurtainView extends StatelessWidget { - const CurtainView({super.key}); - + const CurtainView({super.key, required this.curtain}); + final DeviceModel curtain; @override Widget build(BuildContext context) { - return BlocBuilder( - builder: (context, state) { - return const DefaultScaffold( - appBar: CategoryViewAppBar(), - child: CurtainList(), - ); - }, + return BlocProvider( + create: (context) => DevicesCubit.getInstance(), + child: BlocBuilder( + builder: (context, state) => DefaultScaffold( + title: curtain.name, + child: Column( + children: [ + Stack( + alignment: Alignment.centerLeft, + children: [ + Container( + height: 340, + width: 365, + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage( + Assets.assetsImagesWindow, + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.all(40), + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + curve: Curves.linear, + height: 310, + width: DevicesCubit.getInstance().curtainWidth, + child: Stack( + children: List.generate( + 10, + (index) { + double spacing = + DevicesCubit.getInstance().curtainWidth / 9; + double leftMostPosition = index * spacing; + return AnimatedPositioned( + duration: const Duration(milliseconds: 200), + curve: Curves.linear, + left: leftMostPosition, + child: SizedBox( + height: 320, + width: 32, + child: SvgPicture.asset( + Assets.assetsIconsCurtainsIconVerticalBlade, + fit: BoxFit.fill, + ), + ), + ); + }, + ), + ), + ), + ), + Positioned( + top: 27, + left: 43, + child: SvgPicture.asset( + Assets.assetsIconsCurtainsIconCurtainHolder)), + ], + ), + const SizedBox(height: 80), + CurtainButtons( + curtain: curtain, + ), + ], + ), + ), + ), ); } } diff --git a/pubspec.yaml b/pubspec.yaml index 6882bba..27c1d9a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,6 +43,11 @@ dev_dependencies: sdk: flutter flutter_lints: ^3.0.1 +flutter_assets: + assets_path: assets/ + output_path: lib/generated2/ + filename: Assets.assetsIconsDart + flutter: uses-material-design: true @@ -61,7 +66,7 @@ flutter: - assets/icons/MenuIcons/LeagalInfoIcons/ - assets/icons/MenuIcons/MessagesCenterIcons/ - assets/icons/MenuIcons/SecurityAndPrivacyIcons/ - + - assets/icons/curtainsIcon/ fonts: - family: Aftika fonts: