|  |  |  | import 'package:easy_localization/easy_localization.dart'; | 
					
						
							|  |  |  | import 'package:flutter/gestures.dart'; | 
					
						
							|  |  |  | import 'package:flutter/material.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/app_assets.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/core/utils/utils.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/presentation/authentication/register.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/theme/colors.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/widgets/appbar/app_bar_widget.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/widgets/input_widget.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LoginScreen extends StatefulWidget { | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   _LoginScreen createState() => _LoginScreen(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class _LoginScreen extends State<LoginScreen> { | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   void initState() { | 
					
						
							|  |  |  |     super.initState(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   void dispose() { | 
					
						
							|  |  |  |     super.dispose(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Widget build(BuildContext context) { | 
					
						
							|  |  |  |     return Scaffold( | 
					
						
							|  |  |  |       backgroundColor: AppColors.bgScaffoldColor, | 
					
						
							|  |  |  |       appBar: CustomAppBar( | 
					
						
							|  |  |  |         onBackPressed: () { | 
					
						
							|  |  |  |           Navigator.of(context).pop(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         onLanguageChanged: (String value) { | 
					
						
							|  |  |  |           // context.setLocale(value == 'en' ? Locale('ar', 'SA') : Locale('en', 'US'));
 | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |       body: GestureDetector( | 
					
						
							|  |  |  |         onTap: () { | 
					
						
							|  |  |  |           FocusScope.of(context).unfocus(); // Dismiss the keyboard when tapping outside
 | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         child: SingleChildScrollView( | 
					
						
							|  |  |  |           child: Padding( | 
					
						
							|  |  |  |             padding: EdgeInsets.symmetric(horizontal: 24.h), | 
					
						
							|  |  |  |             child: Column( | 
					
						
							|  |  |  |               mainAxisSize: MainAxisSize.min, | 
					
						
							|  |  |  |               crossAxisAlignment: CrossAxisAlignment.start, | 
					
						
							|  |  |  |               children: [ | 
					
						
							|  |  |  |                 Utils.showLottie(context: context, assetPath: AppAnimations.login, width: 200.h, height: 200.h, repeat: true, fit: BoxFit.cover), | 
					
						
							|  |  |  |                 SizedBox(height: 130.h), // Adjusted to sizer unit
 | 
					
						
							|  |  |  |                 LocaleKeys.welcomeToDrSulaiman.tr().toText32(isBold: true, color: AppColors.textColor), | 
					
						
							|  |  |  |                 SizedBox(height: 32.h), | 
					
						
							|  |  |  |                 TextInputWidget( | 
					
						
							|  |  |  |                   labelText: "${LocaleKeys.nationalId.tr()} / ${LocaleKeys.fileNo.tr()}", | 
					
						
							|  |  |  |                   hintText: "xxxxxxxxx", | 
					
						
							|  |  |  |                   controller: TextEditingController(), | 
					
						
							|  |  |  |                   keyboardType: TextInputType.number, | 
					
						
							|  |  |  |                   isEnable: true, | 
					
						
							|  |  |  |                   prefix: null, | 
					
						
							|  |  |  |                   autoFocus: true, | 
					
						
							|  |  |  |                   isAllowRadius: true, | 
					
						
							|  |  |  |                   isBorderAllowed: false, | 
					
						
							|  |  |  |                   isAllowLeadingIcon: true, | 
					
						
							|  |  |  |                   padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 10.h), | 
					
						
							|  |  |  |                   leadingIcon: AppAssets.student_card, | 
					
						
							|  |  |  |                   errorMessage: "Please enter a valid national ID or file number", | 
					
						
							|  |  |  |                   hasError: true, | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 SizedBox(height: 16.h), // Adjusted to sizer unit (approx 16px)
 | 
					
						
							|  |  |  |                 CustomButton( | 
					
						
							|  |  |  |                   text: LocaleKeys.login.tr(), | 
					
						
							|  |  |  |                   icon: AppAssets.login1, | 
					
						
							|  |  |  |                   iconColor: Colors.white, | 
					
						
							|  |  |  |                   onPressed: () {}, | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 SizedBox(height: 10.h), // Adjusted to sizer unit (approx 14px)
 | 
					
						
							|  |  |  |                 Center( | 
					
						
							|  |  |  |                   child: RichText( | 
					
						
							|  |  |  |                     textAlign: TextAlign.center, | 
					
						
							|  |  |  |                     text: TextSpan( | 
					
						
							|  |  |  |                       style: context.dynamicTextStyle( | 
					
						
							|  |  |  |                         color: Colors.black, | 
					
						
							|  |  |  |                         fontSize: 14.fSize, // Adjusted to sizer unit
 | 
					
						
							|  |  |  |                         height: 26 / 16, // This height is a ratio, may need re-evaluation
 | 
					
						
							|  |  |  |                         fontWeight: FontWeight.w500, | 
					
						
							|  |  |  |                       ), | 
					
						
							|  |  |  |                       children: <TextSpan>[ | 
					
						
							|  |  |  |                         TextSpan(text: LocaleKeys.dontHaveAccount.tr(), style: context.dynamicTextStyle()), | 
					
						
							|  |  |  |                         TextSpan(text: "  "), | 
					
						
							|  |  |  |                         TextSpan( | 
					
						
							|  |  |  |                           text: LocaleKeys.registernow.tr(), | 
					
						
							|  |  |  |                           style: context.dynamicTextStyle( | 
					
						
							|  |  |  |                             color: AppColors.primaryRedColor, | 
					
						
							|  |  |  |                             fontSize: 14.fSize, // Adjusted to sizer unit
 | 
					
						
							|  |  |  |                             height: 26 / 16, // Ratio
 | 
					
						
							|  |  |  |                             fontWeight: FontWeight.w500, | 
					
						
							|  |  |  |                           ), | 
					
						
							|  |  |  |                           recognizer: TapGestureRecognizer() | 
					
						
							|  |  |  |                             ..onTap = () { | 
					
						
							|  |  |  |                               Navigator.of(context).push( | 
					
						
							|  |  |  |                                 MaterialPageRoute(builder: (BuildContext context) => RegisterNew()), | 
					
						
							|  |  |  |                               ); | 
					
						
							|  |  |  |                             }, | 
					
						
							|  |  |  |                         ), | 
					
						
							|  |  |  |                       ], | 
					
						
							|  |  |  |                     ), | 
					
						
							|  |  |  |                   ).withVerticalPadding(2), // Adjusted to sizer unit
 | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |               ], | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |