From 9ac982ce4a6a18b9e3dd5fc21af4694fcb75b367 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Thu, 24 Jun 2021 20:37:35 -0400 Subject: [PATCH 01/15] Add file for circle overlay (from PE1-16), and categorize it in the widgets directory --- lib/widgets/circle_overlay.dart | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/widgets/circle_overlay.dart diff --git a/lib/widgets/circle_overlay.dart b/lib/widgets/circle_overlay.dart new file mode 100644 index 0000000..b8946c9 --- /dev/null +++ b/lib/widgets/circle_overlay.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +class CircleOverlays extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + width: MediaQuery.of(context).size.width, + child: Stack( + textDirection: TextDirection.ltr, + children: [ + Positioned( + child: CircleContainer( + assetLocation: 'appResources/WelcomePage/PEcircle2.png', + width: 0.6, + height: 0.33), + left: 0, + ), + Positioned( + child: CircleContainer( + assetLocation: 'appResources/WelcomePage/PEcircle1.png', + width: 0.6, + height: 0.216), + right: 0, + ) + ], + ), + ); + } +} + +// this class is use to hold the circles +class CircleContainer extends StatelessWidget { + final String assetLocation; + final double width; + final double height; + + CircleContainer( + {Key key, + @required this.assetLocation, + @required this.width, + @required this.height}); + + @override + Widget build(BuildContext context) { + return Image( + width: MediaQuery.of(context).size.width * width, + height: MediaQuery.of(context).size.height * height, + image: AssetImage(assetLocation), + fit: BoxFit.contain, + ); + } +} From 45a1eb28f3590c87bed1250c01967d21de7b1fc6 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 02:04:29 -0400 Subject: [PATCH 02/15] Implement the login form --- lib/login_page/login_form.dart | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/login_page/login_form.dart diff --git a/lib/login_page/login_form.dart b/lib/login_page/login_form.dart new file mode 100644 index 0000000..7fce070 --- /dev/null +++ b/lib/login_page/login_form.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; + +class LoginForm extends StatefulWidget { + @override + LoginFormState createState() { + return LoginFormState(); + } +} + +class LoginFormState extends State { + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + //gradient color for the rectangle + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color.fromARGB(255, 217, 188, 240), + Color.fromARGB(255, 237, 210, 240) + ]), + borderRadius: BorderRadius.only( + topLeft: const Radius.circular(25.0), + topRight: const Radius.circular(25.0), + bottomLeft: const Radius.circular(25.0), + bottomRight: const Radius.circular(25.0), + )), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(20, 20, 20, 0), + child: TextFormField( + decoration: InputDecoration( + border: UnderlineInputBorder(), + labelText: 'Email', + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(20, 10, 20, 20), + child: TextFormField( + decoration: InputDecoration( + border: UnderlineInputBorder(), + labelText: 'Password', + ), + ), + ), + ], + ), + ); + } +} From a6bd578ae2990263192bbbe0e0fc20579fbcd735 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 03:09:18 -0400 Subject: [PATCH 03/15] Update color of the text input container to match original design --- lib/login_page/login_form.dart | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/login_page/login_form.dart b/lib/login_page/login_form.dart index 7fce070..df76251 100644 --- a/lib/login_page/login_form.dart +++ b/lib/login_page/login_form.dart @@ -12,14 +12,7 @@ class LoginFormState extends State { Widget build(BuildContext context) { return Container( decoration: BoxDecoration( - //gradient color for the rectangle - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Color.fromARGB(255, 217, 188, 240), - Color.fromARGB(255, 237, 210, 240) - ]), + color: Color.fromARGB(255, 248, 236, 252), borderRadius: BorderRadius.only( topLeft: const Radius.circular(25.0), topRight: const Radius.circular(25.0), From e77cdc66d2d63cab5ee065f62d213ca39d6b5500 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 03:09:45 -0400 Subject: [PATCH 04/15] Implement the login credential container --- lib/login_page/login_credentials.dart | 71 +++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 lib/login_page/login_credentials.dart diff --git a/lib/login_page/login_credentials.dart b/lib/login_page/login_credentials.dart new file mode 100644 index 0000000..d42195f --- /dev/null +++ b/lib/login_page/login_credentials.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import './login_form.dart'; + +class LoginCredentials extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + height: MediaQuery.of(context).size.height * 0.45, + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + //gradient color for the rectangle + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color.fromARGB(255, 217, 188, 240), + Color.fromARGB(255, 237, 210, 240) + ]), + borderRadius: BorderRadius.only( + topLeft: const Radius.circular(25.0), + topRight: const Radius.circular(25.0), + )), + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + textDirection: TextDirection.ltr, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(20, 20, 20, 10), + child: LoginForm(), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), + child: Align( + alignment: Alignment.centerRight, + child: Container( + child: Text( + 'Forgot password?', + style: TextStyle(decoration: TextDecoration.underline), + ), + ), + ), + ), + Text('By Poly Team', textDirection: TextDirection.ltr) + ], + ), + ); + } +} + +/// Sign up button for the welcome page, use the raised button. +class WelcomeButtons extends StatelessWidget { + final String assetLocation; + + WelcomeButtons({Key key, @required this.assetLocation}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + child: Image( + height: MediaQuery.of(context).size.height * 0.1, + width: MediaQuery.of(context).size.width * 0.8, + image: AssetImage(assetLocation), + fit: BoxFit.fitWidth), + onTap: () { + //Todo: link it to different page up page + print('hi\n'); + }, + ); + } +} From e7997e53987a7b5dc16debb4f676201d83bd25f2 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 16:03:00 -0400 Subject: [PATCH 05/15] Add documentation comments to the login credential and form classes --- lib/login_page/login_credentials.dart | 2 ++ lib/login_page/login_form.dart | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/login_page/login_credentials.dart b/lib/login_page/login_credentials.dart index d42195f..79ea4bd 100644 --- a/lib/login_page/login_credentials.dart +++ b/lib/login_page/login_credentials.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import './login_form.dart'; +// Class for the credential pad on the login page, including the form +// containing two text inputs and the login button class LoginCredentials extends StatelessWidget { @override Widget build(BuildContext context) { diff --git a/lib/login_page/login_form.dart b/lib/login_page/login_form.dart index df76251..f63596f 100644 --- a/lib/login_page/login_form.dart +++ b/lib/login_page/login_form.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; +// Class for the login form consisting of two text inputs class LoginForm extends StatefulWidget { @override LoginFormState createState() { From 3fc75cadf48615746a5b28f34ebaeb3f7638259d Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 16:05:28 -0400 Subject: [PATCH 06/15] Implement the image widget on the login page --- lib/login_page/login_picture.dart | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 lib/login_page/login_picture.dart diff --git a/lib/login_page/login_picture.dart b/lib/login_page/login_picture.dart new file mode 100644 index 0000000..b5e27be --- /dev/null +++ b/lib/login_page/login_picture.dart @@ -0,0 +1,14 @@ +import 'package:flutter/material.dart'; + +// Image widget on the login page +class LoginPicture extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Image( + image: AssetImage('assets/images/PEloginImage.png'), + fit: BoxFit.contain, + height: MediaQuery.of(context).size.height * 0.4, + width: MediaQuery.of(context).size.width * 0.8, + ); + } +} From 95fa9cb0f65809ac90f471e7dc3b6f27969fd849 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 16:11:03 -0400 Subject: [PATCH 07/15] Implement the title bar on the login page --- lib/login_page/login_title.dart | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/login_page/login_title.dart diff --git a/lib/login_page/login_title.dart b/lib/login_page/login_title.dart new file mode 100644 index 0000000..a7ce530 --- /dev/null +++ b/lib/login_page/login_title.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; + +class LoginTitle extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + height: MediaQuery.of(context).size.height * 0.2, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + textDirection: TextDirection.ltr, + children: [ + Image( + image: AssetImage('appResources/WelcomePage/PElogo2.png'), + fit: BoxFit.contain, + height: MediaQuery.of(context).size.height * 0.08, + ), + Text('LOGIN', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 27, + fontFamily: 'Montserrat'), + textDirection: TextDirection.ltr), + Text('Welcome back!', + style: TextStyle(fontSize: 20, fontFamily: 'Montserrat'), + textDirection: TextDirection.ltr), + ], + ), + ); + } +} From 367d1c2247b67cf1105b8c9639c53f86bb42814a Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 16:15:48 -0400 Subject: [PATCH 08/15] Implement the login page --- lib/login_page/login_page.dart | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lib/login_page/login_page.dart diff --git a/lib/login_page/login_page.dart b/lib/login_page/login_page.dart new file mode 100644 index 0000000..94e7dce --- /dev/null +++ b/lib/login_page/login_page.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import './login_title.dart'; +import './login_picture.dart'; +import '../widgets/circle_overlay.dart'; +import './login_credentials.dart'; + +class LoginPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: Stack( + textDirection: TextDirection.ltr, + children: [ + Positioned( + child: CircleOverlays(), + ), + Positioned( + child: LoginCredentials(), + bottom: 0, + ), + Positioned( + child: LoginPicture(), + bottom: MediaQuery.of(context).size.height * 0.35, + left: MediaQuery.of(context).size.width * 0.1, + ), + Positioned( + child: LoginTitle(), + left: MediaQuery.of(context).size.width * 0.07, + top: MediaQuery.of(context).size.height * 0.07, + ), + ], + ), + ); + } +} From 1a1949d9411e9eea99476a66f79d865f7401754d Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 16:23:45 -0400 Subject: [PATCH 09/15] Correct the address to the image on the login page --- lib/login_page/login_picture.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/login_page/login_picture.dart b/lib/login_page/login_picture.dart index b5e27be..adeaf58 100644 --- a/lib/login_page/login_picture.dart +++ b/lib/login_page/login_picture.dart @@ -5,7 +5,7 @@ class LoginPicture extends StatelessWidget { @override Widget build(BuildContext context) { return Image( - image: AssetImage('assets/images/PEloginImage.png'), + image: AssetImage('../../assets/images/PEloginImage.png'), fit: BoxFit.contain, height: MediaQuery.of(context).size.height * 0.4, width: MediaQuery.of(context).size.width * 0.8, From 4b25c4a85f36b3d2766d83f13b5f406489d477b4 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 16:24:04 -0400 Subject: [PATCH 10/15] Implement the login button on the login credential pad --- lib/login_page/login_credentials.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/login_page/login_credentials.dart b/lib/login_page/login_credentials.dart index 79ea4bd..fe48ea7 100644 --- a/lib/login_page/login_credentials.dart +++ b/lib/login_page/login_credentials.dart @@ -43,6 +43,10 @@ class LoginCredentials extends StatelessWidget { ), ), ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 10), + child: LoginButton(), + ), Text('By Poly Team', textDirection: TextDirection.ltr) ], ), @@ -51,18 +55,15 @@ class LoginCredentials extends StatelessWidget { } /// Sign up button for the welcome page, use the raised button. -class WelcomeButtons extends StatelessWidget { - final String assetLocation; - - WelcomeButtons({Key key, @required this.assetLocation}); - +/// TODO: Replace this (PE1-24) +class LoginButton extends StatelessWidget { @override Widget build(BuildContext context) { return GestureDetector( child: Image( height: MediaQuery.of(context).size.height * 0.1, width: MediaQuery.of(context).size.width * 0.8, - image: AssetImage(assetLocation), + image: AssetImage('../../assets/images/PElogin2.png'), fit: BoxFit.fitWidth), onTap: () { //Todo: link it to different page up page From 45b07d71a929542f24ac366909cff86289fd630a Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 16:38:44 -0400 Subject: [PATCH 11/15] Introduce PElogo2 to the repository --- assets/images/PElogo2.png | Bin 0 -> 7940 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/PElogo2.png diff --git a/assets/images/PElogo2.png b/assets/images/PElogo2.png new file mode 100644 index 0000000000000000000000000000000000000000..67c6979f0326917ae68899b995672ff353588582 GIT binary patch literal 7940 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 Date: Fri, 25 Jun 2021 18:21:32 -0400 Subject: [PATCH 12/15] Fix the problem regarding to loading of image assets --- lib/login_page/login_credentials.dart | 2 +- lib/login_page/login_picture.dart | 2 +- lib/login_page/login_title.dart | 2 +- lib/widgets/circle_overlay.dart | 6 +++--- pubspec.yaml | 5 ++--- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/login_page/login_credentials.dart b/lib/login_page/login_credentials.dart index fe48ea7..17f0f3c 100644 --- a/lib/login_page/login_credentials.dart +++ b/lib/login_page/login_credentials.dart @@ -63,7 +63,7 @@ class LoginButton extends StatelessWidget { child: Image( height: MediaQuery.of(context).size.height * 0.1, width: MediaQuery.of(context).size.width * 0.8, - image: AssetImage('../../assets/images/PElogin2.png'), + image: AssetImage('assets/images/PElogin2.png'), fit: BoxFit.fitWidth), onTap: () { //Todo: link it to different page up page diff --git a/lib/login_page/login_picture.dart b/lib/login_page/login_picture.dart index adeaf58..b5e27be 100644 --- a/lib/login_page/login_picture.dart +++ b/lib/login_page/login_picture.dart @@ -5,7 +5,7 @@ class LoginPicture extends StatelessWidget { @override Widget build(BuildContext context) { return Image( - image: AssetImage('../../assets/images/PEloginImage.png'), + image: AssetImage('assets/images/PEloginImage.png'), fit: BoxFit.contain, height: MediaQuery.of(context).size.height * 0.4, width: MediaQuery.of(context).size.width * 0.8, diff --git a/lib/login_page/login_title.dart b/lib/login_page/login_title.dart index a7ce530..d9e966e 100644 --- a/lib/login_page/login_title.dart +++ b/lib/login_page/login_title.dart @@ -11,7 +11,7 @@ class LoginTitle extends StatelessWidget { textDirection: TextDirection.ltr, children: [ Image( - image: AssetImage('appResources/WelcomePage/PElogo2.png'), + image: AssetImage('assets/images/PElogo2.png'), fit: BoxFit.contain, height: MediaQuery.of(context).size.height * 0.08, ), diff --git a/lib/widgets/circle_overlay.dart b/lib/widgets/circle_overlay.dart index b8946c9..22197d9 100644 --- a/lib/widgets/circle_overlay.dart +++ b/lib/widgets/circle_overlay.dart @@ -4,20 +4,20 @@ class CircleOverlays extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - width: MediaQuery.of(context).size.width, + width: MediaQuery.of(context).size.height, child: Stack( textDirection: TextDirection.ltr, children: [ Positioned( child: CircleContainer( - assetLocation: 'appResources/WelcomePage/PEcircle2.png', + assetLocation: 'assets/images/PEcircle2.png', width: 0.6, height: 0.33), left: 0, ), Positioned( child: CircleContainer( - assetLocation: 'appResources/WelcomePage/PEcircle1.png', + assetLocation: 'assets/images/PEcircle1.png', width: 0.6, height: 0.216), right: 0, diff --git a/pubspec.yaml b/pubspec.yaml index 15a4bfd..e83e5c6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -50,9 +50,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + - assets/images/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. From 38c7d102026847b45062b6283dd2a65e2fe77410 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Fri, 25 Jun 2021 18:23:45 -0400 Subject: [PATCH 13/15] Fix the problem regarding to blank gap on top of the screen when showing the login page --- lib/login_page/login_page.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/login_page/login_page.dart b/lib/login_page/login_page.dart index 94e7dce..2933d7b 100644 --- a/lib/login_page/login_page.dart +++ b/lib/login_page/login_page.dart @@ -13,6 +13,7 @@ class LoginPage extends StatelessWidget { children: [ Positioned( child: CircleOverlays(), + top: 0, ), Positioned( child: LoginCredentials(), From 63320654d4436877b41299f68f6c6d9d7ab121a5 Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Tue, 6 Jul 2021 19:23:02 -0400 Subject: [PATCH 14/15] Make password text obscure --- lib/login_page/login_form.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/login_page/login_form.dart b/lib/login_page/login_form.dart index f63596f..5707795 100644 --- a/lib/login_page/login_form.dart +++ b/lib/login_page/login_form.dart @@ -39,6 +39,7 @@ class LoginFormState extends State { border: UnderlineInputBorder(), labelText: 'Password', ), + obscureText: true, ), ), ], From 5d2292a9525efbf25dea9c9bf3322cc1fab0979a Mon Sep 17 00:00:00 2001 From: shoko-inori Date: Tue, 6 Jul 2021 19:27:47 -0400 Subject: [PATCH 15/15] Remove additional top constraint that causes an error --- lib/login_page/login_page.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/login_page/login_page.dart b/lib/login_page/login_page.dart index 2933d7b..94e7dce 100644 --- a/lib/login_page/login_page.dart +++ b/lib/login_page/login_page.dart @@ -13,7 +13,6 @@ class LoginPage extends StatelessWidget { children: [ Positioned( child: CircleOverlays(), - top: 0, ), Positioned( child: LoginCredentials(),