From e3741d5907021b3961778855f4bfb557a364583f Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 15 May 2023 11:44:07 +0300 Subject: [PATCH] login, registration, contact us --- lib/ui/screens/contact_us_screen.dart | 164 ++++++------ lib/ui/screens/login_screen.dart | 211 ++++++++------- lib/ui/screens/registration_screen.dart | 334 ++++++++++++++---------- lib/widgets/login_textfield_widget.dart | 4 +- 4 files changed, 405 insertions(+), 308 deletions(-) diff --git a/lib/ui/screens/contact_us_screen.dart b/lib/ui/screens/contact_us_screen.dart index 48ed842..152070b 100644 --- a/lib/ui/screens/contact_us_screen.dart +++ b/lib/ui/screens/contact_us_screen.dart @@ -54,85 +54,101 @@ class _ContactUsScreenState extends State { Widget build(BuildContext context) { bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait; + Widget _header = SizedBox(height: isPortrait ? null : double.infinity, width: double.infinity, child: CommonHeader("اتصل بنا", "assets/icons/new/contact_bg.jpg", Color(0xff416A6C))); + + Widget _inputDataList = Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + "نسعد بتواصلكم بالمساهمة في تطوير المشروع وطرح المقترحات التي حقق جودته. الرجاء تعبئة البيانات لكي تصل إلينا بشكل مناسب، وسيتم التواصل معكم في أقرب وقت ممكن." + .toText(13, color: ColorConsts.darkText, textAlign: TextAlign.center), + 32.height, + CommonTextFieldWidget(hint: "الاسم الأول", controller: _firstNameController, fillColor: Colors.white, isBorder: true), + 8.height, + CommonTextFieldWidget(hint: "الاسم الأخير", controller: _lastNameController, fillColor: Colors.white, isBorder: true), + 8.height, + CommonTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, fillColor: Colors.white, isBorder: true, isEmail: true), + 8.height, + CommonTextFieldWidget(hint: " رقم الاتصال${" (" + ("9xx") + " xxxxxxxxx)"}", controller: _mobileNumberController, fillColor: Colors.white, isBorder: true), + 8.height, + CommonTextFieldWidget(hint: "التفاصيل", controller: _descriptionController, maxLines: 5, fillColor: Colors.white, isBorder: true), + 22.height, + SizedBox( + width: double.infinity, + height: 50, + child: TextButton( + onPressed: () { + if (_firstNameController.text.length < 1) { + Utils.showToast("يرجى إدخال الاسم الأول"); + return; + } + if (_lastNameController.text.length < 1) { + Utils.showToast("يرجى إدخال الاسم الأخير"); + return; + } + if (_emailController.text.length < 1) { + Utils.showToast("يرجى إدخال البريد الإلكتروني"); + return; + } + if (_mobileNumberController.text.length < 1) { + Utils.showToast("يرجى إدخال رقم الهاتف"); + return; + } + if (_mobileNumberController.text.length != 12) { + Utils.showToast("صيغة الرقم غير صحيحة"); + return; + } + if (_descriptionController.text.length < 1) { + Utils.showToast("يرجى إدخال التفاصيل"); + return; + } + if (_descriptionController.text.trim().length < 1) { + Utils.showToast("يرجى إدخال التفاصيل"); + return; + } + if (!_emailController.text.isValidEmail()) { + Utils.showToast("صيغة البريد الإلكتروني غير صحيحة"); + return; + } + sendFeedback(_firstNameController.text, _lastNameController.text, _emailController.text, _mobileNumberController.text, _descriptionController.text); + }, + style: TextButton.styleFrom( + backgroundColor: ColorConsts.darkText, + foregroundColor: Colors.white, + textStyle: TextStyle(fontSize: 18), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(25.0), + ), + ), + child: Text("إرسال"), + ), + ), + ], + ); return Scaffold( backgroundColor: ColorConsts.greyF4Color, - body: SingleChildScrollView( - physics: BouncingScrollPhysics(), - child: Column( - children: [ - CommonHeader("اتصل بنا", "assets/icons/new/contact_bg.jpg", Color(0xff416A6C)), - Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisSize: MainAxisSize.min, + body: isPortrait + ? SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( + children: [ + _header, + _inputDataList.paddingAll(35), + ], + ), + ) + : Row( children: [ - "نسعد بتواصلكم بالمساهمة في تطوير المشروع وطرح المقترحات التي حقق جودته. الرجاء تعبئة البيانات لكي تصل إلينا بشكل مناسب، وسيتم التواصل معكم في أقرب وقت ممكن." - .toText(13, color: ColorConsts.darkText, textAlign: TextAlign.center), - 32.height, - CommonTextFieldWidget(hint: "الاسم الأول", controller: _firstNameController, fillColor: Colors.white, isBorder: true), - 8.height, - CommonTextFieldWidget(hint: "الاسم الأخير", controller: _lastNameController, fillColor: Colors.white, isBorder: true), - 8.height, - CommonTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, fillColor: Colors.white, isBorder: true, isEmail: true), - 8.height, - CommonTextFieldWidget(hint: " رقم الاتصال${" (" + ("9xx") + " xxxxxxxxx)"}", controller: _mobileNumberController, fillColor: Colors.white, isBorder: true), - 8.height, - CommonTextFieldWidget(hint: "التفاصيل", controller: _descriptionController, maxLines: 5, fillColor: Colors.white, isBorder: true), - 22.height, - SizedBox( - width: double.infinity, - height: 50, - child: TextButton( - onPressed: () { - if (_firstNameController.text.length < 1) { - Utils.showToast("يرجى إدخال الاسم الأول"); - return; - } - if (_lastNameController.text.length < 1) { - Utils.showToast("يرجى إدخال الاسم الأخير"); - return; - } - if (_emailController.text.length < 1) { - Utils.showToast("يرجى إدخال البريد الإلكتروني"); - return; - } - if (_mobileNumberController.text.length < 1) { - Utils.showToast("يرجى إدخال رقم الهاتف"); - return; - } - if (_mobileNumberController.text.length != 12) { - Utils.showToast("صيغة الرقم غير صحيحة"); - return; - } - if (_descriptionController.text.length < 1) { - Utils.showToast("يرجى إدخال التفاصيل"); - return; - } - if (_descriptionController.text.trim().length < 1) { - Utils.showToast("يرجى إدخال التفاصيل"); - return; - } - if (!_emailController.text.isValidEmail()) { - Utils.showToast("صيغة البريد الإلكتروني غير صحيحة"); - return; - } - sendFeedback(_firstNameController.text, _lastNameController.text, _emailController.text, _mobileNumberController.text, _descriptionController.text); - }, - style: TextButton.styleFrom( - backgroundColor: ColorConsts.darkText, - foregroundColor: Colors.white, - textStyle: TextStyle(fontSize: 18), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(25.0), - ), + Expanded(child: _header, flex: 4), + Expanded( + child: SingleChildScrollView( + physics: BouncingScrollPhysics(), + padding: EdgeInsets.all(36), + child: _inputDataList, ), - child: Text("إرسال"), - ), - ), + flex: 6) ], - ).paddingAll(35), - ], - ), - ), + ), ); } } diff --git a/lib/ui/screens/login_screen.dart b/lib/ui/screens/login_screen.dart index 92960ac..1664bcc 100644 --- a/lib/ui/screens/login_screen.dart +++ b/lib/ui/screens/login_screen.dart @@ -86,6 +86,88 @@ class _LoginScreenState extends State { Widget build(BuildContext context) { bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait; + Widget _options = Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + InkWell( + onTap: () { + setState(() { + _isRemember = !_isRemember; + }); + }, + child: Icon(_isRemember ? Icons.check_box_rounded : Icons.check_box_outline_blank_rounded, color: ColorConsts.borderDark2Text, size: 17), + //child: SvgPicture.asset(_isAccept ? "assets/icons/checkOn.svg" : "assets/icons/checkOff.svg", width: 16, height: 16,color: ColorConsts.borderDarkText), + ), + 10.width, + "تذكرني".toText(14), + ], + ), + "هل نسيت كلمة المرور؟".toText(14).onPress(() { + Navigator.pushNamed(context, ForgotPasswordScreen.routeName); + }) + ], + ); + + Widget _loginButton = SizedBox( + width: double.infinity, + height: isPortrait ? 50 : 45, + child: TextButton( + onPressed: () { + if (_emailController.text.length < 1) { + Utils.showToast("يرجى إدخال البريد الإلكتروني"); + return; + } else if (!_emailController.text.isValidEmail()) { + Utils.showToast("صيغة البريد الإلكتروني خاطئة"); + return; + } + if (_passwordController.text.length < 1) { + Utils.showToast("يرجى إدخال كلمة المرور"); + return; + } + performLogin(_emailController.text, _passwordController.text); + }, + style: TextButton.styleFrom( + backgroundColor: ColorConsts.brownLightColor, + foregroundColor: Colors.white, + textStyle: TextStyle(fontSize: 18), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + ), + child: Text("تسجيل الدخول"), + ), + ); + + Widget _registrationButton = SizedBox( + width: double.infinity, + height: isPortrait ? 48 : 32, + child: TextButton( + onPressed: () { + Navigator.pushNamed(context, RegistrationScreen.routeName); + }, + style: TextButton.styleFrom( + backgroundColor: Colors.transparent, + foregroundColor: Colors.white, + padding: EdgeInsets.zero, + textStyle: TextStyle(fontSize: isPortrait ? 18 : 16), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0), side: BorderSide(color: Colors.white, width: 1)), + ), + child: Text("إنشاء حساب جديد"), + ), + ); + + Widget _registrationText = Row( + children: [ + Divider(height: 1, color: Colors.white).expanded, + "ليس لديك حساب؟".toText(14).paddingOnly(left: 24, right: 24), + Divider(height: 1, color: Colors.white).expanded, + ], + ); + return Scaffold( backgroundColor: ColorConsts.darkText, body: SafeArea( @@ -98,95 +180,48 @@ class _LoginScreenState extends State { crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - Image.asset("assets/icons/new/Tangeem-logo-W.png", width: 136, height: 74), - 50.height, - "تسجيل الدخول".toText(18), + Image.asset("assets/icons/new/Tangeem-logo-W.png", width: isPortrait ? 136 : 100, height: 74), + isPortrait ? 50.height : 0.height, + "تسجيل الدخول".toText(isPortrait ? 18 : 20), 32.height, - LoginTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, iconData: Icons.email_rounded), - 20.height, - LoginTextFieldWidget(hint: "كلمة المرور", controller: _passwordController, iconData: Icons.lock_rounded, isPassword: true), - 20.height, - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - InkWell( - onTap: () { - setState(() { - _isRemember = !_isRemember; - }); - }, - child: Icon(_isRemember ? Icons.check_box_rounded : Icons.check_box_outline_blank_rounded, color: ColorConsts.borderDark2Text, size: 17), - //child: SvgPicture.asset(_isAccept ? "assets/icons/checkOn.svg" : "assets/icons/checkOff.svg", width: 16, height: 16,color: ColorConsts.borderDarkText), - ), - 10.width, - "تذكرني".toText(14), - ], - ), - "هل نسيت كلمة المرور؟".toText(14).onPress(() { - Navigator.pushNamed(context, ForgotPasswordScreen.routeName); - }) - ], - ), - 20.height, - SizedBox( - width: double.infinity, - height: 50, - child: TextButton( - onPressed: () { - if (_emailController.text.length < 1) { - Utils.showToast("يرجى إدخال البريد الإلكتروني"); - return; - } else if (!_emailController.text.isValidEmail()) { - Utils.showToast("صيغة البريد الإلكتروني خاطئة"); - return; - } - if (_passwordController.text.length < 1) { - Utils.showToast("يرجى إدخال كلمة المرور"); - return; - } - performLogin(_emailController.text, _passwordController.text); - }, - style: TextButton.styleFrom( - backgroundColor: ColorConsts.brownLightColor, - foregroundColor: Colors.white, - textStyle: TextStyle(fontSize: 18), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - ), - child: Text("تسجيل الدخول"), - ), - ), - 20.height, - Row( - children: [ - Divider(height: 1, color: Colors.white).expanded, - "ليس لديك حساب؟".toText(14).paddingOnly(left: 24, right: 24), - Divider(height: 1, color: Colors.white).expanded, - ], - ), - 20.height, - SizedBox( - width: double.infinity, - height: 48, - child: TextButton( - onPressed: () { - Navigator.pushNamed(context, RegistrationScreen.routeName); - }, - style: TextButton.styleFrom( - backgroundColor: Colors.transparent, - foregroundColor: Colors.white, - textStyle: TextStyle(fontSize: 18), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0), side: BorderSide(color: Colors.white, width: 1)), - ), - child: Text("إنشاء حساب جديد"), - ), - ), - 46.height, + if (isPortrait) ...[ + LoginTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, iconData: Icons.email_rounded), + 20.height, + LoginTextFieldWidget(hint: "كلمة المرور", controller: _passwordController, iconData: Icons.lock_rounded, isPassword: true), + 20.height, + _options, + 20.height, + _loginButton, + 20.height, + _registrationText, + 20.height, + _registrationButton, + 46.height, + ] else ...[ + Row( + children: [ + Column( + children: [ + LoginTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, iconData: Icons.email_rounded), + 20.height, + LoginTextFieldWidget(hint: "كلمة المرور", controller: _passwordController, iconData: Icons.lock_rounded, isPassword: true), + ], + ).expanded, + 24.width, + Column( + children: [ + _loginButton, + 14.height, + _registrationText, + 10.height, + _registrationButton, + ], + ).expanded + ], + ).paddingOnly(left: 42, right: 42), + 16.height, + _options.paddingOnly(left: 42, right: 42), + ], Column( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/ui/screens/registration_screen.dart b/lib/ui/screens/registration_screen.dart index 1571b66..4a112e9 100644 --- a/lib/ui/screens/registration_screen.dart +++ b/lib/ui/screens/registration_screen.dart @@ -88,161 +88,205 @@ class _RegistrationScreenState extends State { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: ColorConsts.greyF8Color, - body: SingleChildScrollView( - padding: EdgeInsets.only(top: 100, bottom: 24), - physics: BouncingScrollPhysics(), - child: Column( + bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait; + + Widget _header = Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.only(top: 35, bottom: 24), + child: SvgPicture.asset("assets/logos/tangheem_logo.svg", width: 72, height: 72), + ), + "انشاء حساب جديد".toText(18, color: ColorConsts.darkText), + ], + ); + + Widget _dataInput = Column( + mainAxisSize: MainAxisSize.min, + children: [ + CommonTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, isEmail: true), + SizedBox(height: 8), + CommonTextFieldWidget(hint: "الاسم الأول", controller: _firstNameController), + SizedBox(height: 8), + CommonTextFieldWidget(hint: "الاسم الأخير", controller: _lastNameController), + SizedBox(height: 8), + CommonTextFieldWidget( + hint: _selectedCountry?.countryNameAr ?? "الدولة", + controller: null, + suffixWidget: Icon(Icons.keyboard_arrow_down, size: 18, color: ColorConsts.secondaryOrange), + onTap: () { + _selectCountry(context); + }, + ), + SizedBox(height: 8), + CommonTextFieldWidget( + hint: " رقم الجوال (اختياري)${" (" + (_selectedCountry?.countryCode ?? "+9xx") + " xxxxxxxxx)"}", + controller: _mobileNumberController, + suffixWidget: Text(_selectedCountry?.countryCode ?? "", textDirection: TextDirection.ltr), + ), + SizedBox(height: 8), + CommonTextFieldWidget(hint: "تعيين كلمة المرور", controller: _passwordController), + SizedBox(height: 8), + CommonTextFieldWidget(hint: "تأكيد كلمة المرور", controller: _confirmPasswordController), + Row( mainAxisSize: MainAxisSize.min, children: [ - Image.asset("assets/icons/new/Tangeem-logo.png", width: 116, height: 62), - 30.height, - Container( - width: MediaQuery.of(context).size.width, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.0), color: Colors.white), - margin: EdgeInsets.only(left: 24, right: 24, top: 24, bottom: 20), + Icon(_isAccept ? Icons.check_box_rounded : Icons.check_box_outline_blank_rounded, color: ColorConsts.borderDark2Text, size: 17), + SizedBox(width: 8), + "جميع البيانات صحيحة ضمن اتفاقية الاستخدام".toText(14, color: ColorConsts.darkText).expanded, + ], + ).onPress(() { + setState(() { + _isAccept = !_isAccept; + }); + }).paddingOnly(top: 24, bottom: 24, left: 16, right: 16), + ], + ); + + List _dataList = [ + _header, + "قم بتعبئة بيانات طلب انشاء الحساب و ستصلك رسالة تأكيد, ومن ثم يمكنك الدخول لحسابك الجديد" + .toText(13, color: ColorConsts.grey9FColor, textAlign: TextAlign.center) + .paddingOnly(left: 24, right: 24, top: 18, bottom: 18), + _dataInput.paddingOnly(left: 12, right: 12), + ]; + + Widget _registrationButton = SizedBox( + width: double.infinity, + height: 50, + child: TextButton( + onPressed: () { + if (_emailController.text.length < 1) { + Utils.showToast("يرجى إدخال البريد الإلكتروني"); + return; + } + if (_firstNameController.text.length < 1) { + Utils.showToast("يرجى إدخال الاسم الأول"); + return; + } + if (_lastNameController.text.length < 1) { + Utils.showToast("يرجى إدخال الاسم الأخير"); + return; + } + if (_selectedCountry?.countryCode == null) { + Utils.showToast("يرجى اختيار الدولة"); + return; + } + // if (_mobileNumberController.text.length < 1) { + // Utils.showToast("يرجى إدخال رقم الجوال"); + // return; + // } else + + if (_mobileNumberController.text.isNotEmpty && (_mobileNumberController.text.length < 8 || _mobileNumberController.text.length > 12)) { + Utils.showToast("رقم الهاتف غير صحيح"); + return; + } + if (_passwordController.text.length < 1) { + Utils.showToast("يرجى إدخال كلمة المرور"); + return; + } + if (_confirmPasswordController.text.length < 1) { + Utils.showToast("يرجى تأكيد كلمة المرور"); + return; + } + + if (!_emailController.text.isValidEmail()) { + Utils.showToast("صيغة البريد الإلكتروني خاطئة"); + return; + } + + if (_passwordController.text != _confirmPasswordController.text) { + Utils.showToast("كلمة المرور غير متطابقة"); + return; + } + + if (!_isAccept) { + Utils.showToast("الرجاء الموافقة على سياسة الخصوصية"); + return; + } + registerUser(_firstNameController.text, _lastNameController.text, _emailController.text, _passwordController.text, _selectedCountry?.countryCode, _mobileNumberController.text); + }, + style: TextButton.styleFrom( + backgroundColor: ColorConsts.darkText, + foregroundColor: Colors.white, + textStyle: TextStyle(fontSize: 18), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(25.0), + ), + ), + child: Text("انشئ حسابك"), + ), + ); + + Widget _contactUsButton = Column( + mainAxisSize: MainAxisSize.min, + children: [ + SvgPicture.asset("assets/icons/new/contact_us.svg", width: 26, height: 24, color: ColorConsts.greyC4Color), + 8.height, + "اتصل بنا".toText(14, color: ColorConsts.greyC4Color), + ], + ).onPress(() { + Navigator.pushNamed(context, ContactUsScreen.routeName); + }); + + return isPortrait + ? Scaffold( + backgroundColor: ColorConsts.greyF8Color, + body: SingleChildScrollView( + padding: EdgeInsets.only(top: 100, bottom: 24), + physics: BouncingScrollPhysics(), child: Column( - crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - Padding( - padding: EdgeInsets.only(top: 35, bottom: 24), - child: SvgPicture.asset("assets/logos/tangheem_logo.svg", width: 72, height: 72), + Image.asset("assets/icons/new/Tangeem-logo.png", width: 116, height: 62), + 30.height, + Container( + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.0), color: Colors.white), + margin: EdgeInsets.only(left: 24, right: 24, top: 24, bottom: 20), + child: Column(crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: _dataList), ), - "انشاء حساب جديد".toText(18, color: ColorConsts.darkText), - "قم بتعبئة بيانات طلب انشاء الحساب و ستصلك رسالة تأكيد, ومن ثم يمكنك الدخول لحسابك الجديد" - .toText(13, color: ColorConsts.grey9FColor, textAlign: TextAlign.center) - .paddingOnly(left: 24, right: 24, top: 18, bottom: 18), - Column( - mainAxisSize: MainAxisSize.min, - children: [ - CommonTextFieldWidget(hint: "البريد الإلكتروني", controller: _emailController, isEmail: true), - SizedBox(height: 8), - CommonTextFieldWidget(hint: "الاسم الأول", controller: _firstNameController), - SizedBox(height: 8), - CommonTextFieldWidget(hint: "الاسم الأخير", controller: _lastNameController), - SizedBox(height: 8), - CommonTextFieldWidget( - hint: _selectedCountry?.countryNameAr ?? "الدولة", - controller: null, - suffixWidget: Icon(Icons.keyboard_arrow_down, size: 18, color: ColorConsts.secondaryOrange), - onTap: () { - _selectCountry(context); - }, - ), - SizedBox(height: 8), - CommonTextFieldWidget( - hint: " رقم الجوال (اختياري)${" (" + (_selectedCountry?.countryCode ?? "+9xx") + " xxxxxxxxx)"}", - controller: _mobileNumberController, - suffixWidget: Text(_selectedCountry?.countryCode ?? "", textDirection: TextDirection.ltr), - ), - SizedBox(height: 8), - CommonTextFieldWidget(hint: "تعيين كلمة المرور", controller: _passwordController), - SizedBox(height: 8), - CommonTextFieldWidget(hint: "تأكيد كلمة المرور", controller: _confirmPasswordController), - Row( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - InkWell( - onTap: () { - setState(() { - _isAccept = !_isAccept; - }); - }, - child: Icon(_isAccept ? Icons.check_box_rounded : Icons.check_box_outline_blank_rounded, color: ColorConsts.borderDark2Text, size: 17), - //child: SvgPicture.asset(_isAccept ? "assets/icons/checkOn.svg" : "assets/icons/checkOff.svg", width: 16, height: 16,color: ColorConsts.borderDarkText), - ), - SizedBox(width: 8), - "جميع البيانات صحيحة ضمن اتفاقية الاستخدام".toText(14, color: ColorConsts.darkText).expanded, - ], - ).paddingOnly(left: 30, right: 30, top: 30, bottom: 26), - ], - ).paddingOnly(left: 12, right: 12), + _registrationButton.paddingOnly(left: 35, right: 35, bottom: 35), + _contactUsButton, ], ), ), - SizedBox( - width: double.infinity, - height: 50, - child: TextButton( - onPressed: () { - if (_emailController.text.length < 1) { - Utils.showToast("يرجى إدخال البريد الإلكتروني"); - return; - } - if (_firstNameController.text.length < 1) { - Utils.showToast("يرجى إدخال الاسم الأول"); - return; - } - if (_lastNameController.text.length < 1) { - Utils.showToast("يرجى إدخال الاسم الأخير"); - return; - } - if (_selectedCountry?.countryCode == null) { - Utils.showToast("يرجى اختيار الدولة"); - return; - } - // if (_mobileNumberController.text.length < 1) { - // Utils.showToast("يرجى إدخال رقم الجوال"); - // return; - // } else - - if (_mobileNumberController.text.isNotEmpty && (_mobileNumberController.text.length < 8 || _mobileNumberController.text.length > 12)) { - Utils.showToast("رقم الهاتف غير صحيح"); - return; - } - if (_passwordController.text.length < 1) { - Utils.showToast("يرجى إدخال كلمة المرور"); - return; - } - if (_confirmPasswordController.text.length < 1) { - Utils.showToast("يرجى تأكيد كلمة المرور"); - return; - } - - if (!_emailController.text.isValidEmail()) { - Utils.showToast("صيغة البريد الإلكتروني خاطئة"); - return; - } - - if (_passwordController.text != _confirmPasswordController.text) { - Utils.showToast("كلمة المرور غير متطابقة"); - return; - } - - if (!_isAccept) { - Utils.showToast("الرجاء الموافقة على سياسة الخصوصية"); - return; - } - registerUser(_firstNameController.text, _lastNameController.text, _emailController.text, _passwordController.text, _selectedCountry?.countryCode, _mobileNumberController.text); - }, - style: TextButton.styleFrom( - backgroundColor: ColorConsts.darkText, - foregroundColor: Colors.white, - textStyle: TextStyle(fontSize: 18), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(25.0), + ) + : Row( + children: [ + Expanded(child: Image.asset("assets/icons/new/Tangeem-logo.png", width: 116, height: 62).paddingOnly(right: 70), flex: 3), + Expanded( + child: Container( + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.0), color: Colors.white), + margin: EdgeInsets.all(24), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Expanded(child: _header, flex: 2), + Expanded( + child: SingleChildScrollView( + padding: EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + "قم بتعبئة بيانات طلب انشاء الحساب و ستصلك رسالة تأكيد, ومن ثم يمكنك الدخول لحسابك الجديد".toText(14, color: ColorConsts.grey9FColor, textAlign: TextAlign.center), + 24.height, + _dataInput, + _registrationButton, + 24.height, + _contactUsButton, + ], + ), + ), + flex: 4), + ], + ), ), - ), - child: Text("انشئ حسابك"), - ), - ).paddingOnly(left: 35, right: 35, bottom: 35), - Column( - mainAxisSize: MainAxisSize.min, - children: [ - SvgPicture.asset("assets/icons/new/contact_us.svg", width: 26, height: 24, color: ColorConsts.greyC4Color), - 8.height, - "اتصل بنا".toText(14, color: ColorConsts.greyC4Color), - ], - ).onPress(() { - Navigator.pushNamed(context, ContactUsScreen.routeName); - }) - ], - ), - ), - ); + flex: 7), + ], + ); } void _selectCountry(context) { diff --git a/lib/widgets/login_textfield_widget.dart b/lib/widgets/login_textfield_widget.dart index 56caa74..e68ed50 100644 --- a/lib/widgets/login_textfield_widget.dart +++ b/lib/widgets/login_textfield_widget.dart @@ -13,6 +13,8 @@ class LoginTextFieldWidget extends StatelessWidget { @override Widget build(BuildContext context) { + bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait; + return isForChangePassword ? SizedBox( height: 45, @@ -71,7 +73,7 @@ class LoginTextFieldWidget extends StatelessWidget { maxLines: 1, scrollPhysics: BouncingScrollPhysics(), decoration: InputDecoration( - contentPadding: EdgeInsets.only(top: 19, bottom: 19, right: 32, left: 4), + contentPadding: EdgeInsets.only(top: isPortrait ? 19 : 0, bottom: isPortrait ? 19 : 0, right: 32, left: 4), alignLabelWithHint: true, fillColor: Color(0xff598A8D), filled: true,