import 'package:itasmob/presentation/common/theme_helper.dart'; import 'package:itasmob/presentation/home/index.dart'; import 'package:itasmob/presentation/login/login.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:hexcolor/hexcolor.dart'; import '../../widgets/header_widgets.dart'; class RegisterView extends StatefulWidget { const RegisterView({ Key? key }) : super(key: key); @override State createState() { return _RegistrationPageState(); } } class _RegistrationPageState extends State{ final _formKey = GlobalKey(); bool checkedValue = false; bool checkboxValue = false; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, body: SingleChildScrollView( child: Stack( children: [ Container( height: 150, child: HeaderWidget(150, false, Icons.person_add_alt_1_rounded), ), Container( margin: EdgeInsets.fromLTRB(25, 50, 25, 10), padding: EdgeInsets.fromLTRB(10, 0, 10, 0), alignment: Alignment.center, child: Column( children: [ Form( key: _formKey, child: Column( children: [ GestureDetector( child: Stack( children: [ Container( padding: EdgeInsets.all(10), decoration: BoxDecoration( borderRadius: BorderRadius.circular(100), border: Border.all( width: 5, color: Colors.white), color: Colors.white, boxShadow: [ BoxShadow( color: Colors.black12, blurRadius: 20, offset: const Offset(5, 5), ), ], ), child: Icon( Icons.person, color: Colors.grey.shade300, size: 80.0, ), ), Container( padding: EdgeInsets.fromLTRB(80, 80, 0, 0), child: Icon( Icons.add_circle, color: Colors.grey.shade700, size: 25.0, ), ), ], ), ), SizedBox(height: 30,), Container( child: TextFormField( decoration: ThemeHelper().textInputDecoration('First Name', 'Enter your first name'), ), decoration: ThemeHelper().inputBoxDecorationShaddow(), ), SizedBox(height: 30,), Container( child: TextFormField( decoration: ThemeHelper().textInputDecoration('Last Name', 'Enter your last name'), ), decoration: ThemeHelper().inputBoxDecorationShaddow(), ), SizedBox(height: 20.0), Container( child: TextFormField( decoration: ThemeHelper().textInputDecoration("E-mail address", "Enter your email"), keyboardType: TextInputType.emailAddress, validator: (val) { if(!(val!.isEmpty) && !RegExp(r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*$").hasMatch(val)){ return "Enter a valid email address"; } return null; }, ), decoration: ThemeHelper().inputBoxDecorationShaddow(), ), SizedBox(height: 20.0), Container( child: TextFormField( decoration: ThemeHelper().textInputDecoration( "Mobile Number", "Enter your mobile number"), keyboardType: TextInputType.phone, validator: (val) { if(!(val!.isEmpty) && !RegExp(r"^(\d+)*$").hasMatch(val)){ return "Enter a valid phone number"; } return null; }, ), decoration: ThemeHelper().inputBoxDecorationShaddow(), ), SizedBox(height: 20.0), Container( child: TextFormField( obscureText: true, decoration: ThemeHelper().textInputDecoration( "Password*", "Enter your password"), validator: (val) { if (val!.isEmpty) { return "Please enter your password"; } return null; }, ), decoration: ThemeHelper().inputBoxDecorationShaddow(), ), SizedBox(height: 15.0), FormField( builder: (state) { return Column( children: [ Row( children: [ Checkbox( value: checkboxValue, onChanged: (value) { setState(() { checkboxValue = value!; state.didChange(value); }); }), Text("I accept all terms and conditions.", style: TextStyle(color: Colors.grey),), ], ), Container( alignment: Alignment.centerLeft, child: Text( state.errorText ?? '', textAlign: TextAlign.left, style: TextStyle(color: Theme.of(context).errorColor,fontSize: 12,), ), ) ], ); }, validator: (value) { if (!checkboxValue) { return 'You need to accept terms and conditions'; } else { return null; } }, ), SizedBox(height: 20.0), Container( decoration: ThemeHelper().buttonBoxDecoration(context), child: ElevatedButton( style: ThemeHelper().buttonStyle(), child: Padding( padding: const EdgeInsets.fromLTRB(40, 10, 40, 10), child: Text( "Register".toUpperCase(), style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, color: Colors.white, ), ), ), onPressed: () { if (_formKey.currentState!.validate()) { Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute( builder: (context) => HomeView() ), (Route route) => false ); } }, ), ), Container( margin: EdgeInsets.fromLTRB(10, 20, 10, 20), //child: Text('Don\'t have an account? Create'), child: Text.rich(TextSpan(children: [ TextSpan(text: "Already have an account? "), TextSpan( text: 'Login', recognizer: TapGestureRecognizer() ..onTap = () { Navigator.push( context, MaterialPageRoute( builder: (context) => LoginView())); }, style: TextStyle( fontWeight: FontWeight.bold, color: Theme.of(context).accentColor), ), ])), ), SizedBox(height: 30.0), Text("Or create account using social media", style: TextStyle(color: Colors.grey),), SizedBox(height: 25.0), ], ), ), ], ), ), ], ), ), ); } }