From 51466de9848c197b5f322563c9d101057597645f Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Thu, 27 Oct 2022 22:32:26 +0530 Subject: [PATCH 01/19] changes: =>logo image added =>started desinging loginscreen --- app/assets/images/logo.png | Bin 0 -> 22896 bytes app/lib/constants/colors.dart | 5 +++++ app/lib/main.dart | 7 +++++-- app/lib/screens/loginScreen.dart | 18 ++++++++++++++++++ app/pubspec.yaml | 4 ++-- 5 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 app/assets/images/logo.png create mode 100644 app/lib/constants/colors.dart create mode 100644 app/lib/screens/loginScreen.dart diff --git a/app/assets/images/logo.png b/app/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..97944ae09bfd3e977546ddf16c3e23f45c21feaf GIT binary patch literal 22896 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 LUKLy}YwZ6&(T*W& literal 0 HcmV?d00001 diff --git a/app/lib/constants/colors.dart b/app/lib/constants/colors.dart new file mode 100644 index 0000000..2b9f969 --- /dev/null +++ b/app/lib/constants/colors.dart @@ -0,0 +1,5 @@ +import 'package:flutter/material.dart'; +class ConstColors{ + Color backgroudColor =const Color(0xFFE3FDE4); + Color darkGreen = const Color(0xFF46C64F); +} \ No newline at end of file diff --git a/app/lib/main.dart b/app/lib/main.dart index 5b8e41a..1d0d917 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:app/screens/loginScreen.dart'; void main() { runApp(const MyApp()); @@ -10,10 +11,12 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( - title: 'Flutter Demo', + debugShowCheckedModeBanner: false, + title: 'Agrivator v3', theme: ThemeData( - primarySwatch: Colors.blue, + primarySwatch: Colors.green, ), + home: const LoginScreen(), ); } } diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart new file mode 100644 index 0000000..6682f5e --- /dev/null +++ b/app/lib/screens/loginScreen.dart @@ -0,0 +1,18 @@ +// ignore_for_file: file_names + +import 'package:app/constants/colors.dart'; +import 'package:flutter/material.dart'; + +class LoginScreen extends StatelessWidget { + const LoginScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Login Screen'), + backgroundColor: ConstColors().backgroudColor, + ), + ); + } +} \ No newline at end of file diff --git a/app/pubspec.yaml b/app/pubspec.yaml index c33e56e..dcbe207 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -60,8 +60,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 42378fd0059e4e7fc4eddae19c0f846493eaa66d Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Sun, 30 Oct 2022 09:55:48 +0530 Subject: [PATCH 02/19] login screen finished --- app/assets/images/profile.png | Bin 0 -> 3450 bytes app/assets/images/profile.svg | 9 ++ app/lib/screens/loginScreen.dart | 144 +++++++++++++++++++++++++++++-- app/pubspec.lock | 50 +++++++++++ app/pubspec.yaml | 3 + 5 files changed, 201 insertions(+), 5 deletions(-) create mode 100644 app/assets/images/profile.png create mode 100644 app/assets/images/profile.svg diff --git a/app/assets/images/profile.png b/app/assets/images/profile.png new file mode 100644 index 0000000000000000000000000000000000000000..413aceedaecaffc8702fe6026252b563d8baf6ee GIT binary patch literal 3450 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/profile.svg b/app/assets/images/profile.svg new file mode 100644 index 0000000..6dd665d --- /dev/null +++ b/app/assets/images/profile.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart index 6682f5e..780de13 100644 --- a/app/lib/screens/loginScreen.dart +++ b/app/lib/screens/loginScreen.dart @@ -2,17 +2,151 @@ import 'package:app/constants/colors.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:shape_of_view_null_safe/shape_of_view_null_safe.dart'; -class LoginScreen extends StatelessWidget { +class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); + @override + State createState() => _LoginScreenState(); +} + +class _LoginScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar( - title: const Text('Login Screen'), - backgroundColor: ConstColors().backgroudColor, + backgroundColor: ConstColors().backgroudColor, + body: SingleChildScrollView( + child: Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + color: ConstColors().backgroudColor, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox( + height: 100, + ), + SizedBox( + height: MediaQuery.of(context).size.height / 20, + child: Image.asset('assets/images/logo.png'), + ), + const SizedBox( + height: 100, + ), + Stack( + alignment: Alignment.center, + children: [ + //container + + ShapeOfView( + elevation: 4, + height: 380, + width: 320, + shape: DiagonalShape( + position: DiagonalPosition.Top, + direction: DiagonalDirection.Right, + angle: DiagonalAngle.deg(angle: 20), + ), + child: Padding( + padding: const EdgeInsets.only(left: 20, right: 20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + height: 30, + ), + TextField( + decoration: InputDecoration( + labelText: 'Email Address', + focusColor: ConstColors().darkGreen, + hoverColor: ConstColors().darkGreen, + prefixIcon: Icon( + FontAwesomeIcons.user, + color: ConstColors().darkGreen, + ), + ), + ), + const SizedBox( + height: 30, + ), + TextField( + decoration: InputDecoration( + labelText: 'Password', + focusColor: ConstColors().darkGreen, + hoverColor: ConstColors().darkGreen, + prefixIcon: Icon( + FontAwesomeIcons.lock, + color: ConstColors().darkGreen, + ), + ), + ), + const SizedBox( + height: 20, + ), + RichText( + textAlign: TextAlign.end, + text: const TextSpan( + text: 'forgot password', + style: TextStyle( + color: Colors.black, + )), + ), + ], + ), + ), + ), + + //profile icon + Positioned( + top: 40, + child: Container( + alignment: Alignment.topCenter, + child: CircleAvatar( + radius: 40, + child: Image.asset('assets/images/profile.png'), + ), + ), + ), + //login button + Positioned( + bottom: 76, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + minimumSize: const Size(88, 50), + ), + onPressed: () {}, + child: const Text( + 'Login', + style: TextStyle( + fontSize: 18, + ), + ), + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.all(18.0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + minimumSize: const Size(88, 50), + ), + onPressed: () {}, + child: const Text( + 'Sign In', + style: TextStyle( + fontSize: 18, + ), + ), + ), + ), + ], + ), + ), ), ); } -} \ No newline at end of file +} diff --git a/app/pubspec.lock b/app/pubspec.lock index 9295504..558aacb 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -62,11 +62,25 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.1" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + font_awesome_flutter: + dependency: "direct main" + description: + name: font_awesome_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "10.2.1" lints: dependency: transitive description: @@ -102,6 +116,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.2" + path_drawing: + dependency: transitive + description: + name: path_drawing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.0" + shape_of_view_null_safe: + dependency: "direct main" + description: + name: shape_of_view_null_safe + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" sky_engine: dependency: transitive description: flutter @@ -156,5 +198,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.2" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.0" sdks: dart: ">=2.18.2 <3.0.0" + flutter: ">=2.11.0-0.1.pre" diff --git a/app/pubspec.yaml b/app/pubspec.yaml index dcbe207..d276e5f 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -36,6 +36,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 + shape_of_view_null_safe: ^2.0.0 + font_awesome_flutter: ^10.2.1 + flutter_svg: ^1.1.6 dev_dependencies: flutter_test: From d02d72b064c44a4ca9d392341be31cf5cf096c69 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Sun, 30 Oct 2022 10:03:02 +0530 Subject: [PATCH 03/19] login screen --- app/lib/screens/loginScreen.dart | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart index 780de13..7734fdf 100644 --- a/app/lib/screens/loginScreen.dart +++ b/app/lib/screens/loginScreen.dart @@ -86,14 +86,18 @@ class _LoginScreenState extends State { const SizedBox( height: 20, ), - RichText( - textAlign: TextAlign.end, - text: const TextSpan( - text: 'forgot password', - style: TextStyle( - color: Colors.black, - )), + GestureDetector( + onTap: (){}, + child: RichText( + textAlign: TextAlign.end, + text: const TextSpan( + text: 'forgot password', + style: TextStyle( + color: Colors.black, + )), + ), ), + ], ), ), @@ -112,7 +116,7 @@ class _LoginScreenState extends State { ), //login button Positioned( - bottom: 76, + bottom: 12, child: ElevatedButton( style: ElevatedButton.styleFrom( minimumSize: const Size(88, 50), From ab7ceddff0156c75cf3f55e0ec51f87810f89f53 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Sun, 30 Oct 2022 10:20:13 +0530 Subject: [PATCH 04/19] sign up screen --- app/lib/screens/loginScreen.dart | 17 +++- app/lib/screens/signInScreen.dart | 147 ++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+), 5 deletions(-) create mode 100644 app/lib/screens/signInScreen.dart diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart index 7734fdf..08962c4 100644 --- a/app/lib/screens/loginScreen.dart +++ b/app/lib/screens/loginScreen.dart @@ -1,8 +1,8 @@ // ignore_for_file: file_names import 'package:app/constants/colors.dart'; +import 'package:app/screens/signInScreen.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:shape_of_view_null_safe/shape_of_view_null_safe.dart'; @@ -73,6 +73,7 @@ class _LoginScreenState extends State { height: 30, ), TextField( + obscureText: true, decoration: InputDecoration( labelText: 'Password', focusColor: ConstColors().darkGreen, @@ -87,7 +88,7 @@ class _LoginScreenState extends State { height: 20, ), GestureDetector( - onTap: (){}, + onTap: () {}, child: RichText( textAlign: TextAlign.end, text: const TextSpan( @@ -97,7 +98,6 @@ class _LoginScreenState extends State { )), ), ), - ], ), ), @@ -105,7 +105,7 @@ class _LoginScreenState extends State { //profile icon Positioned( - top: 40, + top: 30, child: Container( alignment: Alignment.topCenter, child: CircleAvatar( @@ -138,7 +138,14 @@ class _LoginScreenState extends State { style: ElevatedButton.styleFrom( minimumSize: const Size(88, 50), ), - onPressed: () {}, + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const SigninScreen(), + ), + ); + }, child: const Text( 'Sign In', style: TextStyle( diff --git a/app/lib/screens/signInScreen.dart b/app/lib/screens/signInScreen.dart new file mode 100644 index 0000000..faf253d --- /dev/null +++ b/app/lib/screens/signInScreen.dart @@ -0,0 +1,147 @@ +// ignore_for_file: file_names + +import 'package:app/constants/colors.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:shape_of_view_null_safe/shape_of_view_null_safe.dart'; + +class SigninScreen extends StatefulWidget { + const SigninScreen({super.key}); + + @override + State createState() => _SigninScreenState(); +} + +class _SigninScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + elevation: 0, + backgroundColor: ConstColors().backgroudColor, + foregroundColor: ConstColors().darkGreen, + + ), + backgroundColor: ConstColors().backgroudColor, + body: SingleChildScrollView( + child: Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + color: ConstColors().backgroudColor, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const SizedBox( + height: 80, + ), + SizedBox( + height: MediaQuery.of(context).size.height / 20, + child: Image.asset('assets/images/logo.png'), + ), + const SizedBox( + height: 100, + ), + Stack( + alignment: Alignment.center, + children: [ + //container + + ShapeOfView( + elevation: 4, + height: 380, + width: 320, + shape: DiagonalShape( + position: DiagonalPosition.Top, + direction: DiagonalDirection.Right, + angle: DiagonalAngle.deg(angle: 20), + ), + child: Padding( + padding: const EdgeInsets.only(left: 20, right: 20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + height: 20, + ), + TextField( + decoration: InputDecoration( + labelText: 'Email Address', + focusColor: ConstColors().darkGreen, + hoverColor: ConstColors().darkGreen, + prefixIcon: Icon( + FontAwesomeIcons.user, + color: ConstColors().darkGreen, + ), + ), + ), + const SizedBox( + height: 20, + ), + TextField( + decoration: InputDecoration( + labelText: 'Password', + focusColor: ConstColors().darkGreen, + hoverColor: ConstColors().darkGreen, + prefixIcon: Icon( + FontAwesomeIcons.lock, + color: ConstColors().darkGreen, + ), + ), + ), + const SizedBox( + height: 20, + ), + TextField( + decoration: InputDecoration( + labelText: 'Confirm Password', + focusColor: ConstColors().darkGreen, + hoverColor: ConstColors().darkGreen, + prefixIcon: Icon( + FontAwesomeIcons.lock, + color: ConstColors().darkGreen, + ), + ), + ), + + ], + ), + ), + ), + + //profile icon + Positioned( + top: 20, + child: Container( + alignment: Alignment.topCenter, + child: CircleAvatar( + radius: 40, + child: Image.asset('assets/images/profile.png'), + ), + ), + ), + //login button + Positioned( + bottom: 12, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + minimumSize: const Size(88, 50), + ), + onPressed: () {}, + child: const Text( + 'Sign Up', + style: TextStyle( + fontSize: 18, + ), + ), + ), + ), + ], + ), + + ], + ), + ), + ), + ); + } +} From 3dd1c2a304e6b96acab987ac716b97c665a2f57f Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Wed, 2 Nov 2022 07:55:14 +0530 Subject: [PATCH 05/19] app logo and name temporaly changed need upgradation --- app/android/app/src/main/AndroidManifest.xml | 2 +- .../res/drawable-v21/launch_background.xml | 6 +++--- .../main/res/drawable/launch_background.xml | 6 +++--- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 6074 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 3385 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 8027 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 14239 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 21112 bytes 8 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml index 3f2d403..6533fab 100644 --- a/app/android/app/src/main/AndroidManifest.xml +++ b/app/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ - + android:src="@mipmap/ic_launcher" /> + diff --git a/app/android/app/src/main/res/drawable/launch_background.xml b/app/android/app/src/main/res/drawable/launch_background.xml index 304732f..6a36c4f 100644 --- a/app/android/app/src/main/res/drawable/launch_background.xml +++ b/app/android/app/src/main/res/drawable/launch_background.xml @@ -4,9 +4,9 @@ - + android:src="@mipmap/ic_launcher" /> + diff --git a/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..d814fbc8d59ce084f856a7e8ff1d89dac9124561 100644 GIT binary patch literal 6074 zcmb_gby$>7yMF2J?pV4*5CjC2Tv_REmJne<=~lX9acMzX*`-$+=`NK}8YPudkOtwb z-*-_PZXRdkYzUH~-o@Zv>nz@<1`2tXaHMBJVEGz)P!X)5k6Vm9rb@Wuo(f2;Yt7i%)`gaK=U4_nYjh$pSr)y9_sz%FZ^#xjPA*&Kk5K5CHimt z|5p`}qmwrjL;8uyK3A3pSn*B`uy!HO_<-#>l*u|E-$I(ZlyVoEbiW(B+f13(kFhr$1^_V;{x76X9X zF#zDC{axpf0{~6Y0Kho^cO6e508m5$K;!!-_Fne?2nH8(#ddZEfWy}SKxPgAG#>zf z*z&JH|8D#DTKq3#<;1jM#f;MvlUx9IzzN_4v;hwQ3W#Bl6d(ae0GbUxq@Vu8@YyiW2o~-?h<`~E zVCaNcI7HYOw= zpvfB(9tvbhdYC%4US(ZUFfLM-{Mkb#DI*OQPOwCRbHa~IR_xAho4UR;or7Xx7q0XP zScr2}ArWM%d|V4e5IH*A3@qh>^2G8=sh+^!r9Vk`EA{9-=cyw`I+J(S7{=OOb4c^p zZC97l`I;CWn_$I0gQQwh{I1}Zr#G8aQ%qMkH9R)e8}YjVwCOsxmO`fwzy*Sa{Xzj{ zy0jIm8IWB(tO>*3&#fdNK2tw|sD%cp*W9kxWiJz%)WFcZT7G8-j-h_)SUb?!&X~W6 z1JA_w#cDpWyJZ`##a@b5I$2rjOu&_4147P zeOzN}XjUVm=WpWT`yec5iOT8Ira_-hPBzV}OvPRB?<~a~x$l+4Y#0bX0p@f_VDA?* zZER&ouGwWg+{|pxZ}Y$CXl|*8s3te|&TI7^&hE&;YSQIIX$4l3-7}pb!y+TB1>@3G z?43m%X%wj!oNPD1PlerQUnpJ}yN?s*%D2c(g)|(pIMgYa^U)EZ8cj=^oWzP~(;%C| z!;LS!4(7{sN(H!NW%}Ip*N;!YQugU!#u3U*DTGZx*&}X%6Ppto^Z`g+f3}ri(jjQ= zRpc7qHnVeb29i^h$>dF1G+$~`Fy(`ChqKB`?ICu*2?@R|_DSM)V5#L8LYWBEw7Bsh{sr=3*wB~PDF7{huuM5O~N!yLMXKA9_MiNkb0W|v7=Y1C^t zCdWI5iO37`L^jLJUR9zp0z0AmA%2r?+ng_B+E!fbd=oy``YZ9eL_~cPH>onl@0E`G zCcS>F^;)#M19Ff0x3U-s>quK#ZjxGGf^nOXU=2>5LZ=pu_=cE{O7PoaA|>97>k7G) zwjapiVWNi$pl{e7%3MLP>EMR021M7Z!@P*&l~5DU_TWk8$#3R*`W|GKc@ht2vIXq0 z!>TgHBAySXa>U0L>RHd(RaR#juH*HfZUC{w59-U@1DdIQTcoZ%veUO^C1e+ZYQKt# z98kz!l8rTGeomLXyT7Mr`*nwi9)yLo5E!|4(R0f1xDU2t`Tb>>g6{AW#;_Z}lGiCc zWA?<+|L%hOv+VWT>Vk1lio%P_*sxgkch7;~bN*VyvyKjhLyM~LGRs~Kgst2S@Ns^k zb%Q|PZE3B3zi+W1olm{Jgfgma6NT8|H7d9*QI7oa&86~z7N;JL=Fm`Eiq+jqbzGzJ zic^|znv3~Z@6HrL}LhSClbzdg;(ckJnb)iep7=+FAa%{#$ zF%7nW*TBgGP>}(q)gR1q)-R08tiqZZ?9eh}UulVj6I6W0%A_i%a(B*xko%CsDw{b9 z>ssAzlW8ler&9B^AJM}NV2=w`H2r=W-AlpkG?6wRrH<7;fi;UfgL&6cL6?m52k%F0 ztmn_7R%Ir810b$qUA;Uj!S#{P= z>GZSe3UrpXhmGKUMdyd};L3vbtCk;YufS&~DWBe@3`|LYT5~{%s9(ol*LGZ$!z?5_ zjEBr|_~c#KG;ckRR18dl=`~o4;f1$@ofXzP!C>{#!B;RbRUuXOFA>Vk3JL4fgrH(V z&dXg*XiaY2`Pv)t63t37Rw6Ncy>eHuz*@=UDWqDT*^5Q+Jd0f2A*9$fSo#C_T??D_5o{r0p znu5xjuY&DxT(p6t`InyEV|yt|%p0o3C0qr(+=`-$p%1a&xYCbJl))XTURQ zn;Y-N3AvDr4_6^0FY{L(i-C2&h&)CO!VzeSpH^>Z+kJo6(HDY?{yBaL~7tz@j*+4v%)^*^p?CiEByoO*!IRGqK(&J zwADR$9uMF6`9YUpE2#%h*N%2g6M5=&E2{T>qfg(A7>LA_Q#t++t%^Wqpd$jUMNL#D zD_vaKQtcFGb>C39|J=GY9~ntATup(xMMx&!m&anPcuVzby-bOHT`2S5i+ZI@vt4}c zjLhO+Jf-gfD-A#CZv@`=!dKg~9)^eHq8~q0M6a?{Ehb@d$q|n&C*kY&~jn*+S6$DAIeWxr&wA;ai0kxd=DhuIGG|GJt7Ji2*m;78PLU&*t zf7Nf7U4)UQ)_yc)!}77cH&ct79fgcue`hMU{1au)pIqGv_^c7>`p;o`4HaiQu2SMN z8MU`Bevy#9$5C}NddOQ46i$mMZS8+6Fxn75M)HF8;m~BIWD*Z+{FEf=DwFA062JE9 z#_dp}neT%I`Kx3_o41YjnPRG!SLiCQ*q)+u>W&PXC|G1uM%|IknRgOh<#R+L5^KzK zoE@`on{B!W0*{d2h18VP!9{X&Iv*)I@~(1=x?7*J9E@q)4!hEE9O4=N4v8S6r=%2s z`*P(AWixq*?S-GP2(^YrWSTtPlDnl# zY{()*(vVzy)#?E(vSQu$LY?a zq1n*isNou^36GG9n*39R$HFKtq94%>?-~j@><8GMpRt9&?rom99V>@6fxcJwFfHE_ zza?B5_Om99YenwK3=6LdS--xha??t)1KK|dDw0etOZPRm`UTt>SrE$|xyur~MlzbX zhg0t1QR-SQD~_YJ;4$jz`_z?D;hBzJ@oztzu$>P-@Yg*Km-#>5ZbIKW6-~^X+X!uu znzdb;RU=;ti-VP@{;E&DTyCwVn@-kQhAeKbq>@I5#PtTwz-B+Yx5V%>4c>1aCOyFX z9jDUQoi)rP)2UvheGtux$xG1o%_0;gHguCQFZIqMbZHQtT$~GOp|iMnEO*#DHtAlB zzSNAOg=gUDh;Mq*S5!sJj>Y8;KTmkv6p`5C(9hZ`kWeD*YK}_Pe-sz^D2fJ=-<&2# zFQPh|eWun%ExY0j>pB5A9E7^v%h09|jdt~C>lP!w(}rWe_`o9_Q4$&vc@-^7VpYP} z9()WR?6{-d4sl}5E~maspwIVgsf|42*yQwA;nfN{7K*)ARyy}b{kC~2{XCXG?TgY0 zhwcr)P^ferOngj8(0RFvD6NC#D{A&-QRZP6b@Z6E<&q^h?EQ>Iy3bl$?Jj6yBUiBD z3>H+y04LY3_lrvbpE6VPSJr+UUdNEjSOU4WbmPhO-Dxyqul1fItZC$n~pzqWfQPd$3j!bAAUnP4hY@@Gg~s5m~zDxVQ?SqQ~F4$S=;M z+$g)0XDRG|a^8JJk(O57HWMDRh;B+gotxt!_}!bjAAI4t{yIzl#YlmQ39cv7OMKUV zO_&E6c8Q9h7@AEu`>Zm4E_~rMB}b%oBxbnuoX~fUeT|2m$D{M(lv%8}EoKkNfwQ?7 zkO2<(p%X#4;pTJ6QJNz>NANoa{~f`VvIg|$NgOWK$iTH8MJLlQb3w%E&rweM6Oc!R zUZ{GIbuBZ|2)XEH4I$4_bIM>=t#8V?G7dLNb9PPKaJFmOiF3;={G(Tuu!JG9E273C zGLvFuc;0O)Vosj1{Lnx~CnJ^o{f0=tl6CLASQ%A-6>LB(c*1uV?x?*0*YM}rAS+9& z2D#S3x8^lu7;_sQ!;`l4<4;U>QHRx(g5a+!uXUdM%ycE8KQ`AgywtB&yQ&>=p=l2zB}e-=55g12H&CUd zj-MP`FF_e^D&%!GuGQs@+GwLCd=FpSuG}l5V*xc}?1T0@bsrAcJf^o)G9Zalj80%t zpJBQkC?}8YLJH-t-SCKtjDd{7t3QF!f(`voeJ0s8R4+uAMUV|LmJHi2@izE=c|~^Ow_*Q7F1h2m?x4vk0z(eSP2@>z8IozoUCdc%BEZ z!Jz_clFLO@qeQ=_|7>?@aHVsxOQ)c_9i4pxY?nk1DZ0w@tA&%!4tQVeCYja$Ywc1jnidsE^)*rqwu;knXJk%69O#`u z4(L%A+Fum}vz3#rubL|Zl->-6WQW%$uPJl<+YbcWi{g}m&q?cjVF;AEa;N$KD6TD@KF>b^<$~$3$8(ir?k&q zd32-9`luZfeT(O^65a=q*O4#-Ed`&1*}0VAwFe_U0&cXAzZdpc^tFdHB%ZXtYK!K~ zTd+kt*X550%<&5Bt*&W3Eu(%_Y1uJzoFsJ(S)d}P6HK3VT?(saN3$ag`QA=dF(u2`?JiNi9=$KzrsYn(k z(fXqu6qI{^$*SGlGc(vJzeKmSSj|Alg8m2W4ICt*`|(z~tAL8}q9JA@$R5m4>H~>w zbJ#)jO-FGfxZfreIL@StKMOL-QPzOGCHd?okXvaC`N+n5t;%U`@5Z-VZ2RS2uI#4* znE^M&Y6f9nZ(j78HMBiNE>ktVR{PUe7>~1^!u4hA z`oxV%qPlk7E(SNl+pM(3@@;LVhLh|D-*MW*@Rg6PIev3S?DxgL^9hYzI=u-FcMi38 zOTRT-;Ng^*tadoI-+H7Cre_0k>yDBiAuYco+;zFMy>T+@p(^U-Vj*K_!%f zJD|?%p7Ax_he$c$a%x(m1@*Lpp|@VkeJ^o|b&XV#?pWq-=G(>EaVm$OanRPtq`n!{ zI~A;vI8lVwkbCM+liQ$je_MHDnPwR$OA9VMH87q>G#KoU^G-d)d`8(u4ejcoZ&&z? zK*d{@L#6cvJH@#f-{unEz_Z&}pjWPhP<96P$;UpABAFz#1`^+xuAwSP1rcgAr*6#f b-+&s)-Zsv`YR2-F!RrL0|2brPb~E>1O}l>R literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..92d6d17c74cef23cb8e3a858d787260518760072 100644 GIT binary patch literal 3385 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 oyJMfI1KDHYrC}d_u;hgpH`0gy1@BxxY5)KL literal 442 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 diff --git a/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..506ac7c06c84fb7a997840a10d8b382a6f0863ba 100644 GIT binary patch literal 14239 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 diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..152b105d62a40d88a836f3757a4f4e642029480c 100644 GIT binary patch literal 21112 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 From f353c52fa7007c6aa5ae9147ad160f27ae7503e7 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Sat, 5 Nov 2022 22:49:26 +0530 Subject: [PATCH 06/19] login and sign up screen refractored --- app/lib/components/button.dart | 22 ++++ app/lib/components/input_field.dart | 24 +++++ app/lib/screens/loginScreen.dart | 156 ++++++++-------------------- app/lib/screens/signInScreen.dart | 150 ++++++++++---------------- 4 files changed, 146 insertions(+), 206 deletions(-) create mode 100644 app/lib/components/button.dart create mode 100644 app/lib/components/input_field.dart diff --git a/app/lib/components/button.dart b/app/lib/components/button.dart new file mode 100644 index 0000000..b29909f --- /dev/null +++ b/app/lib/components/button.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; +import '../screens/signInScreen.dart'; +class Button extends StatelessWidget{ + + String text; + VoidCallback onPressed; + Button({super.key,required this.text,required this.onPressed}); + + @override + Widget build(BuildContext context){ + return Padding( + padding : const EdgeInsets.all(10.0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + shadowColor: Colors.grey, + ), + onPressed:onPressed, + child : Text(text,style:TextStyle(fontSize:22,),), + ), + ); + } +} \ No newline at end of file diff --git a/app/lib/components/input_field.dart b/app/lib/components/input_field.dart new file mode 100644 index 0000000..69d750a --- /dev/null +++ b/app/lib/components/input_field.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import '../constants/colors.dart'; +class InputField extends StatelessWidget{ + String text; + IconData icon; + InputField({super.key,required this.text,required this.icon}); + + @override + Widget build(BuildContext context){ + return Padding( + padding:const EdgeInsets.only(left: 20,right:20), + child: TextField( + decoration:InputDecoration( + prefixIcon: Icon(icon,color:ConstColors().darkGreen), + label:Text(text, + style: TextStyle( + color:ConstColors().darkGreen, + ), + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart index 08962c4..9729edc 100644 --- a/app/lib/screens/loginScreen.dart +++ b/app/lib/screens/loginScreen.dart @@ -5,6 +5,8 @@ import 'package:app/screens/signInScreen.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:shape_of_view_null_safe/shape_of_view_null_safe.dart'; +import '../components/input_field.dart'; +import '../components/button.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @@ -27,133 +29,67 @@ class _LoginScreenState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ const SizedBox( - height: 100, + height: 160, ), SizedBox( - height: MediaQuery.of(context).size.height / 20, + height: MediaQuery.of(context).size.height / 10, child: Image.asset('assets/images/logo.png'), ), const SizedBox( - height: 100, + height: 50, ), - Stack( - alignment: Alignment.center, - children: [ - //container + Container( + width : 320, + height : 360, + decoration:BoxDecoration( + borderRadius: BorderRadius.circular(20.0), + color : Colors.white, + boxShadow: const [ + BoxShadow( + color: Colors.grey, + blurRadius: 5.0, + ), + ], + ), + child:Column( - ShapeOfView( - elevation: 4, - height: 380, - width: 320, - shape: DiagonalShape( - position: DiagonalPosition.Top, - direction: DiagonalDirection.Right, - angle: DiagonalAngle.deg(angle: 20), + children:[ + //image + Padding( + padding:const EdgeInsets.all(10.0), + child:CircleAvatar( + radius:45, + backgroundColor:ConstColors().darkGreen, + backgroundImage: AssetImage('assets/images/profile.png'), + ), ), - child: Padding( - padding: const EdgeInsets.only(left: 20, right: 20), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const SizedBox( - height: 30, - ), - TextField( - decoration: InputDecoration( - labelText: 'Email Address', - focusColor: ConstColors().darkGreen, - hoverColor: ConstColors().darkGreen, - prefixIcon: Icon( - FontAwesomeIcons.user, - color: ConstColors().darkGreen, - ), - ), - ), - const SizedBox( - height: 30, - ), - TextField( - obscureText: true, - decoration: InputDecoration( - labelText: 'Password', - focusColor: ConstColors().darkGreen, - hoverColor: ConstColors().darkGreen, - prefixIcon: Icon( - FontAwesomeIcons.lock, - color: ConstColors().darkGreen, - ), - ), - ), + //inputs + Expanded( + child:Column( + children:[ + InputField(text:'Email Address',icon:Icons.email), const SizedBox( - height: 20, + height:12, ), - GestureDetector( - onTap: () {}, - child: RichText( - textAlign: TextAlign.end, - text: const TextSpan( - text: 'forgot password', - style: TextStyle( - color: Colors.black, - )), + InputField(text: 'Password',icon:Icons.lock), + Padding( + padding:EdgeInsets.all(10.0), + child:GestureDetector( + child:Text('forget password',textAlign:TextAlign.end), ), ), ], ), ), - ), - - //profile icon - Positioned( - top: 30, - child: Container( - alignment: Alignment.topCenter, - child: CircleAvatar( - radius: 40, - child: Image.asset('assets/images/profile.png'), - ), - ), - ), - //login button - Positioned( - bottom: 12, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - minimumSize: const Size(88, 50), - ), - onPressed: () {}, - child: const Text( - 'Login', - style: TextStyle( - fontSize: 18, - ), - ), - ), - ), - ], - ), - Padding( - padding: const EdgeInsets.all(18.0), - child: ElevatedButton( - style: ElevatedButton.styleFrom( - minimumSize: const Size(88, 50), - ), - onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => const SigninScreen(), - ), - ); - }, - child: const Text( - 'Sign In', - style: TextStyle( - fontSize: 18, - ), - ), + Button(text:'Log In',onPressed: (){}), + //button + ], ), ), + Button(text:'Sign In',onPressed:(){ + Navigator.push(context,MaterialPageRoute(builder:(context)=>SigninScreen())); + }, + ), ], ), ), diff --git a/app/lib/screens/signInScreen.dart b/app/lib/screens/signInScreen.dart index faf253d..ba0b620 100644 --- a/app/lib/screens/signInScreen.dart +++ b/app/lib/screens/signInScreen.dart @@ -2,6 +2,8 @@ import 'package:app/constants/colors.dart'; import 'package:flutter/material.dart'; +import '../components/button.dart'; +import '../components/input_field.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:shape_of_view_null_safe/shape_of_view_null_safe.dart'; @@ -16,11 +18,10 @@ class _SigninScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar( + appBar:AppBar( elevation: 0, - backgroundColor: ConstColors().backgroudColor, - foregroundColor: ConstColors().darkGreen, - + backgroundColor:ConstColors().backgroudColor, + foregroundColor:ConstColors().darkGreen, ), backgroundColor: ConstColors().backgroudColor, body: SingleChildScrollView( @@ -31,117 +32,74 @@ class _SigninScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - const SizedBox( - height: 80, - ), + SizedBox( - height: MediaQuery.of(context).size.height / 20, + height: MediaQuery.of(context).size.height / 10, child: Image.asset('assets/images/logo.png'), ), const SizedBox( - height: 100, + height: 50, ), - Stack( - alignment: Alignment.center, - children: [ - //container + Container( + width : 320, + height : 400, + decoration:BoxDecoration( + borderRadius: BorderRadius.circular(20.0), + color : Colors.white, + boxShadow: const [ + BoxShadow( + color: Colors.grey, + blurRadius: 5.0, + ), + ], + ), + child:Column( - ShapeOfView( - elevation: 4, - height: 380, - width: 320, - shape: DiagonalShape( - position: DiagonalPosition.Top, - direction: DiagonalDirection.Right, - angle: DiagonalAngle.deg(angle: 20), + children:[ + //image + Padding( + padding:const EdgeInsets.all(10.0), + child:CircleAvatar( + radius:45, + backgroundColor:ConstColors().darkGreen, + backgroundImage: AssetImage('assets/images/profile.png'), + ), ), - child: Padding( - padding: const EdgeInsets.only(left: 20, right: 20), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ + //inputs + Expanded( + child:Column( + children:[ + InputField(text:'Enter Email Address',icon:Icons.email), const SizedBox( - height: 20, - ), - TextField( - decoration: InputDecoration( - labelText: 'Email Address', - focusColor: ConstColors().darkGreen, - hoverColor: ConstColors().darkGreen, - prefixIcon: Icon( - FontAwesomeIcons.user, - color: ConstColors().darkGreen, - ), - ), - ), - const SizedBox( - height: 20, - ), - TextField( - decoration: InputDecoration( - labelText: 'Password', - focusColor: ConstColors().darkGreen, - hoverColor: ConstColors().darkGreen, - prefixIcon: Icon( - FontAwesomeIcons.lock, - color: ConstColors().darkGreen, - ), - ), + height:12, ), + InputField(text: 'Enter Password',icon:Icons.lock), const SizedBox( - height: 20, + height:12, ), - TextField( - decoration: InputDecoration( - labelText: 'Confirm Password', - focusColor: ConstColors().darkGreen, - hoverColor: ConstColors().darkGreen, - prefixIcon: Icon( - FontAwesomeIcons.lock, - color: ConstColors().darkGreen, - ), - ), - ), - + InputField(text: 'Confirm Password',icon:Icons.lock), ], ), ), - ), - - //profile icon - Positioned( - top: 20, - child: Container( - alignment: Alignment.topCenter, - child: CircleAvatar( - radius: 40, - child: Image.asset('assets/images/profile.png'), - ), - ), - ), - //login button - Positioned( - bottom: 12, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - minimumSize: const Size(88, 50), - ), - onPressed: () {}, - child: const Text( - 'Sign Up', - style: TextStyle( - fontSize: 18, - ), - ), - ), - ), - ], + Button(text:'Sign Up',onPressed: (){}), + //button + ], + ), ), - + ], ), ), ), + floatingActionButton:FloatingActionButton( + onPressed:(){ + Navigator.pop(context); + }, + backgroundColor: ConstColors().darkGreen, + child : Icon(Icons.arrow_back_sharp ), + + ), + floatingActionButtonLocation: FloatingActionButtonLocation.startFloat, ); } } From efc76885a7904ffaf99d0f087503e34263bcc2f3 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Sat, 5 Nov 2022 22:51:44 +0530 Subject: [PATCH 07/19] launch icon changed --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 6074 -> 3558 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 3385 -> 2520 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 8027 -> 4457 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 14239 -> 6193 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 21112 -> 8270 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index d814fbc8d59ce084f856a7e8ff1d89dac9124561..b85b2dcbb8e038c0083d0223865f68e4a21208d2 100644 GIT binary patch delta 2849 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 diff --git a/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 92d6d17c74cef23cb8e3a858d787260518760072..6ac3555bfaca702023d1600cd24d6616dd59d3d6 100644 GIT binary patch delta 1805 zcmV+o2lDv28rT!C;R1gG0s;d800000000000000A2@3@V0t5&L|HJ?(5C8!L0{{U8 z0s;a90000000aU91qJ~J2nhfR5fc&=6(JTPF=2uK!~hoo0RaI4000000000000000 z009C6|HJ?$5dZ=K0|EvD0{{R300000000335g{>A@Ihg5fzf~Ak+B0JGXL5D3HJR zjj{-^3r2fjN|6|gF%?$g9`n%Y`0#J)MIFtxhc ze^>PKq6JQgt$q0?o1bdX8XrUHJsf4~0>W;a)SBB=l{}Io;qf+ByQV@@pO#ER(#O3Q zi8rB?W+PoR$3gq>D#{^kW#x!wxBmb_X>M86*A3^;TN;10sx<`)9LjkR+gE~M$ zZ%y+Ii*Cc6!%itJOjY$b(hXE8f;pUhf+p)Db(DRDA#yMfr2T;)Z9%--O?&M!DENcR z&y((z@>zevuzQ2KIws9nymm)Bz*?wq*F4cR{e}v6YgWLPuSrmK&=p#_@RDE>{CROD z#gZvuJm9ak>KtAaETWQb{4>;ae{s(nac4$oeI2_ym#DUvEb4x8yIEoawQFr}osjg^ zhk53q1snvdDD|r}!!5A=HI~FE2>goQ@&u|$#?pV0TtLEYJ7wE-H6IW@Q2ajW{Y}b# zFu9kp?wh*g1eJn?tW3D*jkQmlxXfDZ_dS-OWe$5?!&Bk^08RA(-1lB@s@V!}nt1Bp zEv{=d$nw^hdzR>fLgIFg(3)YDsCh{kiN(rms#DG^h9Rraa*`2g6uW%ZUKR;I+v85W z#j5l=9f1oh0){vOiUi=_XrRpmm%=nMSXzHvV37I~LXwRV}n^xApWvG54{L6Fy0GBF$*^5zlN%B+*eCJ|uAe z4)j`|S%|4f(&pW53{AC!iwA0a5Q*q)Jpg(D&T))qIm%L$rAktitR*Nyag`}+QnQ4i z2u?Dkty#iSoMlSRF^uQX7HNAhRTjNWlPv6Z_5e9eoB9bH!g zP7gNT6p>pU7v$j6>*r0=LI&-+qiRqj-G#nt{g+6XVQOvotB$_7)udW+D*RO2flk6l zlZB;U>y-U@&K3QC&!M#>@XxU5{wC}`mYNd3pt*N`ZK)F+Lug$$Rol#n9}89!_sH3c ziw3O_8-G8O#>-8FBPf5uoOR@(InD%fOF7=};C4R_zSMkc>m56!yqzMuWU#=P9gdsG za7Ke>r^U?2kl8VE8{*az#KPU&0G5(!HJw#PQyd|X{{YIYwy;!XaU-0iTP%I^^gNqQ vHp^&fq$Rf7LQsSuDMAp0CkaAQgyAVlQk-EaN^yjxIKoqmCm03B22cOlT#{K{ delta 2676 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 NKUpdNH~Jsf{s;Nq(cb_7 diff --git a/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 506ac7c06c84fb7a997840a10d8b382a6f0863ba..5ee2c326ea5c86842e60f8018fc9716193de7a37 100644 GIT binary patch delta 5509 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 diff --git a/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 152b105d62a40d88a836f3757a4f4e642029480c..79a429f8d2491df338150435e6197dfc57c3d1c6 100644 GIT binary patch delta 7602 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 Nw);QqIgh^|{trbO;d1~0 From cfa7257cfc98ff6a94ee9c363a34c6e45abf7e17 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Sat, 5 Nov 2022 23:05:07 +0530 Subject: [PATCH 08/19] launch icon changed --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3558 -> 2625 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2520 -> 1823 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4457 -> 3569 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6193 -> 5350 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 8270 -> 7466 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index b85b2dcbb8e038c0083d0223865f68e4a21208d2..54d23f516ae31dcbb815c1b61cd350c5dc0b0bf6 100644 GIT binary patch literal 2625 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

AlzO>5&HNGo{I3N} j)S0S>VEWa#qW}K^hAPIXFA)Q@00000NkvXXu0mjf!?M(M literal 3558 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 N002ovPDHLkV1h~LT4MkJ literal 2520 zcmb_bc{r478-Hd@B1_hyERigw(-;wvWz@*nmnK^>G8nSVSTYI6dWgit=vY3K$zF1@ zGshW|96O|TJkRgx&`1%ErZH&>V5rY{$MD{!(DTSNt~~ z>icncyE_0+kN!>me}#D634xa&(lRuI$k5`DSa%4EdH#h%x3Sw_IC&eB?QD!7PCkT{ zJ-@?l-{C7k0YMO_eVczNfV_=gKv>uJa`5(A+qSKkpWt`S7V`Gclmdak1{ec0g#WMh z?L7VO0HC!709Wd_nA^_))W!iIG5Rg0kPpD_SO98z1Mp=07cmIv3-|Bu3>ZPr1VQ4uk5xjph~_$Y|F_lv^s`amxO&IKhDq2*v)aPI#!*k-`s z!g6ZX%Z7MTRR3h!LoRs~XB6;5D&WFg!ayHH-ZYT;aVkzpUyJ!LXG&kPP5s0ByiXgO z8yqlUKv6H%X-ut4_BPDD*tc)t^o=T>Nh9cNlhI0TBfpkZyHnmhf=xvS%T!| z~RCi*!HJ`;G` z=d`c7wEB#o4k{!mqqr+ch7ao^DWqmksGU|+q?+eLzJ`(F2j8nReU=<}XCk@d4<{$Wz{91EcEmV%0om~W#8{`ru{hwFZokG>{H`lL zxE9(26RY4pamV^)s;dZ_LOS%As)E;j^`K^6%0*1|4%LsXJ{S~9>fKNB#CU~EH|k^- z*JP^BN01vG+~CzdzW%wXt3y9gW(sylA_arGHn6u+_^J%oAa%NBd3n!5h z?Hd#MEv$-@Lv^aO+mhFe&-%(KFn{YaP6&Z%$rW;cinK4VR}n--*-?|uH;0nvUAMab zW$t$>@5Q={f9c3B|E$pYiKF*@G}>2&Z->!lW6-ZdQu?y+8O0P6iNwbpKBcxjs_}AV zePpUIQLORWu*)7^{jn*FrpKkLC#9qKRN?Vj@au?I6JGh`n18Yg~q#yS&OM^$jJ(vfVb=9M*90qdvh*-dP6E^*Dc*Lg{lG*8KSW7d>^h~6b& zi7J0%)^HCsh3&B$rIxe*6viCkS=)V6FE8r#=aCsk$)lm7W8zDaRq;)oc4eLzV~d{a zEU`u7Im~`k;h7YSOr}?I`A|Uys3}P{_s&|4Jy1kY{%WazN(ch!N`0qq6%Y zO+=IVRo_mhMfEbWE#>~$kI1Zy0eOomymgh8%}lF(fh+bO*t)S?7tAovV95D{h2AkesDP#p|5vrX1hH}1leKzFg zN-b-!Szu@WZs_0l@Aa_8At=0asWGh`<+q+F3cEg;ZsJL_s>M~CpL<;NcHWv|SmQ3R z8Oe~euE*$0)#nHXc07w{XMEV2s``Cus@-E4@WA1H;{vW#?<^v7+^>l8*Xg)7(EU$t zMk6zjgNz3a9l3(5j(H9VC1(d_#(nwCt7DUPdS4StoV|PsTm?O(WKZo5n{+zXCcXTS zGMbd3;$!nmYypo2ieBNsw8+K^+N!%4e`y=&lwRM`u9#m%L1Wy-e_aMlo+ArU|3egv23|{kDkk%<|%9U?) zuWY$3os!)ifQj)adffFSbwrK4|Mjpai#h%R(5T)Tx#uvpQgW#r&{1AfX-6O(%%MA} zhJRSq%{JHU^dc4>su@FD#mcFmg<_R>(KfM@Dp;Ewyb6{SOV?uBCM!v_aa(dm{tcE` BqYeN7 diff --git a/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index e1061c776985c1bebc5f72ff55eec9969c0338c5..be06a285ce324dfc7af6e02031c49956249152ff 100644 GIT binary patch literal 3569 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 literal 4457 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 literal 8270 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 Date: Wed, 9 Nov 2022 22:26:04 +0530 Subject: [PATCH 09/19] login signup validation --- app/lib/components/input_field.dart | 36 +++++-- app/lib/components/password_input_field.dart | 63 +++++++++++++ app/lib/screens/loginScreen.dart | 90 +++++++++++++----- app/lib/screens/signInScreen.dart | 99 +++++++++++++------- app/lib/utils/popUp.dart | 32 +++++++ app/pubspec.lock | 7 ++ app/pubspec.yaml | 1 + 7 files changed, 260 insertions(+), 68 deletions(-) create mode 100644 app/lib/components/password_input_field.dart create mode 100644 app/lib/utils/popUp.dart diff --git a/app/lib/components/input_field.dart b/app/lib/components/input_field.dart index 69d750a..2ed72cd 100644 --- a/app/lib/components/input_field.dart +++ b/app/lib/components/input_field.dart @@ -1,24 +1,40 @@ import 'package:flutter/material.dart'; import '../constants/colors.dart'; -class InputField extends StatelessWidget{ + +class InputField extends StatelessWidget { String text; IconData icon; - InputField({super.key,required this.text,required this.icon}); + TextEditingController controller; + + InputField( + {super.key, + required this.text, + required this.icon, + required this.controller,}); @override - Widget build(BuildContext context){ + Widget build(BuildContext context) { return Padding( - padding:const EdgeInsets.only(left: 20,right:20), - child: TextField( - decoration:InputDecoration( - prefixIcon: Icon(icon,color:ConstColors().darkGreen), - label:Text(text, + padding: const EdgeInsets.only(left: 20, right: 20), + child: TextFormField( + + validator: (value){ + if(value == null || value.isEmpty){ + return 'please enter your email address'; + } + return null; + }, + controller: controller, + decoration: InputDecoration( + prefixIcon: Icon(icon, color: ConstColors().darkGreen), + label: Text( + text, style: TextStyle( - color:ConstColors().darkGreen, + color: ConstColors().darkGreen, ), ), ), ), ); } -} \ No newline at end of file +} diff --git a/app/lib/components/password_input_field.dart b/app/lib/components/password_input_field.dart new file mode 100644 index 0000000..b9fed27 --- /dev/null +++ b/app/lib/components/password_input_field.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import '../constants/colors.dart'; + +class PasswordInput extends StatefulWidget { + String text; + TextEditingController controller; + PasswordInput({ + super.key, + required this.text, + required this.controller, + }); + + @override + State createState() => _PasswordInputState(); +} + +class _PasswordInputState extends State { + bool _passwordVisible = false; + @override + void initState() { + _passwordVisible = false; + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(left: 20, right: 20), + child: TextField( + controller: widget.controller, + keyboardType: TextInputType.text, + obscureText: !_passwordVisible, + decoration: InputDecoration( + prefixIcon: Icon( + Icons.lock, + color: ConstColors().darkGreen, + ), + suffixIcon: IconButton( + onPressed: () { + setState(() { + if (_passwordVisible == false) { + _passwordVisible = true; + } else { + _passwordVisible = false; + } + }); + }, + icon: Icon( + _passwordVisible ? Icons.visibility : Icons.visibility_off, + color: ConstColors().darkGreen, + ), + ), + label: Text( + widget.text, + style: TextStyle( + color: ConstColors().darkGreen, + ), + ), + ), + ), + ); + } +} diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart index 9729edc..91fa59d 100644 --- a/app/lib/screens/loginScreen.dart +++ b/app/lib/screens/loginScreen.dart @@ -3,10 +3,11 @@ import 'package:app/constants/colors.dart'; import 'package:app/screens/signInScreen.dart'; import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:shape_of_view_null_safe/shape_of_view_null_safe.dart'; import '../components/input_field.dart'; import '../components/button.dart'; +import '../components/password_input_field.dart'; +import 'package:email_validator/email_validator.dart'; +import '../utils/popUp.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @@ -16,6 +17,9 @@ class LoginScreen extends StatefulWidget { } class _LoginScreenState extends State { + final formKey = GlobalKey(); + TextEditingController _mailidController = TextEditingController(); + TextEditingController _passwordConroller = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( @@ -39,11 +43,11 @@ class _LoginScreenState extends State { height: 50, ), Container( - width : 320, - height : 360, - decoration:BoxDecoration( - borderRadius: BorderRadius.circular(20.0), - color : Colors.white, + width: 320, + height: 360, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20.0), + color: Colors.white, boxShadow: const [ BoxShadow( color: Colors.grey, @@ -51,43 +55,77 @@ class _LoginScreenState extends State { ), ], ), - child:Column( - - children:[ + child: Column( + children: [ //image Padding( - padding:const EdgeInsets.all(10.0), - child:CircleAvatar( - radius:45, - backgroundColor:ConstColors().darkGreen, - backgroundImage: AssetImage('assets/images/profile.png'), + padding: const EdgeInsets.all(10.0), + child: CircleAvatar( + radius: 45, + backgroundColor: ConstColors().darkGreen, + backgroundImage: + const AssetImage('assets/images/profile.png'), ), ), //inputs Expanded( - child:Column( - children:[ - InputField(text:'Email Address',icon:Icons.email), + child: Column( + children: [ + InputField( + text: 'Email Address', + icon: Icons.email, + controller: _mailidController, + ), const SizedBox( - height:12, + height: 12, + ), + PasswordInput( + text: 'Password', + controller: _passwordConroller, ), - InputField(text: 'Password',icon:Icons.lock), Padding( - padding:EdgeInsets.all(10.0), - child:GestureDetector( - child:Text('forget password',textAlign:TextAlign.end), + padding: const EdgeInsets.all(10.0), + child: GestureDetector( + onTap: () { + PopUp().popUpAlert( + context, + 'Comming Soon', + 'This feature under maintainance, available soon', + ); + }, + child: const Text('forget password', + textAlign: TextAlign.end), ), ), ], ), ), - Button(text:'Log In',onPressed: (){}), + Button( + text: 'Log In', + onPressed: () { + bool isValid = + EmailValidator.validate(_mailidController.text); + if (_mailidController.text.isEmpty || + _passwordConroller.text.length < 6 || + isValid == false) { + PopUp().popUpAlert( + context, + 'Check your inputs', + 'Please enter a valid email and password', + ); + } + }), //button ], ), ), - Button(text:'Sign In',onPressed:(){ - Navigator.push(context,MaterialPageRoute(builder:(context)=>SigninScreen())); + Button( + text: 'Sign In', + onPressed: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const SigninScreen())); }, ), ], diff --git a/app/lib/screens/signInScreen.dart b/app/lib/screens/signInScreen.dart index ba0b620..514c13c 100644 --- a/app/lib/screens/signInScreen.dart +++ b/app/lib/screens/signInScreen.dart @@ -1,11 +1,13 @@ // ignore_for_file: file_names import 'package:app/constants/colors.dart'; +import 'package:email_validator/email_validator.dart'; import 'package:flutter/material.dart'; import '../components/button.dart'; import '../components/input_field.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:shape_of_view_null_safe/shape_of_view_null_safe.dart'; + +import '../components/password_input_field.dart'; +import '../utils/popUp.dart'; class SigninScreen extends StatefulWidget { const SigninScreen({super.key}); @@ -15,13 +17,17 @@ class SigninScreen extends StatefulWidget { } class _SigninScreenState extends State { + final signUpFormkey = GlobalKey(); + TextEditingController _mailidController = TextEditingController(); + TextEditingController _passwordConroller = TextEditingController(); + TextEditingController _CnfpasswordConroller = TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( - appBar:AppBar( + appBar: AppBar( elevation: 0, - backgroundColor:ConstColors().backgroudColor, - foregroundColor:ConstColors().darkGreen, + backgroundColor: ConstColors().backgroudColor, + foregroundColor: ConstColors().darkGreen, ), backgroundColor: ConstColors().backgroudColor, body: SingleChildScrollView( @@ -32,7 +38,6 @@ class _SigninScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - SizedBox( height: MediaQuery.of(context).size.height / 10, child: Image.asset('assets/images/logo.png'), @@ -41,11 +46,11 @@ class _SigninScreenState extends State { height: 50, ), Container( - width : 320, - height : 400, - decoration:BoxDecoration( - borderRadius: BorderRadius.circular(20.0), - color : Colors.white, + width: 320, + height: 400, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20.0), + color: Colors.white, boxShadow: const [ BoxShadow( color: Colors.grey, @@ -53,51 +58,81 @@ class _SigninScreenState extends State { ), ], ), - child:Column( - - children:[ + child: Column( + children: [ //image Padding( - padding:const EdgeInsets.all(10.0), - child:CircleAvatar( - radius:45, - backgroundColor:ConstColors().darkGreen, - backgroundImage: AssetImage('assets/images/profile.png'), + padding: const EdgeInsets.all(10.0), + child: CircleAvatar( + radius: 45, + backgroundColor: ConstColors().darkGreen, + backgroundImage: + const AssetImage('assets/images/profile.png'), ), ), //inputs Expanded( - child:Column( - children:[ - InputField(text:'Enter Email Address',icon:Icons.email), + child: Column( + children: [ + InputField( + text: 'Enter Email Address', + icon: Icons.email, + controller: _mailidController, + ), const SizedBox( - height:12, + height: 12, + ), + PasswordInput( + text: 'Enter Password', + controller: _passwordConroller, ), - InputField(text: 'Enter Password',icon:Icons.lock), const SizedBox( - height:12, + height: 12, + ), + PasswordInput( + text: 'Confirm Password', + controller: _CnfpasswordConroller, ), - InputField(text: 'Confirm Password',icon:Icons.lock), ], ), ), - Button(text:'Sign Up',onPressed: (){}), + Button( + text: 'Sign Up', + onPressed: () { + bool isValid = + EmailValidator.validate(_mailidController.text); + if (_mailidController.text.isEmpty || + _passwordConroller.text.length < 6 || + isValid == false) { + PopUp().popUpAlert( + context, + 'Check your inputs', + 'Please enter a valid email and password', + ); + } + if(_passwordConroller.text != _CnfpasswordConroller.text){ + PopUp().popUpAlert( + context, + 'Check your inputs', + 'Password didn\'t match check once more', + ); + } + }, + ), //button ], ), ), - ], ), ), ), - floatingActionButton:FloatingActionButton( - onPressed:(){ + floatingActionButton: FloatingActionButton( + onPressed: () { Navigator.pop(context); }, backgroundColor: ConstColors().darkGreen, - child : Icon(Icons.arrow_back_sharp ), - + child: const Icon(Icons.arrow_back_sharp), ), floatingActionButtonLocation: FloatingActionButtonLocation.startFloat, ); diff --git a/app/lib/utils/popUp.dart b/app/lib/utils/popUp.dart new file mode 100644 index 0000000..94adc02 --- /dev/null +++ b/app/lib/utils/popUp.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +import '../constants/colors.dart'; + +class PopUp{ + Future popUpAlert(BuildContext context,String title,String content) { + return showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text( + 'OK', + style: TextStyle( + color: ConstColors().darkGreen, + ), + ), + ) + ], + title: Text(title), + content: SingleChildScrollView( + child: ListBody( + children: [Text(content)], + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/app/pubspec.lock b/app/pubspec.lock index 558aacb..2b98b24 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -43,6 +43,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.5" + email_validator: + dependency: "direct main" + description: + name: email_validator + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.17" fake_async: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index d276e5f..d68a99b 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -39,6 +39,7 @@ dependencies: shape_of_view_null_safe: ^2.0.0 font_awesome_flutter: ^10.2.1 flutter_svg: ^1.1.6 + email_validator: ^2.1.17 dev_dependencies: flutter_test: From 3786f082e6782c9974ede31aa417c6651ca2e3d5 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 11 Nov 2022 19:05:54 +0530 Subject: [PATCH 10/19] login authentication sucessufully completed --- app/lib/controllers/api_controller.dart | 22 ++++++++++++ app/lib/screens/dummy_Screen.dart | 18 ++++++++++ app/lib/screens/loginScreen.dart | 46 ++++++++++++++++++------- app/pubspec.lock | 21 +++++++++++ app/pubspec.yaml | 2 ++ 5 files changed, 96 insertions(+), 13 deletions(-) create mode 100644 app/lib/controllers/api_controller.dart create mode 100644 app/lib/screens/dummy_Screen.dart diff --git a/app/lib/controllers/api_controller.dart b/app/lib/controllers/api_controller.dart new file mode 100644 index 0000000..4f9299d --- /dev/null +++ b/app/lib/controllers/api_controller.dart @@ -0,0 +1,22 @@ + +import 'package:http/http.dart' as http; + +class APIController { + String url = 'http://10.0.2.2:8000'; + + Future getToken(String username, String password) async { + try { + var res = await http.post( + Uri.parse( + '$url/token', + ), + body: {'username': username, 'password': password}); + if (res.statusCode == 200) { + return true; + } + return false; + } on Exception catch (e) { + return false; + } + } +} diff --git a/app/lib/screens/dummy_Screen.dart b/app/lib/screens/dummy_Screen.dart new file mode 100644 index 0000000..285a482 --- /dev/null +++ b/app/lib/screens/dummy_Screen.dart @@ -0,0 +1,18 @@ +import 'package:app/components/button.dart'; +import 'package:flutter/material.dart'; + +class DummyScreen extends StatelessWidget { + const DummyScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title:const Text('Dummy Screen'), + ), + body: Center( + child: Button(onPressed: (){},text: 'Log out'), + ), + ); + } +} \ No newline at end of file diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart index 91fa59d..a26442c 100644 --- a/app/lib/screens/loginScreen.dart +++ b/app/lib/screens/loginScreen.dart @@ -1,6 +1,8 @@ // ignore_for_file: file_names import 'package:app/constants/colors.dart'; +import 'package:app/controllers/api_controller.dart'; +import 'package:app/screens/dummy_Screen.dart'; import 'package:app/screens/signInScreen.dart'; import 'package:flutter/material.dart'; import '../components/input_field.dart'; @@ -101,20 +103,38 @@ class _LoginScreenState extends State { ), ), Button( - text: 'Log In', - onPressed: () { - bool isValid = - EmailValidator.validate(_mailidController.text); - if (_mailidController.text.isEmpty || - _passwordConroller.text.length < 6 || - isValid == false) { - PopUp().popUpAlert( - context, - 'Check your inputs', - 'Please enter a valid email and password', - ); + text: 'Log In', + onPressed: () async { + bool isValid = + EmailValidator.validate(_mailidController.text); + if (_mailidController.text.isEmpty || + _passwordConroller.text.length < 6 || + isValid == false) { + PopUp().popUpAlert( + context, + 'Check your inputs', + 'Please enter a valid email and password', + ); + } + try { + bool jwt = await APIController().getToken( + _mailidController.text, _passwordConroller.text); + + if (jwt == false) { + PopUp().popUpAlert(context, 'login error', + 'incorrect username or password'); + } else { + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => const DummyScreen())); } - }), + } catch (e) { + PopUp().popUpAlert( + context, 'Authentication falied', e.toString()); + } + }, + ), //button ], ), diff --git a/app/pubspec.lock b/app/pubspec.lock index 2b98b24..4cebe14 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -88,6 +88,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "10.2.1" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.2" lints: dependency: transitive description: @@ -198,6 +212,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.4.12" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" vector_math: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index d68a99b..1711c8e 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -40,6 +40,8 @@ dependencies: font_awesome_flutter: ^10.2.1 flutter_svg: ^1.1.6 email_validator: ^2.1.17 + http: ^0.13.5 + dev_dependencies: flutter_test: From ad21b43f5152a5ad557994226ffb81bf8686c13b Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 11 Nov 2022 21:40:59 +0530 Subject: [PATCH 11/19] auto login finished --- app/lib/main.dart | 31 ++-- app/lib/screens/dummy_Screen.dart | 15 +- app/lib/screens/loginScreen.dart | 37 +++-- .../Flutter/GeneratedPluginRegistrant.swift | 2 + app/pubspec.lock | 154 +++++++++++++++++- app/pubspec.yaml | 3 +- 6 files changed, 205 insertions(+), 37 deletions(-) diff --git a/app/lib/main.dart b/app/lib/main.dart index 1d0d917..a9671bc 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,22 +1,19 @@ +import 'package:app/screens/dummy_Screen.dart'; import 'package:flutter/material.dart'; import 'package:app/screens/loginScreen.dart'; +import 'package:shared_preferences/shared_preferences.dart'; -void main() { - runApp(const MyApp()); +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + SharedPreferences pref = await SharedPreferences.getInstance(); + var status = pref.getBool("isLoggedIn") ?? false; + runApp(MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Agrivator v3', + theme: ThemeData( + primarySwatch: Colors.green, + ), + home: status==false?const LoginScreen():const DummyScreen(), + )); } -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Agrivator v3', - theme: ThemeData( - primarySwatch: Colors.green, - ), - home: const LoginScreen(), - ); - } -} diff --git a/app/lib/screens/dummy_Screen.dart b/app/lib/screens/dummy_Screen.dart index 285a482..6d3e48c 100644 --- a/app/lib/screens/dummy_Screen.dart +++ b/app/lib/screens/dummy_Screen.dart @@ -1,5 +1,7 @@ import 'package:app/components/button.dart'; +import 'package:app/screens/loginScreen.dart'; import 'package:flutter/material.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class DummyScreen extends StatelessWidget { const DummyScreen({super.key}); @@ -8,11 +10,18 @@ class DummyScreen extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title:const Text('Dummy Screen'), + title: const Text('Dummy Screen'), ), body: Center( - child: Button(onPressed: (){},text: 'Log out'), + child: Button( + onPressed: () async{ + SharedPreferences pref = await SharedPreferences.getInstance(); + pref.setBool('isLoggedIn', false); + Navigator.pushReplacement(context, + MaterialPageRoute(builder: (context) => const LoginScreen())); + }, + text: 'Log out'), ), ); } -} \ No newline at end of file +} diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart index a26442c..1312005 100644 --- a/app/lib/screens/loginScreen.dart +++ b/app/lib/screens/loginScreen.dart @@ -5,6 +5,7 @@ import 'package:app/controllers/api_controller.dart'; import 'package:app/screens/dummy_Screen.dart'; import 'package:app/screens/signInScreen.dart'; import 'package:flutter/material.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import '../components/input_field.dart'; import '../components/button.dart'; import '../components/password_input_field.dart'; @@ -115,23 +116,29 @@ class _LoginScreenState extends State { 'Check your inputs', 'Please enter a valid email and password', ); - } - try { - bool jwt = await APIController().getToken( - _mailidController.text, _passwordConroller.text); + } else { + try { + bool jwt = await APIController().getToken( + _mailidController.text, + _passwordConroller.text); - if (jwt == false) { - PopUp().popUpAlert(context, 'login error', - 'incorrect username or password'); - } else { - Navigator.pushReplacement( - context, - MaterialPageRoute( - builder: (context) => const DummyScreen())); + if (jwt == false) { + PopUp().popUpAlert(context, 'login error', + 'incorrect username or password'); + } else { + SharedPreferences pref = + await SharedPreferences.getInstance(); + pref.setBool('isLoggedIn', true); + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => + const DummyScreen())); + } + } catch (e) { + PopUp().popUpAlert( + context, 'Authentication falied', e.toString()); } - } catch (e) { - PopUp().popUpAlert( - context, 'Authentication falied', e.toString()); } }, ), diff --git a/app/macos/Flutter/GeneratedPluginRegistrant.swift b/app/macos/Flutter/GeneratedPluginRegistrant.swift index cccf817..287b6a9 100644 --- a/app/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/app/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,8 @@ import FlutterMacOS import Foundation +import shared_preferences_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) } diff --git a/app/pubspec.lock b/app/pubspec.lock index 4cebe14..29765a2 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -57,6 +57,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" flutter: dependency: "direct main" description: flutter @@ -81,6 +95,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" font_awesome_flutter: dependency: "direct main" description: @@ -102,6 +121,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.2" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" lints: dependency: transitive description: @@ -130,6 +156,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" path: dependency: transitive description: @@ -151,6 +184,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" petitparser: dependency: transitive description: @@ -158,6 +212,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.4" shape_of_view_null_safe: dependency: "direct main" description: @@ -165,6 +247,62 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.0" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.14" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shared_preferences_macos: + dependency: transitive + description: + name: shared_preferences_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" sky_engine: dependency: transitive description: flutter @@ -226,6 +364,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: "3.1.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" xml: dependency: transitive description: @@ -235,4 +387,4 @@ packages: version: "6.1.0" sdks: dart: ">=2.18.2 <3.0.0" - flutter: ">=2.11.0-0.1.pre" + flutter: ">=3.0.0" diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 1711c8e..26df3c4 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -41,8 +41,9 @@ dependencies: flutter_svg: ^1.1.6 email_validator: ^2.1.17 http: ^0.13.5 + provider: ^6.0.4 + shared_preferences: ^2.0.15 - dev_dependencies: flutter_test: sdk: flutter From 972e828ed554fbc3d2eae4255734a43c207f74a5 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Thu, 24 Nov 2022 21:59:48 +0530 Subject: [PATCH 12/19] otp authentication: phone number entering screen finished --- app/assets/images/img1.png | Bin 0 -> 127542 bytes app/lib/components/button.dart | 22 --- app/lib/components/input_field.dart | 40 ----- app/lib/components/password_input_field.dart | 63 ------- app/lib/controllers/api_controller.dart | 22 --- app/lib/main.dart | 13 +- app/lib/screens/dummy_Screen.dart | 27 --- app/lib/screens/loginScreen.dart | 164 ------------------- app/lib/screens/login_phone.dart | 121 ++++++++++++++ app/lib/screens/signInScreen.dart | 140 ---------------- app/lib/utils/popUp.dart | 32 ---- 11 files changed, 127 insertions(+), 517 deletions(-) create mode 100644 app/assets/images/img1.png delete mode 100644 app/lib/components/button.dart delete mode 100644 app/lib/components/input_field.dart delete mode 100644 app/lib/components/password_input_field.dart delete mode 100644 app/lib/controllers/api_controller.dart delete mode 100644 app/lib/screens/dummy_Screen.dart delete mode 100644 app/lib/screens/loginScreen.dart create mode 100644 app/lib/screens/login_phone.dart delete mode 100644 app/lib/screens/signInScreen.dart delete mode 100644 app/lib/utils/popUp.dart diff --git a/app/assets/images/img1.png b/app/assets/images/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..55ff320300670c516c8bcea8b6d9413147b16870 GIT binary patch literal 127542 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 createState() => _PasswordInputState(); -} - -class _PasswordInputState extends State { - bool _passwordVisible = false; - @override - void initState() { - _passwordVisible = false; - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.only(left: 20, right: 20), - child: TextField( - controller: widget.controller, - keyboardType: TextInputType.text, - obscureText: !_passwordVisible, - decoration: InputDecoration( - prefixIcon: Icon( - Icons.lock, - color: ConstColors().darkGreen, - ), - suffixIcon: IconButton( - onPressed: () { - setState(() { - if (_passwordVisible == false) { - _passwordVisible = true; - } else { - _passwordVisible = false; - } - }); - }, - icon: Icon( - _passwordVisible ? Icons.visibility : Icons.visibility_off, - color: ConstColors().darkGreen, - ), - ), - label: Text( - widget.text, - style: TextStyle( - color: ConstColors().darkGreen, - ), - ), - ), - ), - ); - } -} diff --git a/app/lib/controllers/api_controller.dart b/app/lib/controllers/api_controller.dart deleted file mode 100644 index 4f9299d..0000000 --- a/app/lib/controllers/api_controller.dart +++ /dev/null @@ -1,22 +0,0 @@ - -import 'package:http/http.dart' as http; - -class APIController { - String url = 'http://10.0.2.2:8000'; - - Future getToken(String username, String password) async { - try { - var res = await http.post( - Uri.parse( - '$url/token', - ), - body: {'username': username, 'password': password}); - if (res.statusCode == 200) { - return true; - } - return false; - } on Exception catch (e) { - return false; - } - } -} diff --git a/app/lib/main.dart b/app/lib/main.dart index a9671bc..c8f0842 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,19 +1,18 @@ -import 'package:app/screens/dummy_Screen.dart'; import 'package:flutter/material.dart'; -import 'package:app/screens/loginScreen.dart'; -import 'package:shared_preferences/shared_preferences.dart'; +import './screens/login_phone.dart'; Future main() async { - WidgetsFlutterBinding.ensureInitialized(); - SharedPreferences pref = await SharedPreferences.getInstance(); - var status = pref.getBool("isLoggedIn") ?? false; + WidgetsFlutterBinding.ensureInitialized(); runApp(MaterialApp( debugShowCheckedModeBanner: false, title: 'Agrivator v3', theme: ThemeData( primarySwatch: Colors.green, ), - home: status==false?const LoginScreen():const DummyScreen(), + home: const MyPhone(), + routes: { + MyPhone.myPhoneRouteName : ((context) => const MyPhone()) + }, )); } diff --git a/app/lib/screens/dummy_Screen.dart b/app/lib/screens/dummy_Screen.dart deleted file mode 100644 index 6d3e48c..0000000 --- a/app/lib/screens/dummy_Screen.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:app/components/button.dart'; -import 'package:app/screens/loginScreen.dart'; -import 'package:flutter/material.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -class DummyScreen extends StatelessWidget { - const DummyScreen({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: const Text('Dummy Screen'), - ), - body: Center( - child: Button( - onPressed: () async{ - SharedPreferences pref = await SharedPreferences.getInstance(); - pref.setBool('isLoggedIn', false); - Navigator.pushReplacement(context, - MaterialPageRoute(builder: (context) => const LoginScreen())); - }, - text: 'Log out'), - ), - ); - } -} diff --git a/app/lib/screens/loginScreen.dart b/app/lib/screens/loginScreen.dart deleted file mode 100644 index 1312005..0000000 --- a/app/lib/screens/loginScreen.dart +++ /dev/null @@ -1,164 +0,0 @@ -// ignore_for_file: file_names - -import 'package:app/constants/colors.dart'; -import 'package:app/controllers/api_controller.dart'; -import 'package:app/screens/dummy_Screen.dart'; -import 'package:app/screens/signInScreen.dart'; -import 'package:flutter/material.dart'; -import 'package:shared_preferences/shared_preferences.dart'; -import '../components/input_field.dart'; -import '../components/button.dart'; -import '../components/password_input_field.dart'; -import 'package:email_validator/email_validator.dart'; -import '../utils/popUp.dart'; - -class LoginScreen extends StatefulWidget { - const LoginScreen({super.key}); - - @override - State createState() => _LoginScreenState(); -} - -class _LoginScreenState extends State { - final formKey = GlobalKey(); - TextEditingController _mailidController = TextEditingController(); - TextEditingController _passwordConroller = TextEditingController(); - @override - Widget build(BuildContext context) { - return Scaffold( - backgroundColor: ConstColors().backgroudColor, - body: SingleChildScrollView( - child: Container( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - color: ConstColors().backgroudColor, - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - const SizedBox( - height: 160, - ), - SizedBox( - height: MediaQuery.of(context).size.height / 10, - child: Image.asset('assets/images/logo.png'), - ), - const SizedBox( - height: 50, - ), - Container( - width: 320, - height: 360, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20.0), - color: Colors.white, - boxShadow: const [ - BoxShadow( - color: Colors.grey, - blurRadius: 5.0, - ), - ], - ), - child: Column( - children: [ - //image - Padding( - padding: const EdgeInsets.all(10.0), - child: CircleAvatar( - radius: 45, - backgroundColor: ConstColors().darkGreen, - backgroundImage: - const AssetImage('assets/images/profile.png'), - ), - ), - //inputs - Expanded( - child: Column( - children: [ - InputField( - text: 'Email Address', - icon: Icons.email, - controller: _mailidController, - ), - const SizedBox( - height: 12, - ), - PasswordInput( - text: 'Password', - controller: _passwordConroller, - ), - Padding( - padding: const EdgeInsets.all(10.0), - child: GestureDetector( - onTap: () { - PopUp().popUpAlert( - context, - 'Comming Soon', - 'This feature under maintainance, available soon', - ); - }, - child: const Text('forget password', - textAlign: TextAlign.end), - ), - ), - ], - ), - ), - Button( - text: 'Log In', - onPressed: () async { - bool isValid = - EmailValidator.validate(_mailidController.text); - if (_mailidController.text.isEmpty || - _passwordConroller.text.length < 6 || - isValid == false) { - PopUp().popUpAlert( - context, - 'Check your inputs', - 'Please enter a valid email and password', - ); - } else { - try { - bool jwt = await APIController().getToken( - _mailidController.text, - _passwordConroller.text); - - if (jwt == false) { - PopUp().popUpAlert(context, 'login error', - 'incorrect username or password'); - } else { - SharedPreferences pref = - await SharedPreferences.getInstance(); - pref.setBool('isLoggedIn', true); - Navigator.pushReplacement( - context, - MaterialPageRoute( - builder: (context) => - const DummyScreen())); - } - } catch (e) { - PopUp().popUpAlert( - context, 'Authentication falied', e.toString()); - } - } - }, - ), - //button - ], - ), - ), - Button( - text: 'Sign In', - onPressed: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => const SigninScreen())); - }, - ), - ], - ), - ), - ), - ); - } -} diff --git a/app/lib/screens/login_phone.dart b/app/lib/screens/login_phone.dart new file mode 100644 index 0000000..275ba90 --- /dev/null +++ b/app/lib/screens/login_phone.dart @@ -0,0 +1,121 @@ +import 'package:app/constants/colors.dart'; +import 'package:flutter/material.dart'; + +class MyPhone extends StatefulWidget { + static const String myPhoneRouteName = 'MyPhone'; + const MyPhone({super.key}); + + @override + State createState() => _MyPhoneState(); +} + +class _MyPhoneState extends State { + TextEditingController _countryController = TextEditingController(); + var phone = ''; + @override + void initState() { + _countryController.text = '+91'; + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: ConstColors().backgroudColor, + body: Container( + alignment: Alignment.center, + margin: const EdgeInsets.only(left: 20, right: 20), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/img1.png', + width: 150, + height: 150, + ), + const SizedBox( + height: 10, + ), + const Text( + 'Phone Verification', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 22, + ), + ), + const SizedBox( + height: 10, + ), + const Text( + 'We need to register your phone before getting started!', + style: TextStyle(fontSize: 16), + textAlign: TextAlign.center, + ), + const SizedBox( + height: 10, + ), + Container( + height: 55, + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.grey, width: 1), + borderRadius: BorderRadius.circular(10)), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox( + width: 10, + ), + SizedBox( + width: 40, + child: TextField( + keyboardType: TextInputType.number, + controller: _countryController, + decoration: + const InputDecoration(border: InputBorder.none), + ), + ), + const Text( + '|', + style: TextStyle(fontSize: 33, color: Colors.grey), + ), + const SizedBox( + width: 10, + ), + Expanded( + child: TextField( + keyboardType: TextInputType.number, + onChanged: (value) { + phone = value; + }, + decoration: const InputDecoration( + border: InputBorder.none, hintText: "Phone")), + ), + ], + ), + ), + const SizedBox( + height: 10, + ), + SizedBox( + height: 45, + width: double.infinity, + child: ElevatedButton( + onPressed: () {}, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.green, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10) + ), + ), + child: const Text('Send OTP'), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/app/lib/screens/signInScreen.dart b/app/lib/screens/signInScreen.dart deleted file mode 100644 index 514c13c..0000000 --- a/app/lib/screens/signInScreen.dart +++ /dev/null @@ -1,140 +0,0 @@ -// ignore_for_file: file_names - -import 'package:app/constants/colors.dart'; -import 'package:email_validator/email_validator.dart'; -import 'package:flutter/material.dart'; -import '../components/button.dart'; -import '../components/input_field.dart'; - -import '../components/password_input_field.dart'; -import '../utils/popUp.dart'; - -class SigninScreen extends StatefulWidget { - const SigninScreen({super.key}); - - @override - State createState() => _SigninScreenState(); -} - -class _SigninScreenState extends State { - final signUpFormkey = GlobalKey(); - TextEditingController _mailidController = TextEditingController(); - TextEditingController _passwordConroller = TextEditingController(); - TextEditingController _CnfpasswordConroller = TextEditingController(); - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - elevation: 0, - backgroundColor: ConstColors().backgroudColor, - foregroundColor: ConstColors().darkGreen, - ), - backgroundColor: ConstColors().backgroudColor, - body: SingleChildScrollView( - child: Container( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - color: ConstColors().backgroudColor, - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - SizedBox( - height: MediaQuery.of(context).size.height / 10, - child: Image.asset('assets/images/logo.png'), - ), - const SizedBox( - height: 50, - ), - Container( - width: 320, - height: 400, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20.0), - color: Colors.white, - boxShadow: const [ - BoxShadow( - color: Colors.grey, - blurRadius: 5.0, - ), - ], - ), - child: Column( - children: [ - //image - Padding( - padding: const EdgeInsets.all(10.0), - child: CircleAvatar( - radius: 45, - backgroundColor: ConstColors().darkGreen, - backgroundImage: - const AssetImage('assets/images/profile.png'), - ), - ), - //inputs - Expanded( - child: Column( - children: [ - InputField( - text: 'Enter Email Address', - icon: Icons.email, - controller: _mailidController, - ), - const SizedBox( - height: 12, - ), - PasswordInput( - text: 'Enter Password', - controller: _passwordConroller, - ), - const SizedBox( - height: 12, - ), - PasswordInput( - text: 'Confirm Password', - controller: _CnfpasswordConroller, - ), - ], - ), - ), - Button( - text: 'Sign Up', - onPressed: () { - bool isValid = - EmailValidator.validate(_mailidController.text); - if (_mailidController.text.isEmpty || - _passwordConroller.text.length < 6 || - isValid == false) { - PopUp().popUpAlert( - context, - 'Check your inputs', - 'Please enter a valid email and password', - ); - } - if(_passwordConroller.text != _CnfpasswordConroller.text){ - PopUp().popUpAlert( - context, - 'Check your inputs', - 'Password didn\'t match check once more', - ); - } - }, - ), - //button - ], - ), - ), - ], - ), - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: () { - Navigator.pop(context); - }, - backgroundColor: ConstColors().darkGreen, - child: const Icon(Icons.arrow_back_sharp), - ), - floatingActionButtonLocation: FloatingActionButtonLocation.startFloat, - ); - } -} diff --git a/app/lib/utils/popUp.dart b/app/lib/utils/popUp.dart deleted file mode 100644 index 94adc02..0000000 --- a/app/lib/utils/popUp.dart +++ /dev/null @@ -1,32 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../constants/colors.dart'; - -class PopUp{ - Future popUpAlert(BuildContext context,String title,String content) { - return showDialog( - context: context, - builder: (BuildContext context) => AlertDialog( - actions: [ - TextButton( - onPressed: () { - Navigator.pop(context); - }, - child: Text( - 'OK', - style: TextStyle( - color: ConstColors().darkGreen, - ), - ), - ) - ], - title: Text(title), - content: SingleChildScrollView( - child: ListBody( - children: [Text(content)], - ), - ), - ), - ); - } -} \ No newline at end of file From 273ec81ac26d32bf701ca3b58d4cacf882bea8a5 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 25 Nov 2022 11:44:40 +0530 Subject: [PATCH 13/19] otp verfication screen design finished --- app/lib/main.dart | 4 +- app/lib/screens/login_phone.dart | 8 +- app/lib/screens/otp_verification_screen.dart | 152 ++++++++++++++++++ .../flutter/generated_plugin_registrant.cc | 4 + app/linux/flutter/generated_plugins.cmake | 1 + .../Flutter/GeneratedPluginRegistrant.swift | 2 + app/pubspec.lock | 21 +++ app/pubspec.yaml | 5 +- .../flutter/generated_plugin_registrant.cc | 3 + app/windows/flutter/generated_plugins.cmake | 1 + 10 files changed, 197 insertions(+), 4 deletions(-) create mode 100644 app/lib/screens/otp_verification_screen.dart diff --git a/app/lib/main.dart b/app/lib/main.dart index c8f0842..0fe9284 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import './screens/login_phone.dart'; +import './screens/otp_verification_screen.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -11,7 +12,8 @@ Future main() async { ), home: const MyPhone(), routes: { - MyPhone.myPhoneRouteName : ((context) => const MyPhone()) + MyPhone.myPhoneRouteName : ((context) => const MyPhone()), + OTPScreen.otpScreenRouteName:(context) => const OTPScreen() }, )); } diff --git a/app/lib/screens/login_phone.dart b/app/lib/screens/login_phone.dart index 275ba90..b42379b 100644 --- a/app/lib/screens/login_phone.dart +++ b/app/lib/screens/login_phone.dart @@ -1,6 +1,8 @@ import 'package:app/constants/colors.dart'; import 'package:flutter/material.dart'; +import 'otp_verification_screen.dart'; + class MyPhone extends StatefulWidget { static const String myPhoneRouteName = 'MyPhone'; const MyPhone({super.key}); @@ -96,13 +98,15 @@ class _MyPhoneState extends State { ), ), const SizedBox( - height: 10, + height: 20, ), SizedBox( height: 45, width: double.infinity, child: ElevatedButton( - onPressed: () {}, + onPressed: () { + Navigator.pushNamed(context, OTPScreen.otpScreenRouteName); + }, style: ElevatedButton.styleFrom( backgroundColor: Colors.green, shape: RoundedRectangleBorder( diff --git a/app/lib/screens/otp_verification_screen.dart b/app/lib/screens/otp_verification_screen.dart new file mode 100644 index 0000000..bbc21a3 --- /dev/null +++ b/app/lib/screens/otp_verification_screen.dart @@ -0,0 +1,152 @@ +import 'package:app/screens/login_phone.dart'; +import 'package:flutter/material.dart'; +import 'package:otp_timer_button/otp_timer_button.dart'; +import 'package:pinput/pinput.dart'; +import '../constants/colors.dart'; + +class OTPScreen extends StatefulWidget { + static const String otpScreenRouteName = "otpscreen"; + const OTPScreen({super.key}); + + @override + State createState() => _OTPScreenState(); +} + +class _OTPScreenState extends State { + Color focusedBorderColor = Color.fromRGBO(23, 171, 144, 1); + Color fillColor = Color.fromARGB(0, 91, 214, 107); + Color borderColor = Color.fromRGBO(23, 171, 144, 0.4); + + final defaultPinTheme = PinTheme( + width: 56, + height: 56, + textStyle: const TextStyle( + fontSize: 22, + color: Color.fromARGB(255, 68, 176, 108), + ), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(19), + border: Border.all(color: Color.fromRGBO(23, 171, 144, 0.4)), + ), + ); + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: ConstColors().backgroudColor, + appBar: AppBar( + elevation: 0, + backgroundColor: Colors.transparent, + leading: IconButton( + onPressed: () {}, + icon: const Icon(Icons.arrow_back_ios_rounded), + color: Colors.green, + ), + ), + body: Container( + alignment: Alignment.center, + margin: const EdgeInsets.only(left: 20, right: 20), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/img1.png', + width: 150, + height: 150, + ), + const SizedBox( + height: 10, + ), + const Text( + 'OTP SEND SUCCESSFULLY!', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 20, + ), + ), + const SizedBox( + height: 10, + ), + const Text( + 'please enter OTP to verify your number', + style: TextStyle(fontSize: 14), + textAlign: TextAlign.center, + ), + const SizedBox( + height: 10, + ), + const SizedBox( + height: 20, + ), + Pinput( + focusedPinTheme: defaultPinTheme.copyWith( + decoration: defaultPinTheme.decoration!.copyWith( + borderRadius: BorderRadius.circular(8), + border: Border.all(color: focusedBorderColor), + ), + ), + submittedPinTheme: defaultPinTheme.copyWith( + decoration: defaultPinTheme.decoration!.copyWith( + color: fillColor, + borderRadius: BorderRadius.circular(19), + border: Border.all(color: focusedBorderColor), + ), + ), + errorPinTheme: defaultPinTheme.copyBorderWith( + border: Border.all(color: Colors.redAccent), + ), + length: 6, + showCursor: true, + onCompleted: ((value) => print(value)), + ), + const SizedBox( + height: 10, + ), + OtpTimerButton( + onPressed: () {}, + text: const Text('Resend OTP'), + duration: 10, + buttonType: ButtonType.text_button, + ), + const SizedBox( + height: 10, + ), + SizedBox( + height: 45, + width: double.infinity, + child: ElevatedButton( + onPressed: () {}, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.green, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10)), + ), + child: const Text('Verify OTP'), + ), + ), + Row( + children: [ + TextButton( + onPressed: () { + Navigator.pushNamedAndRemoveUntil( + context, + MyPhone.myPhoneRouteName, + (route) => false, + ); + }, + child: const Text( + "Edit phone number?", + style: TextStyle( + color: Colors.black, + ), + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/app/linux/flutter/generated_plugin_registrant.cc b/app/linux/flutter/generated_plugin_registrant.cc index e71a16d..13ceb2a 100644 --- a/app/linux/flutter/generated_plugin_registrant.cc +++ b/app/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) smart_auth_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "SmartAuthPlugin"); + smart_auth_plugin_register_with_registrar(smart_auth_registrar); } diff --git a/app/linux/flutter/generated_plugins.cmake b/app/linux/flutter/generated_plugins.cmake index 2e1de87..9cadb0a 100644 --- a/app/linux/flutter/generated_plugins.cmake +++ b/app/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + smart_auth ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/app/macos/Flutter/GeneratedPluginRegistrant.swift b/app/macos/Flutter/GeneratedPluginRegistrant.swift index 287b6a9..ee992fc 100644 --- a/app/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/app/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,7 +6,9 @@ import FlutterMacOS import Foundation import shared_preferences_macos +import smart_auth func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + SmartAuthPlugin.register(with: registry.registrar(forPlugin: "SmartAuthPlugin")) } diff --git a/app/pubspec.lock b/app/pubspec.lock index 29765a2..2e2b693 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -163,6 +163,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + otp_timer_button: + dependency: "direct main" + description: + name: otp_timer_button + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" path: dependency: transitive description: @@ -212,6 +219,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + pinput: + dependency: "direct main" + description: + name: pinput + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.16" platform: dependency: transitive description: @@ -308,6 +322,13 @@ packages: description: flutter source: sdk version: "0.0.99" + smart_auth: + dependency: transitive + description: + name: smart_auth + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.6" source_span: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 26df3c4..6089839 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -43,7 +43,10 @@ dependencies: http: ^0.13.5 provider: ^6.0.4 shared_preferences: ^2.0.15 - + pinput: ^2.2.16 + otp_timer_button: ^1.1.0 + + dev_dependencies: flutter_test: sdk: flutter diff --git a/app/windows/flutter/generated_plugin_registrant.cc b/app/windows/flutter/generated_plugin_registrant.cc index 8b6d468..1e90c87 100644 --- a/app/windows/flutter/generated_plugin_registrant.cc +++ b/app/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + SmartAuthPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SmartAuthPlugin")); } diff --git a/app/windows/flutter/generated_plugins.cmake b/app/windows/flutter/generated_plugins.cmake index b93c4c3..ffb020c 100644 --- a/app/windows/flutter/generated_plugins.cmake +++ b/app/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + smart_auth ) list(APPEND FLUTTER_FFI_PLUGIN_LIST From fa1275fe94508b520124c996f8a00ceb3fa4ab50 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 25 Nov 2022 12:15:18 +0530 Subject: [PATCH 14/19] firebase setup and otp sending finished --- app/android/app/build.gradle | 7 +- app/android/app/google-services.json | 47 +++++++++++++ app/android/build.gradle | 1 + app/lib/main.dart | 2 + app/lib/screens/login_phone.dart | 5 +- app/lib/service/firebase_service.dart | 13 ++++ .../Flutter/GeneratedPluginRegistrant.swift | 4 ++ app/pubspec.lock | 70 +++++++++++++++++++ app/pubspec.yaml | 2 + 9 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 app/android/app/google-services.json create mode 100644 app/lib/service/firebase_service.dart diff --git a/app/android/app/build.gradle b/app/android/app/build.gradle index fda54d1..0dd6382 100644 --- a/app/android/app/build.gradle +++ b/app/android/app/build.gradle @@ -20,7 +20,7 @@ def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } - +apply plugin: 'com.google.gms.google-services' apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" @@ -44,10 +44,10 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.app" + applicationId "com.agrivator.app" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion flutter.minSdkVersion + minSdkVersion 21 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName @@ -67,5 +67,6 @@ flutter { } dependencies { + implementation platform('com.google.firebase:firebase-bom:31.1.0') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } diff --git a/app/android/app/google-services.json b/app/android/app/google-services.json new file mode 100644 index 0000000..6177c1a --- /dev/null +++ b/app/android/app/google-services.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "1095884333172", + "project_id": "agrivator-test", + "storage_bucket": "agrivator-test.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:1095884333172:android:b17cb06d6b2b13b0bfb121", + "android_client_info": { + "package_name": "com.agrivator.app" + } + }, + "oauth_client": [ + { + "client_id": "1095884333172-qs0m3qtccptnk9rdon8i5to7u0b6v1kk.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.agrivator.app", + "certificate_hash": "fd6f6e37e910e436c8f86e0cdbb94b3e6dfb8bac" + } + }, + { + "client_id": "1095884333172-eabh9sc51ko98g8s58fbbd4dvsc5f1g1.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCETi7qHyhSSDIXbltfTenZIkCfOqR7Ryc" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "1095884333172-eabh9sc51ko98g8s58fbbd4dvsc5f1g1.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/android/build.gradle b/app/android/build.gradle index 83ae220..d0c3888 100644 --- a/app/android/build.gradle +++ b/app/android/build.gradle @@ -6,6 +6,7 @@ buildscript { } dependencies { + classpath 'com.google.gms:google-services:4.3.13' classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } diff --git a/app/lib/main.dart b/app/lib/main.dart index 0fe9284..ebc875d 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,9 +1,11 @@ +import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import './screens/login_phone.dart'; import './screens/otp_verification_screen.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); + await Firebase.initializeApp(); runApp(MaterialApp( debugShowCheckedModeBanner: false, title: 'Agrivator v3', diff --git a/app/lib/screens/login_phone.dart b/app/lib/screens/login_phone.dart index b42379b..cd40b44 100644 --- a/app/lib/screens/login_phone.dart +++ b/app/lib/screens/login_phone.dart @@ -1,4 +1,5 @@ import 'package:app/constants/colors.dart'; +import 'package:app/service/firebase_service.dart'; import 'package:flutter/material.dart'; import 'otp_verification_screen.dart'; @@ -105,7 +106,9 @@ class _MyPhoneState extends State { width: double.infinity, child: ElevatedButton( onPressed: () { - Navigator.pushNamed(context, OTPScreen.otpScreenRouteName); + String phoneNumber = _countryController.text+phone; + FirebaseServices().verifyPhoneNumber(phoneNumber); + // Navigator.pushNamed(context, OTPScreen.otpScreenRouteName); }, style: ElevatedButton.styleFrom( backgroundColor: Colors.green, diff --git a/app/lib/service/firebase_service.dart b/app/lib/service/firebase_service.dart new file mode 100644 index 0000000..3545f02 --- /dev/null +++ b/app/lib/service/firebase_service.dart @@ -0,0 +1,13 @@ +import 'package:firebase_auth/firebase_auth.dart'; + +class FirebaseServices { + Future verifyPhoneNumber(String phoneNumber) async { + await FirebaseAuth.instance.verifyPhoneNumber( + phoneNumber: phoneNumber, + verificationCompleted: (phoneAuthCredential) {}, + verificationFailed: (FirebaseAuthException e) {}, + codeSent: (String verificationId, int? resendToken) {}, + codeAutoRetrievalTimeout: (String verificationId) {}, + ); + } +} diff --git a/app/macos/Flutter/GeneratedPluginRegistrant.swift b/app/macos/Flutter/GeneratedPluginRegistrant.swift index ee992fc..0a1a04a 100644 --- a/app/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/app/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,10 +5,14 @@ import FlutterMacOS import Foundation +import firebase_auth +import firebase_core import shared_preferences_macos import smart_auth func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SmartAuthPlugin.register(with: registry.registrar(forPlugin: "SmartAuthPlugin")) } diff --git a/app/pubspec.lock b/app/pubspec.lock index 2e2b693..11af972 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -1,6 +1,13 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _flutterfire_internals: + dependency: transitive + description: + name: _flutterfire_internals + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.9" async: dependency: transitive description: @@ -29,6 +36,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.1" + cloud_firestore_platform_interface: + dependency: transitive + description: + name: cloud_firestore_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "5.9.0" + cloud_firestore_web: + dependency: transitive + description: + name: cloud_firestore_web + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" collection: dependency: transitive description: @@ -71,6 +92,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.1.4" + firebase_auth: + dependency: "direct main" + description: + name: firebase_auth + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.4" + firebase_auth_platform_interface: + dependency: transitive + description: + name: firebase_auth_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "6.11.3" + firebase_auth_web: + dependency: transitive + description: + name: firebase_auth_web + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.3" + firebase_core: + dependency: "direct main" + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "4.5.2" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" flutter: dependency: "direct main" description: flutter @@ -121,6 +184,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.2" + intl: + dependency: transitive + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" js: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 6089839..c9c2766 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -45,6 +45,8 @@ dependencies: shared_preferences: ^2.0.15 pinput: ^2.2.16 otp_timer_button: ^1.1.0 + firebase_core: + firebase_auth: dev_dependencies: From 1e50cbc69f9dea18eb94db8e2eb9088f4b8dbf5e Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 25 Nov 2022 12:17:09 +0530 Subject: [PATCH 15/19] started error handling on phone screen --- app/lib/components/pop.dart | 0 app/lib/screens/login_phone.dart | 1 + 2 files changed, 1 insertion(+) create mode 100644 app/lib/components/pop.dart diff --git a/app/lib/components/pop.dart b/app/lib/components/pop.dart new file mode 100644 index 0000000..e69de29 diff --git a/app/lib/screens/login_phone.dart b/app/lib/screens/login_phone.dart index cd40b44..ada293b 100644 --- a/app/lib/screens/login_phone.dart +++ b/app/lib/screens/login_phone.dart @@ -14,6 +14,7 @@ class MyPhone extends StatefulWidget { class _MyPhoneState extends State { TextEditingController _countryController = TextEditingController(); + TextEditingController _phoneController = TextEditingController(); var phone = ''; @override void initState() { From a30516fe9e0d524db0cd0a8220dccc855593cb2d Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 25 Nov 2022 12:28:38 +0530 Subject: [PATCH 16/19] error handling phone screen successfull --- app/lib/components/pop.dart | 0 app/lib/screens/login_phone.dart | 32 +++++++++++++++++++++++--------- app/lib/utils/pop.dart | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 9 deletions(-) delete mode 100644 app/lib/components/pop.dart create mode 100644 app/lib/utils/pop.dart diff --git a/app/lib/components/pop.dart b/app/lib/components/pop.dart deleted file mode 100644 index e69de29..0000000 diff --git a/app/lib/screens/login_phone.dart b/app/lib/screens/login_phone.dart index ada293b..2ae9974 100644 --- a/app/lib/screens/login_phone.dart +++ b/app/lib/screens/login_phone.dart @@ -1,7 +1,7 @@ import 'package:app/constants/colors.dart'; import 'package:app/service/firebase_service.dart'; import 'package:flutter/material.dart'; - +import '../utils/pop.dart'; import 'otp_verification_screen.dart'; class MyPhone extends StatefulWidget { @@ -13,8 +13,8 @@ class MyPhone extends StatefulWidget { } class _MyPhoneState extends State { - TextEditingController _countryController = TextEditingController(); - TextEditingController _phoneController = TextEditingController(); + final TextEditingController _countryController = TextEditingController(); + var phone = ''; @override void initState() { @@ -74,7 +74,7 @@ class _MyPhoneState extends State { SizedBox( width: 40, child: TextField( - keyboardType: TextInputType.number, + keyboardType: TextInputType.numberWithOptions(), controller: _countryController, decoration: const InputDecoration(border: InputBorder.none), @@ -89,6 +89,7 @@ class _MyPhoneState extends State { ), Expanded( child: TextField( + keyboardType: TextInputType.number, onChanged: (value) { phone = value; @@ -107,15 +108,28 @@ class _MyPhoneState extends State { width: double.infinity, child: ElevatedButton( onPressed: () { - String phoneNumber = _countryController.text+phone; - FirebaseServices().verifyPhoneNumber(phoneNumber); - // Navigator.pushNamed(context, OTPScreen.otpScreenRouteName); + if (_countryController.text.isEmpty) { + PopUp().popUpAlert( + context, + 'Country Code missing', + 'Enter a valid contrycode', + ); + } else if (phone.length < 10||phone.length > 10) { + PopUp().popUpAlert( + context, + 'Phone number error', + 'Enter a valid phonenumber', + ); + } else { + String phoneNumber = _countryController.text +phone; + FirebaseServices().verifyPhoneNumber(phoneNumber); + // Navigator.pushNamed(context, OTPScreen.otpScreenRouteName); + } }, style: ElevatedButton.styleFrom( backgroundColor: Colors.green, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10) - ), + borderRadius: BorderRadius.circular(10)), ), child: const Text('Send OTP'), ), diff --git a/app/lib/utils/pop.dart b/app/lib/utils/pop.dart new file mode 100644 index 0000000..94adc02 --- /dev/null +++ b/app/lib/utils/pop.dart @@ -0,0 +1,32 @@ +import 'package:flutter/material.dart'; + +import '../constants/colors.dart'; + +class PopUp{ + Future popUpAlert(BuildContext context,String title,String content) { + return showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: Text( + 'OK', + style: TextStyle( + color: ConstColors().darkGreen, + ), + ), + ) + ], + title: Text(title), + content: SingleChildScrollView( + child: ListBody( + children: [Text(content)], + ), + ), + ), + ); + } +} \ No newline at end of file From 4b070b0cfdd92ff091b887e4ecd4c04ef8aa8325 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 25 Nov 2022 12:57:42 +0530 Subject: [PATCH 17/19] otp verifcation done --- app/lib/main.dart | 2 +- app/lib/screens/login_phone.dart | 8 ++-- app/lib/screens/otp_verification_screen.dart | 45 +++++++++++++++++--- app/lib/service/firebase_service.dart | 19 ++++++++- 4 files changed, 63 insertions(+), 11 deletions(-) diff --git a/app/lib/main.dart b/app/lib/main.dart index ebc875d..a183439 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -15,7 +15,7 @@ Future main() async { home: const MyPhone(), routes: { MyPhone.myPhoneRouteName : ((context) => const MyPhone()), - OTPScreen.otpScreenRouteName:(context) => const OTPScreen() + OTPScreen.otpScreenRouteName:(context) => OTPScreen() }, )); } diff --git a/app/lib/screens/login_phone.dart b/app/lib/screens/login_phone.dart index 2ae9974..e9def7e 100644 --- a/app/lib/screens/login_phone.dart +++ b/app/lib/screens/login_phone.dart @@ -6,6 +6,7 @@ import 'otp_verification_screen.dart'; class MyPhone extends StatefulWidget { static const String myPhoneRouteName = 'MyPhone'; + final String phoneNumber = ""; const MyPhone({super.key}); @override @@ -13,6 +14,7 @@ class MyPhone extends StatefulWidget { } class _MyPhoneState extends State { + final TextEditingController _countryController = TextEditingController(); var phone = ''; @@ -121,9 +123,9 @@ class _MyPhoneState extends State { 'Enter a valid phonenumber', ); } else { - String phoneNumber = _countryController.text +phone; - FirebaseServices().verifyPhoneNumber(phoneNumber); - // Navigator.pushNamed(context, OTPScreen.otpScreenRouteName); + phone = _countryController.text +phone; + FirebaseServices().verifyPhoneNumber(phone); + Navigator.pushNamed(context, OTPScreen.otpScreenRouteName,arguments: phone); } }, style: ElevatedButton.styleFrom( diff --git a/app/lib/screens/otp_verification_screen.dart b/app/lib/screens/otp_verification_screen.dart index bbc21a3..70796f9 100644 --- a/app/lib/screens/otp_verification_screen.dart +++ b/app/lib/screens/otp_verification_screen.dart @@ -1,18 +1,24 @@ import 'package:app/screens/login_phone.dart'; +import 'package:app/service/firebase_service.dart'; import 'package:flutter/material.dart'; + import 'package:otp_timer_button/otp_timer_button.dart'; import 'package:pinput/pinput.dart'; import '../constants/colors.dart'; +import '../utils/pop.dart'; class OTPScreen extends StatefulWidget { static const String otpScreenRouteName = "otpscreen"; - const OTPScreen({super.key}); + + OTPScreen({super.key}); @override State createState() => _OTPScreenState(); } class _OTPScreenState extends State { + TextEditingController pinController = TextEditingController(); + String code = ""; Color focusedBorderColor = Color.fromRGBO(23, 171, 144, 1); Color fillColor = Color.fromARGB(0, 91, 214, 107); Color borderColor = Color.fromRGBO(23, 171, 144, 0.4); @@ -31,6 +37,7 @@ class _OTPScreenState extends State { ); @override Widget build(BuildContext context) { + final phoneNumber = ModalRoute.of(context)?.settings.arguments as String; return Scaffold( backgroundColor: ConstColors().backgroudColor, appBar: AppBar( @@ -79,6 +86,7 @@ class _OTPScreenState extends State { height: 20, ), Pinput( + controller: pinController, focusedPinTheme: defaultPinTheme.copyWith( decoration: defaultPinTheme.decoration!.copyWith( borderRadius: BorderRadius.circular(8), @@ -97,15 +105,17 @@ class _OTPScreenState extends State { ), length: 6, showCursor: true, - onCompleted: ((value) => print(value)), + onCompleted: ((value) => code = value), ), const SizedBox( height: 10, ), OtpTimerButton( - onPressed: () {}, - text: const Text('Resend OTP'), - duration: 10, + onPressed: () { + FirebaseServices().verifyPhoneNumber(phoneNumber); + }, + text: const Text('Resend OTP'), + duration: 60, buttonType: ButtonType.text_button, ), const SizedBox( @@ -115,7 +125,30 @@ class _OTPScreenState extends State { height: 45, width: double.infinity, child: ElevatedButton( - onPressed: () {}, + onPressed: () async { + if (pinController.text.isEmpty) { + PopUp().popUpAlert( + context, + 'Enter valid OTP', + "", + ); + } else { + bool result = await FirebaseServices().verifyOTP(code); + if (result == false) { + PopUp().popUpAlert( + context, + 'Wrong OTP', + 'check otp entered', + ); + } else { + PopUp().popUpAlert( + context, + 'Phone number verified', + '', + ); + } + } + }, style: ElevatedButton.styleFrom( backgroundColor: Colors.green, shape: RoundedRectangleBorder( diff --git a/app/lib/service/firebase_service.dart b/app/lib/service/firebase_service.dart index 3545f02..44dcc0e 100644 --- a/app/lib/service/firebase_service.dart +++ b/app/lib/service/firebase_service.dart @@ -1,13 +1,30 @@ import 'package:firebase_auth/firebase_auth.dart'; class FirebaseServices { + static String vId = ""; Future verifyPhoneNumber(String phoneNumber) async { await FirebaseAuth.instance.verifyPhoneNumber( phoneNumber: phoneNumber, verificationCompleted: (phoneAuthCredential) {}, verificationFailed: (FirebaseAuthException e) {}, - codeSent: (String verificationId, int? resendToken) {}, + codeSent: (String verificationId, int? resendToken) { + vId = verificationId; + }, codeAutoRetrievalTimeout: (String verificationId) {}, ); } + + Future verifyOTP( String code) async { + try { + PhoneAuthCredential credential = PhoneAuthProvider.credential( + verificationId: vId, + smsCode: code, + ); + await FirebaseAuth.instance.signInWithCredential(credential); + return true; + } catch (e) { + return false; + } + + } } From 2a76eee069c5653632b40883fb6bbfe0480feeed Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 25 Nov 2022 13:24:14 +0530 Subject: [PATCH 18/19] splash screen added --- app/assets/images/top.png | Bin 0 -> 3612 bytes app/lib/main.dart | 3 ++- app/lib/screens/splash_screen.dart | 37 +++++++++++++++++++++++++++++ app/pubspec.lock | 14 +++++++++++ app/pubspec.yaml | 1 + 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 app/assets/images/top.png create mode 100644 app/lib/screens/splash_screen.dart diff --git a/app/assets/images/top.png b/app/assets/images/top.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd523516dffcec2b303fa96a29c490af524bae9 GIT binary patch literal 3612 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 literal 0 HcmV?d00001 diff --git a/app/lib/main.dart b/app/lib/main.dart index a183439..427bd54 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,3 +1,4 @@ +import './screens/splash_screen.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import './screens/login_phone.dart'; @@ -12,7 +13,7 @@ Future main() async { theme: ThemeData( primarySwatch: Colors.green, ), - home: const MyPhone(), + home: const SplahScreen(), routes: { MyPhone.myPhoneRouteName : ((context) => const MyPhone()), OTPScreen.otpScreenRouteName:(context) => OTPScreen() diff --git a/app/lib/screens/splash_screen.dart b/app/lib/screens/splash_screen.dart new file mode 100644 index 0000000..e5926da --- /dev/null +++ b/app/lib/screens/splash_screen.dart @@ -0,0 +1,37 @@ +import 'package:animated_splash_screen/animated_splash_screen.dart'; +import 'package:app/constants/colors.dart'; +import './login_phone.dart'; +import 'package:flutter/material.dart'; + +class SplahScreen extends StatelessWidget { + const SplahScreen({super.key}); + + @override + Widget build(BuildContext context) { + return AnimatedSplashScreen( + backgroundColor: ConstColors().backgroudColor, + splash: Container( + alignment: Alignment.center, + margin: const EdgeInsets.only(left: 20, right: 20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + 'assets/images/top.png',width: 150, + height: 150, + ), + + Image.asset( + 'assets/images/logo.png', + width: 150, + height: 150, + ), + ], + ), + ), + splashIconSize: 500, + nextScreen: const MyPhone(), + + ); + } +} diff --git a/app/pubspec.lock b/app/pubspec.lock index 11af972..6db51de 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -8,6 +8,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.9" + animated_splash_screen: + dependency: "direct main" + description: + name: animated_splash_screen + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" async: dependency: transitive description: @@ -240,6 +247,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + page_transition: + dependency: transitive + description: + name: page_transition + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" path: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index c9c2766..56d7824 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -47,6 +47,7 @@ dependencies: otp_timer_button: ^1.1.0 firebase_core: firebase_auth: + animated_splash_screen: ^1.3.0 dev_dependencies: From 346a98d97244bd2fe02e98ab302598cbe81e84c3 Mon Sep 17 00:00:00 2001 From: Deepak M S Date: Fri, 25 Nov 2022 15:35:18 +0530 Subject: [PATCH 19/19] internet permission added --- app/android/app/src/main/AndroidManifest.xml | 1 + app/lib/screens/otp_verification_screen.dart | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml index 6533fab..824e03e 100644 --- a/app/android/app/src/main/AndroidManifest.xml +++ b/app/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ + { elevation: 0, backgroundColor: Colors.transparent, leading: IconButton( - onPressed: () {}, + onPressed: () { + Navigator.pushNamedAndRemoveUntil( + context, + MyPhone.myPhoneRouteName, + (route) => false, + ); + }, icon: const Icon(Icons.arrow_back_ios_rounded), color: Colors.green, ),