import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:lucide_icons/lucide_icons.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../config/AppSnackbar.dart'; import '../config/constants/arabe.dart' as Language; import '../config/custom_text.dart'; import '../providers/authentification_provider.dart'; import '../providers/language_provider.dart'; import '../providers/utils_singleton.dart'; import '../routes/app_routes.dart'; import '../services/Sockets/PubNubManager.dart'; import '../utils/colors.dart'; import '../widgets/custom_button.dart'; import '../widgets/phone_input_field.dart'; import 'NewUiScreen/Registration/popUpwidget.dart'; import 'NewUiScreen/SelectVerificationReceive.dart'; class Signupscreen extends StatefulWidget { final bool isForgetPassword; const Signupscreen({super.key, required this.isForgetPassword}); @override State createState() => _SignupscreenState(); } class _SignupscreenState extends State { final TextEditingController passwordController = TextEditingController(); String _phoneNumber = ''; String _countryCode = ''; String completePhoneNumber = ''; bool isChecked = false; bool isVisible = true; final _formKey = GlobalKey(); @override Widget build(BuildContext context) { final languageProvider = context.watch(); bool isArabic = languageProvider.currentLangCode == Language.ar; final signUpProvider = context.watch(); //final isValid = isPhoneValid(completePhoneNumber); return SafeArea( child: Scaffold( resizeToAvoidBottomInset: false, backgroundColor: AppNewColors.whiteBackGround, body: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: Form( key: _formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ const SizedBox(height: 10), InkWell( onTap: () { Navigator.pop(context); }, child: Container( width: 32, height: 32, margin: const EdgeInsets.symmetric(vertical: 12), decoration: BoxDecoration( color: AppNewColors.lightgray, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: AppNewColors.black.withOpacity(.1), blurRadius: 1, offset: const Offset(2, 1), //spreadRadius: -32, ) ]), child: const Icon( Icons.arrow_back, color: AppNewColors.black, size: 16, ), ), ), const SizedBox(height: 24), Txt( text: widget.isForgetPassword ? 'Reset your password': 'Getting started', style: TextStyle( color: AppNewColors.titleTextColor, fontSize: 26, fontFamily: isArabic ? "Readex_Pro" : 'Inter', fontWeight: FontWeight.w600, height: 1.23, ), ), const SizedBox(height: 8), Txt( text:widget.isForgetPassword ?'Enter your phone number to receive a verification code.': 'let’s embark in a new journey with wanis taxi', style: TextStyle( color: AppNewColors.grayTxtColor, fontSize: 18, fontFamily: isArabic ? "Readex_Pro" : 'Inter', fontWeight: FontWeight.w500, height: 1.33, ), ), const SizedBox(height: 32), // Phone Input Field Directionality( textDirection: isArabic ? TextDirection.rtl : TextDirection.ltr, child: PhoneInputField( onNumberChange: (phoneNumber) { setState(() { _phoneNumber = phoneNumber.number; _countryCode = phoneNumber.countryCode; completePhoneNumber = _countryCode + _phoneNumber; }); }, validator: (phoneNumber) { if (phoneNumber == null || phoneNumber.number.isEmpty) { return languageProvider .translate('Please enter a valid phone number'); } return null; }, ), ), const SizedBox(height: 30), CustomButton( onClick: () async { print('Complete Phone Number: 01'); if(widget.isForgetPassword){ if (signUpProvider.loader) return; if (_formKey.currentState!.validate()) { Navigator.push( context, MaterialPageRoute( builder: (context) => SelectVerificationReceiveScreen( phoneNumber: completePhoneNumber, isForgetPassword:true ), ), ); } }else{ if (await signUpProvider.isPhoneNumberExist(completePhoneNumber)) { AppDialog.showPhoneNumberError( context, title: "Number used before", message: "Please enter a new mobile number with the country code.", btTitle:"Back to login", icon: LucideIcons.x, onBackToLogin: () { // Handle back to login navigation // For example: // Navigator.pushReplacementNamed(context, '/login'); }, ); return; }else{ if (signUpProvider.loader) return; if (_formKey.currentState!.validate()) { Navigator.push( context, MaterialPageRoute( builder: (context) => SelectVerificationReceiveScreen( phoneNumber: completePhoneNumber, isForgetPassword:false ), ), ); } } } }, fontSize: 18, width: double.infinity, height: 40, borderRadius: 10, txtColor: AppNewColors.white, title: 'Next', backgroundColor: AppNewColors.primaryBtnColor, borderColor: AppNewColors.primaryBtnColor, isloading: signUpProvider.loader, loadercolor: AppNewColors.white, ), ], ), ), ), ), ); } }