Hi Guys, Welcome to Proto Coders Point, In this Flutter Tutorial we gonna design a Login and Registration UI Design by using “VELOCITY X” Flutter Library developed by Pawan Kumar using Flutter SDK.
What is Flutter Velocity X?
The Velocity X library in flutter development is a minimalist flutter framework that helps you in building custom Application design Rapidly.
Velocity X comes with various properties that we can apply to our flutter widget such as Color, Padding, Text , Box, Card, SizedBox and many more.
Basic of how to use Velocity X
How to use velocityX in Text Widget.
How to use velocity x Card on any Flutter Widgets
Login UI Screen using Velocity X Library.
Ok So let’s begin with Flutter to build Login and Registration UI Design.
Flutter Login and Registration UI design using Flutter Velocity X Library
Add Dependencies
dependencies: velocity_x: font_awesome_flutter:
Open pubspec.yaml file and all the above 2 dependencies line
velocityx: To make app designing faster
font_awesome_flutter: To use Icons such a FacebookF and Google Icons.
Project File Sturcture
In your Flutter Project under lib directory create 4 dart files.
main.dart : Here where user can SignIn through Social Media Directly.
Registration.dart : Here where user can Register himself though Email address.
SignInPage.dart : Sign In page where user can signIn using Email and Password
CommonLogo.dart : This class will return a Common Company Logo with Company name by using which we can just use it wherever required.
I have used CommonLogo Widget on all the above 3 pages.
Just Create all the 4 dart file in your flutter project and add respective flutter dart code in it.
CommonLogo.dart
import 'package:flutter/material.dart'; import 'package:velocity_x/velocity_x.dart'; class CommonLogo extends StatelessWidget { @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Image.network("https://pluspng.com/img-png/avengers-logo-png-avengers-logo-png-1376.png",width: 100,), "YOUR APP NAME".text.xl2.italic.make(), "Company Slogon".text.light.white.wider.lg.make(), ], ); } }
main.dart
import 'package:flutter/material.dart'; import 'package:velocity_x/velocity_x.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'SignInPage.dart'; import 'CommonLogo.dart'; import 'Registration.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', debugShowCheckedModeBanner: false, theme: ThemeData( primaryColor: Colors.black, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: SignIn(), ); } } class SignIn extends StatefulWidget { @override _SignInState createState() => _SignInState(); } class _SignInState extends State<SignIn> { @override Widget build(BuildContext context) { return SafeArea( child: Scaffold( body: Container( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, decoration: BoxDecoration( gradient: LinearGradient( colors: [const Color(0XFFF95A3B),const Color(0XFFF96713)], begin: FractionalOffset.topLeft, end: FractionalOffset.bottomCenter, stops: [0.0,0.8], tileMode: TileMode.mirror ), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ CommonLogo().py24(), HeightBox(10), VxBlock( children: <Widget>[ GestureDetector( onTap: (){ print("Sign In with FaceBook"); }, child: VxBox(child:Row(children: <Widget>[ FaIcon(FontAwesomeIcons.facebookF).p16(), "Sign In With Facebook".text.blue700.make() ],)).white.roundedLg.make().px16(), ), VxBox(child:Row(children: <Widget>[ FaIcon(FontAwesomeIcons.google).p16(), "Sign In With Google".text.red700.make() ],)).white.roundedLg.make().px16().py8(), GestureDetector( onTap:(){ print("SignUp"); Navigator.push(context, MaterialPageRoute(builder: (context)=>Registration())); },child: VxBox(child: "Sign Up".text.black.makeCentered().p16()).white.roundedLg.make().px16().py16()), GestureDetector( onTap: (){ print("Sign In"); Navigator.push(context, MaterialPageRoute(builder: (context)=>SignInPage())); }, child: HStack([ "Already Registered?".text.make(), " Sign In".text.white.make() ]).centered(), ) ], ) ], ), ), ), ); } }
Registration.dart
import 'package:flutter/material.dart'; import 'package:velocity_x/velocity_x.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'CommonLogo.dart'; import 'SignInPage.dart'; class Registration extends StatefulWidget { @override _RegistrationState createState() => _RegistrationState(); } class _RegistrationState extends State<Registration> { bool checked = true; @override Widget build(BuildContext context) { return SafeArea( child: Scaffold( body: Container( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, decoration: BoxDecoration( gradient: LinearGradient( colors: [const Color(0XFFF95A3B),const Color(0XFFF96713)], begin: FractionalOffset.topLeft, end: FractionalOffset.bottomCenter, stops: [0.0,0.8], tileMode: TileMode.mirror ), ), child: Center( child: SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ CommonLogo(), HeightBox(10), "CREATE YOUR ACCOUNT".text.size(22).yellow100.make(), TextField( keyboardType: TextInputType.text, decoration: InputDecoration( filled: true, fillColor: Colors.white, hintText: "Full Name", border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10.0)))), ).p4().px24(), TextField( keyboardType: TextInputType.text, decoration: InputDecoration( filled: true, fillColor: Colors.white, hintText: "Email", border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10.0)))), ).p4().px24(), TextField( keyboardType: TextInputType.text, decoration: InputDecoration( filled: true, fillColor: Colors.white, hintText: "Password", border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10.0)))), ).p4().px24(), TextField( keyboardType: TextInputType.text, decoration: InputDecoration( filled: true, fillColor: Colors.white, hintText: "re-enter password", border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10.0)))), ).p4().px24(), HStack([ Checkbox( value: checked, onChanged: (bool value) { checked=value ;}, ), "Agree & Continue".text.make().py16() ]), HStack([ VxBox(child: "Cancel".text.white.makeCentered().p16()).red600.roundedLg.make().px16().py16(), VxBox(child: "Register".text.white.makeCentered().p16()).green600.roundedLg.make().px16().py16(), ]), GestureDetector( onTap: (){ print("Sign In"); Navigator.push(context, MaterialPageRoute(builder: (context)=>SignInPage())); }, child: HStack([ "Already Registered?".text.make(), " Sign In".text.white.make() ]).centered(), ) ], ), ), ), ), ), ); } }
SignInPage.dart
import 'package:flutter/material.dart'; import 'package:fluttervelocityx/Registration.dart'; import 'package:velocity_x/velocity_x.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'CommonLogo.dart'; class SignInPage extends StatefulWidget { @override _SignInPageState createState() => _SignInPageState(); } class _SignInPageState extends State<SignInPage> { bool checked = true; @override Widget build(BuildContext context) { return SafeArea( child: Scaffold( body: Container( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, decoration: BoxDecoration( gradient: LinearGradient( colors: [const Color(0XFFF95A3B),const Color(0XFFF96713)], begin: FractionalOffset.topLeft, end: FractionalOffset.bottomCenter, stops: [0.0,0.8], tileMode: TileMode.mirror ), ), child: Center( child: SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ CommonLogo(), HeightBox(10), "Email Sign-IN".text.size(22).yellow100.make(), TextField( keyboardType: TextInputType.text, decoration: InputDecoration( filled: true, fillColor: Colors.white, hintText: "Email", border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10.0)))), ).p4().px24(), TextField( keyboardType: TextInputType.text, decoration: InputDecoration( filled: true, fillColor: Colors.white, hintText: "Password", border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10.0)))), ).p4().px24(), HStack([ Checkbox( value: checked, onChanged: (bool value) { checked=value ;}, ), "Remember Me".text.make().py16() ]), HStack([ VxBox(child: "Get Started".text.white.makeCentered().p16()).green600.roundedLg.make(), ]), GestureDetector( onTap: (){ print("Sign In"); }, child: HStack([ "Forgot Password?".text.white.makeCentered(), ]).centered().p4(), ), HStack([ VxBox(child: FaIcon(FontAwesomeIcons.facebookF,color: Colors.white,size: 30,).p20()).blue700.roundedFull.make(), VxBox(child: FaIcon(FontAwesomeIcons.google,color: Colors.white,size: 25,).p20()).red700.roundedFull.make().p4(), ]) ], ), ), ), ), bottomNavigationBar: GestureDetector( onTap: (){ Navigator.push(context, MaterialPageRoute(builder: (context)=>Registration())); }, child: Container( height: 25, color: Colors.lightBlue, child: Center(child: "Create a new Account..! Sign Up".text.white.makeCentered())), ), ), ); } }
All set your Flutter application is ready with beautiful Login and Registration UI design using Velocity X library.