import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:tangheem/api/user_api_client.dart'; import 'package:tangheem/classes/colors.dart'; import 'package:tangheem/classes/utils.dart'; import 'package:tangheem/widgets/common_textfield_widget.dart'; import 'package:tangheem/extensions/email_validator.dart'; class RegistrationScreen extends StatefulWidget { static const String routeName = "/registration"; RegistrationScreen({Key key}) : super(key: key); @override _RegistrationScreenState createState() { return _RegistrationScreenState(); } } class _RegistrationScreenState extends State { TextEditingController _usernameController = TextEditingController(); TextEditingController _fullNameController = TextEditingController(); TextEditingController _emailController = TextEditingController(); TextEditingController _mobileNumberController = TextEditingController(); TextEditingController _passwordController = TextEditingController(); TextEditingController _confirmPasswordController = TextEditingController(); bool _isAccept = false; @override void initState() { super.initState(); } void registerUser(String email, String password) async { Utils.showLoading(context); try { await UserApiClient().registerUser("", "", email, password, _mobileNumberController.text); Utils.showToast("Register successfully"); } catch (ex, tr) { Utils.handleException(ex, null); } finally { Utils.hideLoading(context); } } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: ColorConsts.secondaryWhite, body: SingleChildScrollView( padding: EdgeInsets.all(32.0), physics: BouncingScrollPhysics(), child: Container( width: MediaQuery.of(context).size.width, decoration: BoxDecoration(borderRadius: BorderRadius.circular(8.0), color: Colors.white), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ Padding( padding: EdgeInsets.only(top: 24, bottom: 24), child: SvgPicture.asset("assets/logos/tangheem_logo.svg", width: 100, height: 100), ), Text( "انشاء حساب جديد", style: TextStyle(fontSize: 22, color: ColorConsts.primaryBlue), ), Padding( padding: EdgeInsets.all(8), child: Text( "قم بتعبئة بيانات طلب انشاء الحساب و ستصلك رسالة تأكيد, ومن ثم يمكنك الدخول لحسابك الجديد", textAlign: TextAlign.center, style: TextStyle(fontSize: 14, color: ColorConsts.primaryBlue, height: 1), ), ), Container( margin: EdgeInsets.only(top: 16), width: double.infinity, padding: EdgeInsets.all(32.0), decoration: BoxDecoration( color: ColorConsts.primaryBlue, borderRadius: BorderRadius.only( bottomLeft: Radius.circular(8), bottomRight: Radius.circular(8), ), ), child: Column( mainAxisSize: MainAxisSize.min, children: [ CommonTextFieldWidget(hint: "اسم المستخدم", controller: _usernameController), SizedBox(height: 8), CommonTextFieldWidget(hint: "الايميل المسجل", controller: _fullNameController), SizedBox(height: 8), CommonTextFieldWidget(hint: "الايميل", controller: _emailController), SizedBox(height: 8), CommonTextFieldWidget( hint: "البلد", controller: _mobileNumberController, showSuffix: true, onTap: () { _selectCountry(context); }, ), SizedBox(height: 8), CommonTextFieldWidget(hint: " رقم الجوال (9xx xxxxxxxxx+)", controller: _mobileNumberController), SizedBox(height: 8), CommonTextFieldWidget(hint: "تعيين كلمة المرور", controller: _passwordController), SizedBox(height: 8), CommonTextFieldWidget(hint: "تأكيد كلمة المرور", controller: _confirmPasswordController), SizedBox(height: 8), Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ InkWell( onTap: () { setState(() { _isAccept = !_isAccept; }); }, child: SvgPicture.asset(_isAccept ? "assets/icons/checkOn.svg" : "assets/icons/checkOff.svg", width: 16, height: 16), ), SizedBox(width: 8), Expanded( child: Text( "أقر بأني إطلعت على شروط الاستخدام و سياسية الخصوصية و أوافق عليها", style: TextStyle(color: Colors.white, fontSize: 13), ), ), ], ), SizedBox(height: 12), SizedBox( width: double.infinity, height: 50, child: TextButton( onPressed: () { if (_usernameController.text.length < 1) { Utils.showToast("Username is empty."); return; } if (_fullNameController.text.length < 1) { Utils.showToast("Name is empty."); return; } if (_emailController.text.length < 1) { Utils.showToast("Email is empty."); return; } if (_mobileNumberController.text.length < 1) { Utils.showToast("Phone number is empty."); return; } if (_passwordController.text.length < 1) { Utils.showToast("Password is empty."); return; } if (_confirmPasswordController.text.length < 1) { Utils.showToast("Enter same password to confirm"); return; } if (!_emailController.text.isValidEmail()) { Utils.showToast("Invalid email."); return; } if (_passwordController.text != _confirmPasswordController.text) { Utils.showToast("Your passwords are incorrect."); return; } if (!_isAccept) { Utils.showToast("You must accept statement to proceed."); return; } Utils.showToast("اعادة تعيين كلمة المرور"); }, style: TextButton.styleFrom( primary: Colors.white, backgroundColor: ColorConsts.secondaryPink, textStyle: TextStyle(fontSize: 16, fontFamily: "DroidKufi"), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(6.0), ), ), child: Text("انشئ حسابك"), ), ), ], ), ), ], ), ), ), ); } void _selectCountry(context) { showModalBottomSheet( context: context, shape: RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), ), ), backgroundColor: Colors.transparent, builder: (BuildContext bc) { return Container( height: MediaQuery.of(context).size.height * 0.75, // padding: EdgeInsets.all(16), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), ), ), child: Column( children: [ Container( padding: EdgeInsets.all(16), decoration: BoxDecoration( color: ColorConsts.primaryBlue, borderRadius: BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), ), ), // color: Const.primaryBlue, child: CommonTextFieldWidget(hint: "تعيين كلمة المرور", controller: null), ), Expanded(child: ListView()) ], )); }); } }