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/extensions/int_extensions.dart'; import 'package:tangheem/extensions/string_extensions.dart'; import 'package:tangheem/extensions/widget_extensions.dart'; import 'package:tangheem/ui/screens/contact_us_screen.dart'; import 'package:tangheem/widgets/common_textfield_widget.dart'; class ForgotPasswordScreen extends StatefulWidget { static const String routeName = "/forgot_password"; ForgotPasswordScreen({Key key}) : super(key: key); @override _ForgotPasswordScreenState createState() { return _ForgotPasswordScreenState(); } } class _ForgotPasswordScreenState extends State { TextEditingController _emailController = TextEditingController(); @override void initState() { super.initState(); } @override void dispose() { super.dispose(); } void forgotPassword(String email) async { Utils.showLoading(context); try { await UserApiClient().forgotPassword(email); Utils.showToast("تم إرسال رابط تغيير كلمة المرور إلى بريدك الإلكتروني"); } catch (ex) { if (mounted) Utils.handleException(ex, null); Utils.hideLoading(context); return; } finally { Utils.hideLoading(context); } //getOTP(email); } void verifyOTP(String email, int otp) async { Utils.showLoading(context); try { await UserApiClient().verifyOTP(email, otp); } catch (ex) { if (mounted) Utils.handleException(ex, null); Utils.hideLoading(context); return; } finally { Utils.hideLoading(context); } Navigator.pop(context); //changePassword(email, otp); } void updatePassword(String email, int otp, String password) async { Utils.showLoading(context); try { //await UserApiClient().updatePassword(email, otp, password); } catch (ex) { if (mounted) Utils.handleException(ex, null); Utils.hideLoading(context); return; } finally { Utils.hideLoading(context); } Navigator.pop(context); Utils.showToast("تم تغيير كلمة المرور بنجاح"); Navigator.pop(context); } @override Widget build(BuildContext context) { bool isPortrait = MediaQuery.of(context).orientation == Orientation.portrait; Widget _button = 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; } forgotPassword(_emailController.text); }, style: TextButton.styleFrom( backgroundColor: ColorConsts.darkText, foregroundColor: Colors.white, textStyle: TextStyle(fontSize: 18), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(25.0), ), ), child: Text("إعادة تعيين كلمة المرور"), ), ).paddingOnly(left: isPortrait ? 11 : 0, right: isPortrait ? 11 : 0, bottom: 28); Widget _contactUs = 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 Scaffold( backgroundColor: ColorConsts.greyF8Color, body: isPortrait ? SingleChildScrollView( padding: EdgeInsets.only(top: 100, bottom: 24, left: 24, right: 24), physics: BouncingScrollPhysics(), child: Column( 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(top: 6, bottom: 20), padding: EdgeInsets.only(top: 50, bottom: 20, left: 11, right: 11), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset("assets/icons/reset.svg", width: 100, height: 72), 25.height, "استعادة كلمة المرور".toText(18, color: ColorConsts.darkText), 18.height, "يمكنك إعادة تعيين كلمة المرور عبر حساب بريدك الإلكتروني".toText(13, color: ColorConsts.grey9FColor, textAlign: TextAlign.center).paddingOnly(left: 77, right: 77), 25.height, CommonTextFieldWidget(hint: "البريد الإلكتروني المسجل", controller: _emailController, isEmail: true), ], ), ), _button, _contactUs, ], ), ) : SizedBox( height: MediaQuery.of(context).size.height, child: Row( children: [ Expanded(flex: 1, child: Image.asset("assets/icons/new/Tangeem-logo.png", width: 136, height: 82).paddingOnly(right: 40)), Expanded( flex: 2, child: Container( width: MediaQuery.of(context).size.width, // height: MediaQuery.of(context).size.height, decoration: BoxDecoration(borderRadius: BorderRadius.circular(20.0), color: Colors.white), margin: EdgeInsets.all(24), padding: EdgeInsets.only(left: 24, right: 0), child: Row( children: [ Expanded( flex: 2, child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ SvgPicture.asset("assets/icons/reset.svg", width: 120, height: 92), 25.height, "استعادة كلمة المرور".toText(18, color: ColorConsts.darkText, fontFamily: false), ], ), ), Expanded( flex: 3, child: SingleChildScrollView( physics: BouncingScrollPhysics(), padding: EdgeInsets.only( top: 50, bottom: 50, ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ "يمكنك إعادة تعيين كلمة المرور عبر حساب بريدك الإلكتروني".toText(18, color: ColorConsts.grey9FColor, textAlign: TextAlign.center), 24.height, CommonTextFieldWidget(hint: "البريد الإلكتروني المسجل", controller: _emailController, isEmail: true), 12.height, _button, _contactUs ], ), ), ), ], ), ), ) ], ), ), ); } }