import 'dart:async'; import 'dart:developer'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/disclosure/disclosure_question_model.dart'; import 'package:mohem_flutter_app/ui/disclosure/disclosure_provider.dart'; import 'package:mohem_flutter_app/ui/disclosure/widgets/disclosure_progress_container.dart'; import 'package:mohem_flutter_app/ui/disclosure/widgets/disclosure_question_card.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; import 'package:provider/provider.dart'; class DisclosureScreen extends StatelessWidget { const DisclosureScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { DisclosureProvider provider = context.watch(); bool isLastQuestion = provider.currentQuestionNumber == provider.disclosureDetailsModel.totalQuestions!; bool isButtonDisabled = (provider.currentQuestionSelectionStatus != DisclosureQuestionsOptionStatus.correct && provider.currentQuestionSelectionStatus != DisclosureQuestionsOptionStatus.wrong) || (provider.currentQuestionSelectionStatus == DisclosureQuestionsOptionStatus.correct && provider.currentAdditionalText.isEmpty) && !isLastQuestion || (isLastQuestion && provider.currentQuestionSelectionStatus == DisclosureQuestionsOptionStatus.wrong); return WillPopScope( child: Scaffold( appBar: AppBarWidget( context, title: LocaleKeys.disclosure.tr(), onHomeTapped: () { showDialog( context: context, builder: (BuildContext context) => ConfirmDialog( message: LocaleKeys.areYouSureYouWantToGoBack.tr(), onTap: () { provider.resetValues(); provider.getDisclosureDetails(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); }, ), ); }, onBackTapped: () async { if (provider.currentQuestionNumber > 1) { await provider.callPreviousQuestionApi(); return; } showDialog( context: context, builder: (BuildContext context) => ConfirmDialog( message: LocaleKeys.areYouSureYouWantToGoBack.tr(), onTap: () { provider.resetValues(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); }, ), ); }, ), body: Column( children: [ ListView( shrinkWrap: true, children: [ 10.height, DisclosureProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), const DisclosureQuestionCard().paddingOnly(top: 12, left: 21, right: 21), ], ).expanded, DefaultButton( isLastQuestion ? LocaleKeys.submit.tr() : LocaleKeys.next.tr(), isButtonDisabled ? null : () async { if (isLastQuestion) { provider.resetValues(); provider.getDisclosureDetails(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); return; } provider.updateCurrentSelectionYesNo(DisclosureQuestionsOptionStatus.unSelected); provider.updateAnswerStatusesList(DisclosureQuestionCardStatus.correctAnswer); await provider.callNextQuestionApi(); }, textColor: !isButtonDisabled ? MyColors.whiteColor : MyColors.greyACColor, color: isLastQuestion ? MyColors.greenColor : null, ).insideContainer, ], ), ), onWillPop: () async { if (provider.currentQuestionNumber > 1) { await provider.callPreviousQuestionApi(); return Future.value(false); } showDialog( context: context, builder: (BuildContext context) => ConfirmDialog( message: LocaleKeys.areYouSureYouWantToGoBack.tr(), onTap: () { provider.resetValues(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); }, ), ); return Future.value(false); }, ); } }