From b13ae4da7b1b842cf2b8753acb587266b610ed24 Mon Sep 17 00:00:00 2001 From: iampawan Date: Tue, 2 Feb 2021 17:02:42 +0530 Subject: [PATCH 1/6] Day 2 completed --- lib/home_page.dart | 20 ++++++++++++++++++++ lib/main.dart | 12 +++--------- 2 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 lib/home_page.dart diff --git a/lib/home_page.dart b/lib/home_page.dart new file mode 100644 index 0000000..487caed --- /dev/null +++ b/lib/home_page.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; + +class HomePage extends StatelessWidget { + final int days = 30; + final String name = "Codepur"; + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("Catalog App"), + ), + body: Center( + child: Container( + child: Text("Welcome to $days days of flutter by $name"), + ), + ), + drawer: Drawer(), + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index dda5a28..f5342be 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,22 +1,16 @@ import 'package:flutter/material.dart'; +import 'home_page.dart'; + void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { - const MyApp({Key key}) : super(key: key); - @override Widget build(BuildContext context) { return MaterialApp( - home: Material( - child: Center( - child: Container( - child: Text("Welcome to 30 days of flutter"), - ), - ), - ), + home: HomePage(), ); } } From 499559b3d88ccf1126e31fc6b2177b5564442ed8 Mon Sep 17 00:00:00 2001 From: iampawan Date: Wed, 3 Feb 2021 17:03:23 +0530 Subject: [PATCH 2/6] Day 3 completed --- lib/main.dart | 15 +++++++++++++-- lib/{ => pages}/home_page.dart | 0 lib/pages/login_page.dart | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) rename lib/{ => pages}/home_page.dart (100%) create mode 100644 lib/pages/login_page.dart diff --git a/lib/main.dart b/lib/main.dart index f5342be..04600d7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_catalog/pages/login_page.dart'; -import 'home_page.dart'; +import 'pages/home_page.dart'; void main() { runApp(MyApp()); @@ -10,7 +11,17 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - home: HomePage(), + themeMode: ThemeMode.light, + theme: ThemeData(primarySwatch: Colors.deepPurple), + darkTheme: ThemeData( + brightness: Brightness.dark, + ), + initialRoute: "/home", + routes: { + "/": (context) => LoginPage(), + "/home": (context) => HomePage(), + "/login": (context) => LoginPage() + }, ); } } diff --git a/lib/home_page.dart b/lib/pages/home_page.dart similarity index 100% rename from lib/home_page.dart rename to lib/pages/home_page.dart diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart new file mode 100644 index 0000000..2f307e0 --- /dev/null +++ b/lib/pages/login_page.dart @@ -0,0 +1,19 @@ +import 'package:flutter/material.dart'; + +class LoginPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Material( + child: Center( + child: Text( + "Login Page", + style: TextStyle( + fontSize: 20, + color: Colors.blue, + fontWeight: FontWeight.bold, + ), + ), + ), + ); + } +} From c59068594f78049a53979432a1054fd5e333fdc7 Mon Sep 17 00:00:00 2001 From: iampawan Date: Thu, 4 Feb 2021 17:09:58 +0530 Subject: [PATCH 3/6] Day 4 completed --- assets/images/login_image.png | Bin 0 -> 24603 bytes ios/Podfile.lock | 6 +++ lib/main.dart | 9 ++-- lib/pages/login_page.dart | 64 ++++++++++++++++++++----- pubspec.lock | 85 ++++++++++++++++++++++++++++++++++ pubspec.yaml | 5 +- 6 files changed, 153 insertions(+), 16 deletions(-) create mode 100644 assets/images/login_image.png diff --git a/assets/images/login_image.png b/assets/images/login_image.png new file mode 100644 index 0000000000000000000000000000000000000000..b175b35282b8b8dbf263f64bfb2222d435346819 GIT binary patch literal 24603 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 z zZyIUd++B5KvgHt~PPbhn@TUOQC*fH7F>JHbX=_LB-j^A6YubH&1gwMuD2G$!1$~Zg z2W6gnmxP@)PCQ*R2OC}ow}gy(qdM)n1fBdqWxOpTJ52TIqt2bPS3R&q{)&pe`F3Gf zOx;6&&c4)c3=LlVhE1fCQYCUVi%+eb^3QaG~6+DDK@bYyYWTGT`rmqGDIgCFJ}f zUM>ajhS1FK;kwls(##pMPu1UD>2Aup$v?G)t2|#^7Jav4#R_f_Cfwcq8vOxL6`O*O zA5{(j(fI)-yZG=ZwlJ2P=X@GR?ynmTfZmLWJKR`83ox41J(ns)3ih_Lmqmy{BlJz#0d)HEYooQrfJKwuk~tIsOagnr^BBD z@!AQwhq3C~7g4nGRx!jWJFc1c0&7W3)cV!MHdItQ;2FAzf`?qL#G9rC1@;=Z^|H5P z+7pKnMUIxNO+eQoQllExr}alre3XYBnLYmE;?tOiI+ZCZ>|u76D;%J%%Gg%pDhH%X z&r8|2_tZ3yiR}(cEK`ll{8dm&q&6s$l8?VXLSSa+G)#x9!V*OR_5la^Z{5+B_*E4;|yOwkKv5)Q4w z9Y3B@t0*g{j;PCnd?JrzGKs`JlGGoJo&L`Ca4Uk-t&lw`)S*4KIBL}p?2lJmTuCXy zUsKdlh*CC<2!nV#j}d z3-FFA?Os9e%v{jB4K7T<9o$VqHzIp{XHD^U_B&~2In#D&!MWd{?uhmUerzJRAb<>x zSah+iORPnt1(TbLt3PVg&?#2{m+J!&UznO&vh;}NI=(1~!wwaZ_izfuPsmJ_AW3OF zi39L|DAzG49c%T#Ii`Uaas+VD_@?n@D^yX49r&}+^R0E zz}?8Ew|m^IXtH;r8W`w-2_#ikRu&f*Uw$J*Mo!*d_hay%$!MS_6ogMfoN$#e!98uN%V=d!vWb@x;|sGVO}HH7+~zYKE*$ye3noq_KHkUYJBVs}tAb z)?gBrwyrez{j}`tY{%&Q&0rA`?3~`**wpJIwHPEYu1)2proL3^C&m99wY0V#Zjhrn zborURJ5}?H>Vt8oj!JI>Gi;AK3)T_xs8v%<+wB&}55T-vWMofn_#8SfH3c1iz}6L7 ze+KL)joRZIjaZb93A3xdcwrL(2^Kwb$UUtoWvU$Nfr%jAc(Esn;_>O@>rnz~p^t5XC#+L%1;E!2&CjE*J^mZyo8w9^y%<&NlhUHk83t$e{SH3A zUcGa^0&bHaC;;GD3qWwZZ%FG7wIk#n#9_&M#zEH^WA>U%obVVG^ve>>-kkg)4q@s4FyOCg~V zIMs-X+4$_^WVMJ(NX|vW_x$k^QEB_ElO={OvEm3rDzFjzi=BPX%*@R8ip0_k4h}k2#TDHK_`3+T9!!?_ z$H8YTCGB}UuijLJX(e)V?%RD-qC=Kv7DLxVKAU5SlbT)oT|X&8JG<>As4#8l85tQF zI5JjLRA>l?MMf&CtG_N#e;VTk)Pn-NUf!6M_ziA@+M@)w$dZ$u^gG~J5Wnw%jU6A< z6?#hOIC>0zxIu;#>V1XC$jppjJj-@%Yj0;}V{^(lYt?^)OWRP8V-=m8(N{8FUt$oc zeM&~c>(!=I(`bB!BreCiv4c=;IW~N=Px=9B%qRLEn@qFFGia-Jz zHmU&zT2a@XXW@19jJn)v2cDa=pvrusL2KMn*j( zk-rwYsm!KFfP$Gt#EI^cb!=#YeLXx7)S@&(9=P~;F&0YuaJ zmo6?YTz64BupVH=iExoe+w~6zs)#+$9?Yxd-BZJEnr0#rUzk?CH8id)Nxpcf8GejP zEH37hCbJb(*je`07SDboeIsFd2~37K(1jYfe!pZ3;E_PvMSjRz(3lCz(O4{$q@*-4 z)^u^K?vm_0QbAWYJ~ip>+keQ`1;eoKXJ%$t>TB43Fgd3N;k;A9WN@$#RaFV-Pz!`T zU|!j~mZ$qz8lhhEwExxj;sI1#OpJLZ@(xyObaeDVsCMdeVTQxH`%s1D=TS;8K#2m7 zkf#xnRLfmVqyE{#PvfG27G^T4=9UJPa-II<#U*8@gY5CL_>~NJt5~a6h{OcNmtEE#HX<7 z+B+o>Qh}U;HOzGzux^E6#@#0AlDR; zD)-P@bhSPz+{t}UbGVYS71V%P8l$3ZYFb~fO}Qr(9A)>t2R8RjdprnQ@<3q!r@BkO z%gn{@X=4Cd0J!xtGh=tkTD!R_9i)#ZU#TOfrk@$gyKeu?skuqcNOqIJHaP2izHdWT zeWZMF$@tp*{5&vbagozcpFT025K7`0dE_J&CNa3Y%;q&&cB^>?tFzp+0T=4J)Fv!{JO{GCe1)8Cl7FAUKBX}Obw^M(W>2-! zsrwyDk@|Gl7mw6@SfI$kCnDndxA<$n-V@+r0?_UnEl`R1`3e~=Pi^@hZ0D;3r1)0pEupss{mZn2f^xE@RECfj zyRoIFa{!709D22KYWCOT+H*v@{2N=29jMPbznYXH?~L*Lh{Heq#pmc_--kvct3DKHF&0?^NPiFhb+MM7_RfJ4q?fmo?ji&2`a60BHEL-TGl6J*jeM#ZFgi z>tB~@oP5f6;wRY1$dt@7Pde9{;(c_+PtQ=eJ&MGVC)m^h37v27`42Uh6O+Knss?6~ z8oum&1rXxHKe$`9#P3@|&t7+OXd&)DcyK)v&NEQ^fhrMxZax=SuP~>7UM{1MprZ|gG{Ki7*&`(LD} z>EqJ$<27je&HH6>($cAn@*iuq=w7asa_9JX)#5BcMO8JhA4V`g#q!ts67RXo4ORpx zw~W}2!Onth-Lh0wB$t)|+Rmh|boA|=<#^WMCJqb?1oXpLZW5x&{%Yf+Z=S9Fs9T() z4_qo2*|=6IyOq{vvC76^Bv;doeQL z<>ggnZlwH^Qzec^SlhL{LOJ-zW_gt`5fH@2++|lxJrHljDj?V2jXbSvV0*v$8Na(` zw0^E>x+pXAf!wdZKJbX1mNj?XZY_O>JU#R@B@cPkV@5b(?6+dscNn*rx z6Pj`-`T4Tv{E=bP78mt`d+mMr9G9=b?r}x<9C{e^31Jum`49e8?HVRtdqw1 z;?Ho`WhnhYe_Yws`^V4Tx;{N~(yI{>m0k_zg26;rGP+?cctWV zH>#^_jKApyHeh<5TRsrAj2AlXCHw-oX6#;ECdmd_M!aWW2oH%V*D`AI+%Xc*ma*#b zRpBIieXxC&j-kZsKb!eB4DYjHf2pR!2c#7h!`r586@T0P8h^yd*fQ4y{6CEGOW)r$ zE4=Dzi>zd2Fre5~xd@Fy2&z?4wCZFP??!3GfxK<|FghW@s+tiE^j=u_xZ>!>S9u#7 z8zUon(8Y6}Y>7MyrKx&^Cz03HBaUe0u~)89wVw4;K{Mv|z?QSp(ijj3wRZ;f^#p%0 z@~4urPP7l99D^L?@2k}mzVCR1;?(BDpGrw72_}?0L0EgEkOzx{KC7!1x=sHA>x6EN zt>v9bfhv(rWWJf^_ZF>&Ps~cj#&LSpG6?Ia#^0MgHJ3mZ1v1N65)l9yAXSeZk3r;q zXi`I@6HLNF9=f5o)NYm^W85me`9YBUA zuQq_;2-1Go1Sm5kw_fy}n9#13xBvhX9Amr+b==!bnntDHI{8eH4u52W%EwDS500?M zPxT~8Zdd3iZ7kig}bjg>Xm!|Dx2 zSo-;MmYYF?W;r%{XIKBue^lEZm3QJ?#>DT@{OcuEIs{r$l&FLs5+r%IxBB?%)A#<-Z90hPB4?G);Vm z)fRL)<#||pNT6r>)zX7=uayFvWYRdRTs2@WcO5)hW$PRB~YhD*OwXx81hqDiW-wovOSk^)|SfTjV;0J-4e~?fTRG8edo- zoFp*Y*|&bKqo<*u`0ZB+aJauHU#z03IrPl~OGD<L+EQE5BZ@WcwV&|4=1Aq>^QwKyy^d_6oOT{fSjc~Vc031hOLdlcZ%fyz zA=sS#%3*p)Wdo|!f2#Ct%DvFq*5Lm{`+;71s7jk?4s<-gx$o$(p%SMJXXoe zL7j0R&HUs(=y!O#l{e@We(OJ4_$T{RFH$I4xAqAr2GF_F;2bnBPoG8n`O<&8eQ{IT zrTw$cr)8+^?c+U4u5yt%r1i?P_pFYv{|IHu!kw7ZiOl*lT@DX_b0snQ(!%({MNMNPjq*mU~m*fEqmAMP9KA%ak- zfV*EmiMN744{OqJ@KL_f=+7cNB@*g@?*%TTe2ynbbKoo=B-7v-jmWa$uB#wX#Z=-o z-@)(5G4u8 z;6EbQICJ>y^&OOZ#7{=g@gMoCt7{K5=h_3t%SF9xsI@qe>Vy61d5h4@@430Tr=-aO z@*s0O@;bdB;y9g9{p|Yo`tfD+jTL~&bY@P=fikB z4#QGi*fV4!o5e02xXo<&eW|IET=1P8D#k2iJd|Ei^Oz317%g*@dXk~64<-UI+q|+mtlpw+JogO<&q8T zuGmy)%>JIjh@mQBy~Agq+6$-y)hh!my|2lB80+ULSml7RTg@jxY%nhlZG~xb*Ph7x z`gMVp&A*K7pmT1N!ZAA~GzoHRm?)A}ha%mmYe03&gY?H`3z5|||9EcG=$&^k0J8?O z!m?G(K|2-zw1nANs$H$1UvY2mo;cQVmT&Yc`s}n2F+~zKMt}RP=tJngC%-YpT;Y~Z zXL(AFFy+h-!FEP6c7sYR5GsH_CI$vkwx)Wq3bzArYxb9Xn(T*1E{Oa0@Bi6PBD{Xp zf?I3HIIa`GMQC1C%^$IVW5;$xq*V+isi7Y46#!uogua$H5+W)6IUC`Eh!!-*-HI$i zEtq>?`i{i@$)Ky3VFMb@e*mtn-yrKtL1(h@!Rn}VBso6smW|qf6pF@69Y9Ac=qdt` z&;uJ$#j)Ut^$=A_^< z1AUc%0~{{uJFX0^CBj*>N&$;NM>qnHs?Hj~&5=KG+__x=Puywd*`V zA>rSVC0S~bpiD31-g+*SKSM1+6T=N3KiJsln&UaAIJc-D@Polp;k&EsGU-*J=M;dT zjX;P8z50DH2Kle@=ltUgC0bKc6ACUl(mqrH&HhbSl!JswrP;&itZ;z%CqC5=0HhLO z58K&nz_oz<`yrH=0t{4EQ2`w~fc0~VQJu!-BXveSMGb zLxj6Qzi75RT6qpl7L zDu6vuPk7n+r6{(dE@WxQ!CF<7_+Q&?=Cn|!5c5Kj4&+Xam*K9I0cD`*#C_2Q8O&ZF zXkqP6sQVu;3ZTP3)Ct~vdYtA`)OD~S4EmJ*EXxBl{kU5MD=dyR2aOv#RgR!{0B8&- z-lyE-M2H+uI|Sql?+By*x5nE=j)LIB^`GO+(?7RBof!u+;G%4@)Y1(+PU?m5jS6R>QJmpN+Qei5<^?=%KC zy5}5OcJYn-UYJ=@%wugRq@cdk+Jm316Qg7>Z%epM3?^Oq@BZ~Ma_XfXZ&deIl0 zNm5NhU;gOp^Q<^t9kt2v#>wH}%|(favd3?x0y8 z*ShgN)UtQkUBt!p^H}hN-+A*wQ5At{U%41~obazwf0kIT=t7+w`s(v6pFFw#@94Lh z6}BA8Rc2dTNKy|5P;3K&0tR-iGp6coxXwJ~h!-f}|M~2kPpFo>En_lf7s{)iQM``SCwTMdxE$C1SIcLftT3emF zt?(druBXRTIQN}qzIAKEo|BUeH2l8uKQqp_^Z{N{7w#_c4jJZt%3603v`A?7S>nK} zUJdm2q(<4e92bid`!^aeCEO6|CfZB%)*C-O%!*%!nyX1{YeDK`RrAKqFRc#S8vW%R z*zaE|Sy9tD?LP6D_p_d^x6z}S6?Pp2Mmz9*hk6aVHV$KDVOb!@dov2UVC^s82H1jv z9Jb|X9XPPlhf=aH#Ux<5)-K_l)pS_ny_~8|j$eV=-t5q09De9Y4vF@6?~6g0$WqCJ zBM?B{yHf9&Dx*V9y0o{aXlfG^?;Fk;at!$FtvI>n!dpkHnc9%))R0FPLDR6yD-~3C z*q>QZY&!i-*44&)r5k4$?ikDQp_)nE=DbVNQOK}i4iX1^-pC*1TOD^Heo^sfNTrb^ z*Enii?YRCatFFvIlVP>fMtFjIAhTM87Uzb+q3a{Nh3gfBE}&Gqh0U2NXSc(SILz&S zFRx2tyZ$8L<=up#xyTszz({%fJwZet?xyMe&nBJTCUy6Hi-~UGR`6!&)JFndODz-o zsNJjt^dVk-a`_uBJ5&z(P?Hk$g@=BAnB=5PGfS0a$`GvQu3p}xB!{@;d-Xh0{pd=N z?`aajEWdE25>~X|efJFJ6Rbn>)<=SzoV*`)nHKbbfrgNjB9mErb{IL?r-4(k8t3?- z@BJdLhJBDIKSL9A-~Wb1gHD{8?gn6{dmfOwCM6-Gwtv7dfN@q+wdpw4aJD3J3-k~N z2wx~OA0K`fYV0@6cv7~$1%d$T&DAI8PD{Y!vK@O!YK@)lW%a6eJD@JP@@RV{G6u1N znLY!RXIkGs$m}q4sIk>Db!FD1V&@hiVbHS=Uk#>Rd&(70R)(#5|7B}h7s2z*2YK~c z!BA(YY1uf!a>59Vs?S?X^}Y8$V%q6JC$LiFXmYE+tW0%p;k%c539D$h^U=1$e`8XD z&^M@fZJ&Mbj`{S7{QdjRN1|sX2nHY86l9=?Zt9zLI z5j?YL3L3h7FzG{#|uN(a6^PfshI*%dK6g@eoAPwGL-&^IxL+g9{D`$+Jv zkMYT6+V%95pFjSvvz=-_Q#UTXC2v_Yx{h)y_B`zZ>Z8~r(UFa@pIy4^dv(UMt?fKf z;LO#Pz3JY(Hsp}6M8l0hV1K?Zdil~WhI3v2FlgGdc1^wa3hmF+)lrX+rg$JAi!1fX zHkeGjZ2U2C^v1F36uk2R&vR~LPA(LANR*22=&~#W>c-$DgVzp2q&IHL6M)4HmnOiY z!HUg_2M-?PX-kC!sE;!wMwxCTnD>Go3Dx(52kE$LhO0r^d1-y`M|4s7Z@o3dEdZWUf>FJ_0)sY{+ID7-~`o}30 z?AMwhIHqNV7?*==J%G^F-LBA(SG56z1VAI1fhSn0c_7=A(fD=pLfK~z^&eMgeTS)l z{SCYruNUg*@e9s#y0e0y^>w}j9A^ih2WEb+}XAHsev65vy~~Uq`|gx&I*WV zZgxE|`02o2Uy_<@I?IY1NPE4f(1lHY*heSa|JFUg|2F_;LG(Z0=-oFP`Bmc3H5`Lh zz4nAC!Vl?QQW&y@eaN#m2sge0bVkXM#%6H(XtHTnwNvLP*RrS?HR9@fm6d9MIa#8! zaC|M86iDh0=nU>Wepwy_rP8T>J>CB~N8xV%% zk%mb?V9&0SIrx6^u_7&bJrsGqh&O*lxO?a~u*l-%uSm2yZ*Vx&Qw7UPz)gP(& zi2n40^0w#9cHrdNQx-%{s=*zsK;-VDUDYWf*S=6Q@&>n?@`N~kVsv_0`L%un~v63 z`chl<`kg;o7i{mqw0`~8e|TJM*_-Vj)2=@IEN(Ocx7z(^j`Z1RR-g#oPoF;*=r6Jg zO?m^6aPY!2A501bd1)ylj#yyry1un8YaTz?`LSWycukG^qup!ZF@c}wS`61(?!Z4o zDK=`Q56;J${Ko7NfrGwC-dDt|7QI1JcUexE8k|>1$lFtBZB7V)cGN=Ki?`idTf~Ou zq)*E2r{CYxt80IQSBYo;-9sTiAHC)2A$IrfP_A}?%jt34RA(2}iPMJAE{c-ZcHwZV zXiC<7VsK+&rs?O$kNi`e;F(B*pxY5DCDq8#*b{@?-XWBhZm*4@L1jClyXYK-a*Smw z+3#P)tyD2grJ}M~3G#wOF^?190C(y->)(Yg`{E8ImOXE*9flqXCpgMn!3oEib-av9 zzZth>4zqz9;oY-qK5uhWi!e*`(+&O0+3KA!4kl0U_*yU3_vi6DA3gSA2UUQ@j*c(V zKLtF>EP9PV%5YPYhppmLsy4a}>V8u+APyLbA!$v4B8E=ou zeec*-3mWXdJ2n&~qgAw$ZgZ{vl=(9*%x-OrY5@jv0us=JLALhsbbrll#{&D~$4tnY ze`bl$9;lz`Gl2Z!6C2g;64&S9^B2<22i(fVI}X5;TuQNpsah|zVs9gse{ce#U$yy0 zDvgBcz(a^0Jn*0}Bhq2^*;;4Oma=lcW|@+yhS^|J9x#rDI5-9 z^Hi^=hgD-a9Ma|RWedSs_hd0lBlDrO>}|VVkV+I++h2Wb3;iR29`5{59+PESAI7hS zMG3rA>0@v2wY2bu@q&Sz)%JJLKes5-z!Ql(m9-vEe)7u7e<`dd8m~_I*_YaHJ*b+D zGZwt7PXZRAh{wv{u`w~-)1nB7FSqe7r;S`cNccG$x%G<7(!Y9r-`=xqxd1kHSDP=I z-;K)$Z0zb-_7~|UUI~eH&a+5L-D*iIRAz$Nio%Yup!x}j2Vv5ex`wIlp^W!|vSu`E z%(8gUi^}O;a5r;)$`GK0jEc)#o95kP@|S66wD}fMc0}jfnmL{g6`P4ojJ&QKTvO7W zP?fzvFp%WJrt0zJ^0l?Th6P#0U>cBdDS#g#K#INqLbf!%m03_~l0=!J8LKc1Zm&Pc z=zF!7m8uvyxIuqT)1cCpUL&^1&a*b0W;)-rQI~5t{&T0Bo7=_wIS}XGL=is=0TBpL zl_a4NBAXjnU7NQm8V#)u#T)|}jF zbs4R5Ai=jn_q-<@(6-eqS!@)?2fQBjiB{E%YG_n+fHw;wEWknTpy$DlD4=klYiZF_ zKI&GKz3pI}3V3Z`qmoIe4CV!i>E(3A#yi*K+L9$?x#kvfGV=FV*)>snX`y9K@Xs!Q zDyGjnHsz<*ADVIeucgF|FC0+;*3X2%6CyCQ z_`CFA?dzUm{w#i4-^Il~(G^vX1REP7hB{Q&Yd`x!rUC-ZGo&1ix_*d08%yCZ$yV@E1VIKL zmn$tE0C8riDN#rRZ8n1nMVZ>0Qj_1{%^}>_ZL)Gt;dFiuWEOLug6CteKKb|@1e8JH zF9(aXOgfs4S}*`Wd^y2omhA&d1L#(>@*5uIN}H2J*exr&rfo3J34Omz-9}Zr*UZeEY}k z^AYwNw||@ufwFwIwXE{)H16LR(xNN~zZeYIWh_Llv8LhPyLyANp4kf`PxC>Yy79HG zWHgHoI5i0TpKh-FAL=gp=kbJ!&{MXtlaVl%G$K?+9wn4zFm_VZFv-4FvXhW~E0TT5 zzVq1keP_nLFWCo~@x3#B|Ay}m-}z}?pU=7Xyze>ZE}wJmIrvKN)=*=yG_ZV@IBf1# z>0rMiduL^^FF}U+SYIZY2p|OK*e_vx0ziP^qbg-E#Bt7LYz0mtWlrx(dm#*xI3o&h;GCi1sciew{y0V($ix-+ z0n>+ftG%YhvFN;L*Z```ESLAhKUp1RT^~9(&(X&CU_bn0&?qZ#Bffid%bhTOym#Sb zLI(_OKSM9)8G?(ME)Jh^?)0vK47aOFnJ8apM@OtKAZEkWbPrjZ);g@$)|L(%_cQCI z_!|v;e~SEZmYiQdOR(fyFYJ}REG4eXEGem@9PVvo$=5f6 zq=8Ig_+9YzTJt)2EGAp{UxckX4Ba|q+hTY?K}pQskm} zb)BIf87H;c(`1~#UBa7^Z@+r0y1e|$Dv+Y{BYl0}lb{{og>0UdU}cS^$gMaZyCNLI z=4djNkBr*|^kq5v72bb{m6Xx|@y`4UKs@`6G3Oq_Y3Jaw1)yX*I{#*j0Sk5uD6JSN z#-U%T_4`^@G|ZUUJ)WPRzvz$woA!JU*LC8a>mS2IN&Qh9iIl7dg9}|5g(DUtk9Ov@ z!r=ZO_ioUQ{S|$`AqdWOeEroi8p!6fIKxxfS(_0-?wL=(r&rVEdJm}jt``yEdY!Uhcw2ZTdMqdXCAL@$f{=aPaK2X52Yf`;3Ls=m3dM2 z2Z+#ss?TjKATD*)@dl3ypjF0yYp@9fJ6z5!M7q^Lh9qBY=MFf1@F4bMdN|0doQA&j z+GDBFna^Pn%~O|kUOCjs&+A$FtIaP%n*4u_T<>10kq-3dEV4Ux6kr9Yzt7D*lVYCH zlZ+0m;5gin?_g83kJAx3aVCVu(@lY*5UD-v|02>W+@i?`J0&Ufz|)fR&fRP1zii%b zY@CAqM%Tn&ZLr$P$=A)PPG?~-iZWp3z=4{esN~s3I^!jST-fZ=bIM8_jF?NH=uP0T z&&si-w+6+dR_gJ>+En-Ip-!~)N0~8B%&sM=g_+G zJ;EL=w`I1Hu`j>`mKe#w{h0VGA>0m`(Q9OghDdV$H@Hi8MhSv68=dQ?fscY6%z0X1o*C zV9@ILpv2a2z5R{~cXUK&`$pN_Mpnm%FI9RrRgCgoLg(o}HST%XB;#E;d%pd`d3hOg zR{nRmDRq8&;2$V)C5eZZmr}mUi4eW>5dKac6jjm!?`!E5gf=XH46agp?w3P+{rzc= zx)MBXdHXFI`su#H!rPbb+I!Ep)(LJ{*5bD~oh~slvhuquEyLn4;G;WLJoUv=C1hyW zP-uqgHr)7T@|$Fo59lO`UH-JBQDm|# z_#lKu5%${?n7n_QcU-D^uPFdy(Yc+LWARK>GA-wpI;;L|DO=Xt_WC#p_p$xiM#}{# zpKmYA9e2yxXY$rfIn~ei+XAbfcV$%Ve(C3#?o@C2bc_RT-rdOYX%1Paam8fLUBS8m z`y?I!MfNbrxH^2$M&s$zJ2S>{R~W-oecfL?z&(?&Fl+yO;aJ70eSzJp%U<&l6n|Fq z{mr}(?VU=Bsh?%jdF`uD=KS!4?*$ND@paBJYaoQz71@2s-K$g#kE!X|dsa(Uf41r{ zIZ|@DzVwm(2qaK?y3l%N*49rq^J#cwWO09@*z(|{!Dgm~E*{H+Kv)!{Rk~)AVU1w1 zhWZlXPNP4jt4nhWAkL>p%v%gVN@I4r3pW%&YL|z&`3e556FMt%TyrdUeRDJMw!`~) z5|<>^*t@VPqN+5=OK6^>=Ip^PuFkw~JU?B30IOM&2P*f5!s<>T^Pqa2$9|XOtG7-r zG9D+d|AULgzUI7R7Dv{WZ!n8|NoHodb1LK>7kd0uZ7WYh$Ph_l_EVllgaFR) zZv1g`yQX5NKn2?0zwO?W@@|jgMJsOrhcE!fEn)FMRP@>2GE6i}BzOF{R@M&;YG~u6 zcRJqMp0e!&yGO|C0ClopsR*`kkpoT-I60439vJR{D+1#?>OoxX%?@js=_6NXTSkU9 zcI?7H^B7u)j0+y*VuC0YD4vs*;2yI27)Gp=F2i@i)T4V1RvdYGdEclv=eVgQo)|}v zy4r7noP`Bl8bM7uUfmQ(f0meEU1&Abwz_qbm-kBRN7PtL2&!STiva$827?xl{4Pyt6=K^7^#xU)A^v|cz#XBi1A{PUp5VZCa6 zlM0XfZJvD*#OoLoxV#b;^Tj>(!_sqwK%Da4X@Y_mPZf6Nc-gr4Pn!s}^v*{`$5KCr zhf#lMgd=+mVw!CM+HJ2! z*wMSC<@@#XARytNrY?UhjB5UB(e}|^2CYH?ygO!@rKO@MtVzSs_{cw`;p7z_N&VPc z!r97^U%%ElPRX(NzW$iAD26mR@zVYOpoIf;NvEU3OymYFI{BVAZi0ejmDWKQNP{!C zMNfuB+H5b4;DrT9ID$FuVx(_kXT0f&lV*PbPjAzh&n4!f0lH6|gsDFdbY&7b^>1gM zfs7@1$)A34LYCOUGn>AN3CrswD08{iR$g^2_P`jT7)eMEM{p%XBQ)-%G! za|MrqKktUWDJpk7f*z(rw6sNf-5J-?lQ~PilQlayIr*F3iNJkR!Henn+Lz$a-QRGvQ!gjzfyr=INli^n6f+4qC$K5y(73RJ zWvZu1#PLhBXSQKvY0oqT zrj+ikGTUM4QiM^57QA7_GbDUU);pB+%juAh?oI~HV8f}cqXF!`vWUdgN!wz%I}*n6 z9K>XE9Zu5IaxE>br3wf_@27htGME(94s1)fqage*oQ4%%dRkUTs23&0fCVoGG0Ev> z*nD<*N798d=>ovjF+TdUoB}Mj1uzfE7eotV^3#C{uW5~Ko9$?PP)j%1*S=sWfE+Z$ z-0)j4UoZf>rea0EPh)%}tUmpHeH#3rhogcUNu1>7U8mJ&P5+^<5XFF`950eghe8W! zE0ScxV7FawDtn#;``nd)g}y?S=0Q3gVdLlNuLX#ZC`ar2;_Do zZLCIyO@ZySXVq7Q6e5G14~?J4{^@;C-5P6xad@{fe-;%Lwc>r&84YVaIY?@lsCbJX z`?+`wql%2wW>QGE757={8yjP>ZXC`=Hr^Nn7l|h)*V(|Vy&oKZZ(oqR3vSxcPhq#v z6adSLk|%A*dxzQWe7@?0jUqmsTJA(1*CB?BiolWgaw1O>;JlhCmWg=69SmzJKdr)i z+uECl;x~@B4@S%6s;oB^wL6z_gwz}bZ9!HEVmExcWTKfb!DjZm<~3k9g4Ib$Nqy8; z0uZKkBN3C*Zh{+;WF0wV4=bJrxXEFL|GEd~M#ja* zccU1XpFDYzrw=T1K?8+~=MwPdWmX%&WK|kb0M7K8T3KmnX|=UD1}Y$t@Y$yQQCctq z1%p?j>Ehzz_Wu^t;-Z0?NYfEINYh*i4AaTc5lkOT&&%UeRC-!SB(qvJ#?D7mIN{~2 z{hm@9P)1Xxh`obD3HTKk^GCG%`ud8EADRAr1bKB&`gudZ+k>@X%oQI^6;KHsYjSRF zYfCNdnd#I8MRl@WX5{B1AuI{!x!F%=uhKvt3{f;>&Teu8R7XKTQQ&Uo;o;%P$cUJb z6dVqXXm4qGxcFW=@ZlNeoL{3fd)Mse%hZm_%E~WZypSGB`~~pz!TQ}EWoil0>Y~x; z*o%z(R{}DW3@YpvK~int-xWvS71;G>&jkq(F>OAS`Dtm_*-jcMSTA>CFusaIEA(LI zC?Wa5a&9|)oh|RuAa1cUx^e8qDaYN0t;@1<8z(C)<%Arr%l!Gj!PTXDZjozpa&k}e z+q8l*3=v*WcxnEz7<72r>d&cXVf}FE7H^V?#p2+}zs05f_qaTqxw`lJYyDeJR+ LoginPage(), "/home": (context) => HomePage(), diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index 2f307e0..73465b5 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -4,16 +4,58 @@ class LoginPage extends StatelessWidget { @override Widget build(BuildContext context) { return Material( - child: Center( - child: Text( - "Login Page", - style: TextStyle( - fontSize: 20, - color: Colors.blue, - fontWeight: FontWeight.bold, - ), - ), - ), - ); + color: Colors.white, + child: Column( + children: [ + Image.asset( + "assets/images/login_image.png", + fit: BoxFit.cover, + ), + SizedBox( + height: 20.0, + ), + Text( + "Welcome", + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ), + SizedBox( + height: 20.0, + ), + Padding( + padding: + const EdgeInsets.symmetric(vertical: 16.0, horizontal: 32.0), + child: Column( + children: [ + TextFormField( + decoration: InputDecoration( + hintText: "Enter username", + labelText: "Username", + ), + ), + TextFormField( + obscureText: true, + decoration: InputDecoration( + hintText: "Enter password", + labelText: "Password", + ), + ), + SizedBox( + height: 20.0, + ), + ElevatedButton( + child: Text("Login"), + style: TextButton.styleFrom(), + onPressed: () { + print("Hi Codepur"); + }, + ) + ], + ), + ) + ], + )); } } diff --git a/pubspec.lock b/pubspec.lock index 62bef60..479a041 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -113,6 +113,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0-nullsafety.3" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" file: dependency: transitive description: @@ -147,6 +154,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.2" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" integration_test: dependency: "direct dev" description: flutter @@ -222,6 +250,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0-nullsafety.3" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.27" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+2" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+8" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+3" pedantic: dependency: transitive description: @@ -236,6 +299,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.0-nullsafety.4" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" pool: dependency: transitive description: @@ -374,6 +444,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.2" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.4+1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" yaml: dependency: transitive description: @@ -383,3 +467,4 @@ packages: version: "2.2.1" sdks: dart: ">=2.12.0-0.0 <3.0.0" + flutter: ">=1.17.0 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8efae22..baebcf5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -27,6 +27,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.1 + google_fonts: ^1.1.2 dev_dependencies: flutter_test: @@ -45,8 +46,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg + assets: + - assets/images/ # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see From 84fef5767beff22bc769d977b7486009ea7a0b8e Mon Sep 17 00:00:00 2001 From: iampawan Date: Fri, 5 Feb 2021 18:22:21 +0530 Subject: [PATCH 4/6] day 5 completed --- lib/main.dart | 5 +- lib/pages/login_page.dart | 99 ++++++++++++++++++++------------------- lib/utils/routes.dart | 4 ++ 3 files changed, 58 insertions(+), 50 deletions(-) create mode 100644 lib/utils/routes.dart diff --git a/lib/main.dart b/lib/main.dart index 81f5db5..7ba9441 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_catalog/pages/login_page.dart'; +import 'package:flutter_catalog/utils/routes.dart'; import 'package:google_fonts/google_fonts.dart'; import 'pages/home_page.dart'; @@ -22,8 +23,8 @@ class MyApp extends StatelessWidget { initialRoute: "/", routes: { "/": (context) => LoginPage(), - "/home": (context) => HomePage(), - "/login": (context) => LoginPage() + MyRoutes.homeRoute: (context) => HomePage(), + MyRoutes.loginRoute: (context) => LoginPage() }, ); } diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index 73465b5..541acbc 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -1,61 +1,64 @@ import 'package:flutter/material.dart'; +import 'package:flutter_catalog/utils/routes.dart'; class LoginPage extends StatelessWidget { @override Widget build(BuildContext context) { return Material( color: Colors.white, - child: Column( - children: [ - Image.asset( - "assets/images/login_image.png", - fit: BoxFit.cover, - ), - SizedBox( - height: 20.0, - ), - Text( - "Welcome", - style: TextStyle( - fontSize: 24, - fontWeight: FontWeight.bold, + child: SingleChildScrollView( + child: Column( + children: [ + Image.asset( + "assets/images/login_image.png", + fit: BoxFit.cover, ), - ), - SizedBox( - height: 20.0, - ), - Padding( - padding: - const EdgeInsets.symmetric(vertical: 16.0, horizontal: 32.0), - child: Column( - children: [ - TextFormField( - decoration: InputDecoration( - hintText: "Enter username", - labelText: "Username", + SizedBox( + height: 20.0, + ), + Text( + "Welcome", + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + ), + ), + SizedBox( + height: 20.0, + ), + Padding( + padding: const EdgeInsets.symmetric( + vertical: 16.0, horizontal: 32.0), + child: Column( + children: [ + TextFormField( + decoration: InputDecoration( + hintText: "Enter username", + labelText: "Username", + ), ), - ), - TextFormField( - obscureText: true, - decoration: InputDecoration( - hintText: "Enter password", - labelText: "Password", + TextFormField( + obscureText: true, + decoration: InputDecoration( + hintText: "Enter password", + labelText: "Password", + ), ), - ), - SizedBox( - height: 20.0, - ), - ElevatedButton( - child: Text("Login"), - style: TextButton.styleFrom(), - onPressed: () { - print("Hi Codepur"); - }, - ) - ], - ), - ) - ], + SizedBox( + height: 40.0, + ), + ElevatedButton( + child: Text("Login"), + style: TextButton.styleFrom(minimumSize: Size(150, 40)), + onPressed: () { + Navigator.pushNamed(context, MyRoutes.homeRoute); + }, + ) + ], + ), + ) + ], + ), )); } } diff --git a/lib/utils/routes.dart b/lib/utils/routes.dart new file mode 100644 index 0000000..510c16a --- /dev/null +++ b/lib/utils/routes.dart @@ -0,0 +1,4 @@ +class MyRoutes { + static String loginRoute = "/login"; + static String homeRoute = "/home"; +} From 0e57c79befdf26615e4491467a219b69d3538b70 Mon Sep 17 00:00:00 2001 From: iampawan Date: Sat, 6 Feb 2021 17:17:30 +0530 Subject: [PATCH 5/6] day 6 completed --- lib/pages/login_page.dart | 60 ++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index 541acbc..2739751 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -1,7 +1,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_catalog/utils/routes.dart'; -class LoginPage extends StatelessWidget { +class LoginPage extends StatefulWidget { + @override + _LoginPageState createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + String name = ""; + bool changeButton = false; + @override Widget build(BuildContext context) { return Material( @@ -17,7 +25,7 @@ class LoginPage extends StatelessWidget { height: 20.0, ), Text( - "Welcome", + "Welcome $name", style: TextStyle( fontSize: 28, fontWeight: FontWeight.bold, @@ -36,6 +44,10 @@ class LoginPage extends StatelessWidget { hintText: "Enter username", labelText: "Username", ), + onChanged: (value) { + name = value; + setState(() {}); + }, ), TextFormField( obscureText: true, @@ -47,13 +59,47 @@ class LoginPage extends StatelessWidget { SizedBox( height: 40.0, ), - ElevatedButton( - child: Text("Login"), - style: TextButton.styleFrom(minimumSize: Size(150, 40)), - onPressed: () { + + InkWell( + onTap: () async { + setState(() { + changeButton = true; + }); + await Future.delayed(Duration(seconds: 1)); Navigator.pushNamed(context, MyRoutes.homeRoute); }, - ) + child: AnimatedContainer( + duration: Duration(seconds: 1), + width: changeButton ? 50 : 150, + height: 50, + alignment: Alignment.center, + child: changeButton + ? Icon( + Icons.done, + color: Colors.white, + ) + : Text( + "Login", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18), + ), + decoration: BoxDecoration( + color: Colors.deepPurple, + borderRadius: + BorderRadius.circular(changeButton ? 50 : 8), + ), + ), + ), + + // ElevatedButton( + // child: Text("Login"), + // style: TextButton.styleFrom(minimumSize: Size(150, 40)), + // onPressed: () { + // Navigator.pushNamed(context, MyRoutes.homeRoute); + // }, + // ) ], ), ) From e7578cffb012838d1051c85b0766169821e918a0 Mon Sep 17 00:00:00 2001 From: iampawan Date: Mon, 8 Feb 2021 16:55:37 +0530 Subject: [PATCH 6/6] Day 8 completed --- assets/images/hey.png | Bin 0 -> 49839 bytes lib/pages/login_page.dart | 185 +++++++++++++++++++++----------------- 2 files changed, 102 insertions(+), 83 deletions(-) create mode 100644 assets/images/hey.png diff --git a/assets/images/hey.png b/assets/images/hey.png new file mode 100644 index 0000000000000000000000000000000000000000..caeca234ec31e9b3457e1a33b133c391358fc6dd GIT binary patch literal 49839 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 q+2UWi{)=G$I-dV#i+?HceiNQqaxs|$&7n* { String name = ""; bool changeButton = false; + final _formKey = GlobalKey(); + + moveToHome(BuildContext context) async { + if (_formKey.currentState.validate()) { + setState(() { + changeButton = true; + }); + await Future.delayed(Duration(seconds: 1)); + await Navigator.pushNamed(context, MyRoutes.homeRoute); + setState(() { + changeButton = false; + }); + } + } + @override Widget build(BuildContext context) { return Material( color: Colors.white, child: SingleChildScrollView( - child: Column( - children: [ - Image.asset( - "assets/images/login_image.png", - fit: BoxFit.cover, - ), - SizedBox( - height: 20.0, - ), - Text( - "Welcome $name", - style: TextStyle( - fontSize: 28, - fontWeight: FontWeight.bold, + child: Form( + key: _formKey, + child: Column( + children: [ + Image.asset( + "assets/images/hey.png", + fit: BoxFit.cover, ), - ), - SizedBox( - height: 20.0, - ), - Padding( - padding: const EdgeInsets.symmetric( - vertical: 16.0, horizontal: 32.0), - child: Column( - children: [ - TextFormField( - decoration: InputDecoration( - hintText: "Enter username", - labelText: "Username", - ), - onChanged: (value) { - name = value; - setState(() {}); - }, - ), - TextFormField( - obscureText: true, - decoration: InputDecoration( - hintText: "Enter password", - labelText: "Password", + SizedBox( + height: 20.0, + ), + Text( + "Welcome $name", + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + ), + ), + SizedBox( + height: 20.0, + ), + Padding( + padding: const EdgeInsets.symmetric( + vertical: 16.0, horizontal: 32.0), + child: Column( + children: [ + TextFormField( + decoration: InputDecoration( + hintText: "Enter username", + labelText: "Username", + ), + validator: (value) { + if (value.isEmpty) { + return "Username cannot be empty"; + } + + return null; + }, + onChanged: (value) { + name = value; + setState(() {}); + }, ), - ), - SizedBox( - height: 40.0, - ), + TextFormField( + obscureText: true, + decoration: InputDecoration( + hintText: "Enter password", + labelText: "Password", + ), + validator: (value) { + if (value.isEmpty) { + return "Password cannot be empty"; + } else if (value.length < 6) { + return "Password length should be atleast 6"; + } - InkWell( - onTap: () async { - setState(() { - changeButton = true; - }); - await Future.delayed(Duration(seconds: 1)); - Navigator.pushNamed(context, MyRoutes.homeRoute); - }, - child: AnimatedContainer( - duration: Duration(seconds: 1), - width: changeButton ? 50 : 150, - height: 50, - alignment: Alignment.center, - child: changeButton - ? Icon( - Icons.done, - color: Colors.white, - ) - : Text( - "Login", - style: TextStyle( + return null; + }, + ), + SizedBox( + height: 40.0, + ), + Material( + color: Colors.deepPurple, + borderRadius: + BorderRadius.circular(changeButton ? 50 : 8), + child: InkWell( + onTap: () => moveToHome(context), + child: AnimatedContainer( + duration: Duration(seconds: 1), + width: changeButton ? 50 : 150, + height: 50, + alignment: Alignment.center, + child: changeButton + ? Icon( + Icons.done, color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 18), - ), - decoration: BoxDecoration( - color: Colors.deepPurple, - borderRadius: - BorderRadius.circular(changeButton ? 50 : 8), + ) + : Text( + "Login", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18), + ), + ), ), ), - ), - - // ElevatedButton( - // child: Text("Login"), - // style: TextButton.styleFrom(minimumSize: Size(150, 40)), - // onPressed: () { - // Navigator.pushNamed(context, MyRoutes.homeRoute); - // }, - // ) - ], - ), - ) - ], + ], + ), + ) + ], + ), ), )); }