import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:gap/gap.dart'; import 'package:tanami_app/core/utils/secure/secure_storage_service.dart'; import '../../../../core/routes/route_name.dart'; import '../../../../core/routes/routes.dart'; import '../../../../core/styles/app_color.dart'; import '../../../../core/styles/app_text.dart'; import '../../../../core/utils/language/localizations_delegate.dart'; import '../../../../shared/components/button_widget.dart'; import '../../../../shared/components/loader.dart'; import '../../../../shared/components/text_widget.dart'; import '../../../../shared/components/toast_message.dart'; import '../../../countrySelection/bloc/choose_country_bloc.dart'; import '../bloc/login_bloc.dart'; import '../bloc/login_event.dart'; import '../bloc/login_state.dart'; class BottomSection extends StatelessWidget { final String fromScreen; const BottomSection({ super.key, required this.fromScreen, }); @override Widget build(BuildContext context) { var localizations = AppLocalizations.of(context); SecureStorageService secureStorageService = SecureStorageService(); final radioBloc = context.read(); var loginbloc = context.read(); return Column( children: [ const Gap(12), Align( alignment: Alignment.topRight, child: ButtonWidget().textBtn( function: () { // Reset fields when the screen is built loginbloc.resetFields(); radioBloc.resetSelection(); goRouter .pushNamed(RouteName.forgotPasswordPhoneVerificationScreen); }, text: TextWidget().text15W400( localizations.translate(AppText.forgotPassword), clr: AppColor.forgotPassButtonColor, textDecoration: TextDecoration.underline)), ), const Gap(20), BlocConsumer( listener: (context, state) async { if (state is LoginLoading) { Loader.loader(context); } else if (state is LoginSuccess) { // goRouter.goNamed('mainScreen'); successToastMessage(context, "login successful !"); goRouter.pop(); radioBloc.resetSelection(); await secureStorageService.write('isLoginedIn', "true"); goRouter.pushNamed(RouteName.pinScreen, pathParameters: { "fromScreen": fromScreen == "forgot-pin" ? "forgot-pin" : "login", }); //Push Or GO Need to Check } else if (state is LoginMasterPinPending) { goRouter.pop(); goRouter.goNamed(RouteName.pinScreen, pathParameters: { "fromScreen": "login-master-pending", }); } else if (state is LoginFailure) { goRouter.pop(); errorToastMessage( context, state.error, ); } }, builder: (context, state) { bool isButtonEnabled = false; if (state is LoginFieldsState) { isButtonEnabled = state.areFieldsFilled; } else if (state is LoginSuccess || state is LoginFailure) { isButtonEnabled = true; } return Container( margin: const EdgeInsets.symmetric( horizontal: 16, ), width: 1.sw, height: 56.h, child: ButtonWidget().elevatedBtn( txtClr: isButtonEnabled ? AppColor.plainWhite : AppColor.inactiveBtnTxtColor, function: () { FocusManager.instance.primaryFocus?.unfocus(); isButtonEnabled ? loginbloc.add( LoginSubmitted( loginbloc.phoneNumberTextField.text, loginbloc.passwordTextField.text, "", loginbloc.countryId), ) : null; }, text: localizations.translate(AppText.loginText), clr: isButtonEnabled ? AppColor.primaryColor2 : AppColor.inactiveBtnColor, ), ); }, ), const Gap(10), ButtonWidget().textBorderBtn( function: () { loginbloc.resetFields(); radioBloc.resetSelection(); fromScreen == "forgot-pin" ? goRouter.pop() : goRouter .pushNamed(RouteName.registerStepScreen, pathParameters: { "fromScreentype": "login", }); }, clr: AppColor.plainWhite, borderClr: AppColor.txtBorderColor, text: fromScreen == "forgot-pin" ? localizations.translate(AppText.backText) : localizations.translate(AppText.signUpText), ), const Gap(15), ], ); } }