Files
Tanami_App/lib/features/login/presentation/widgets/bottom_section.dart
2024-07-17 19:12:26 +05:30

140 lines
5.2 KiB
Dart

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<RadioBloc>();
var loginbloc = context.read<LoginBloc>();
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<LoginBloc, LoginState>(
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),
],
);
}
}