diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index b916f23..53b70a5 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -158,13 +158,15 @@ extension EmailValidator on String { style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 22, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), ); - Widget toText24({Color? color, bool isBold = false}) => Text( + Widget toText24({Color? color, bool isBold = false, bool isCentered = false}) => Text( this, + textAlign: isCentered ? TextAlign.center : null, style: TextStyle(height: 23 / 24, color: color ?? MyColors.darkTextColor, fontSize: 24, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), ); - Widget toText30({Color? color, bool isBold = false}) => Text( + Widget toText30({Color? color, bool isBold = false, bool isCentered = false}) => Text( this, + textAlign: isCentered ? TextAlign.center : null, style: TextStyle(height: 20 / 32, color: color ?? MyColors.darkTextColor, fontSize: 32, letterSpacing: -1.2, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), ); diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 9185a19..856a484 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -190,6 +190,7 @@ class MarathonProvider extends ChangeNotifier { oneSec, (Timer timer) async { if (totalSecondsToWaitForMarathon == 0) { + timer.cancel(); if (isUserWaiting) { MarathonApiClient().joinMarathonAsParticipant().whenComplete(() async { await callNextQuestionApi(); @@ -197,7 +198,6 @@ class MarathonProvider extends ChangeNotifier { } else { isButtonEnabled = false; } - timer.cancel(); return; } else { totalSecondsToWaitForMarathon--; @@ -210,20 +210,24 @@ class MarathonProvider extends ChangeNotifier { int totalCurrentQuestionTime = 0; int currentGapTime = 0; Timer timerForQuestion = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + int callCountThreshold = 0; void startTimerForQuestion() { const Duration oneSec = Duration(seconds: 1); timerForQuestion = Timer.periodic( oneSec, (Timer timer) async { - // This 2 is just to show the color of answer tile for 1 and then update card status + // This 1 is just to show the color of answer tile for 1 and then update card status if (totalCurrentQuestionTime - currentGapTime == 1) { - getCorrectAnswerAndUpdateAnswerColor(); + if (callCountThreshold == 0) { + getCorrectAnswerAndUpdateAnswerColor(); + } } if (totalCurrentQuestionTime - currentGapTime == -2) { - updateCardStatusToAnswer(); - + if (callCountThreshold == 0) { + updateCardStatusToAnswer(); + } // scheduleMicrotask(() async { // if (AppState().getIsDemoMarathon || isUserOutOfGame) { // await callNextQuestionApi(); @@ -243,6 +247,7 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } totalCurrentQuestionTime--; + callCountThreshold = 0; } if (totalCurrentQuestionTime == 0) { @@ -255,6 +260,7 @@ class MarathonProvider extends ChangeNotifier { } else { if (totalCurrentQuestionTime - currentGapTime != -2) { totalCurrentQuestionTime--; + callCountThreshold = 0; } } @@ -413,6 +419,7 @@ class MarathonProvider extends ChangeNotifier { } void getCorrectAnswerAndUpdateAnswerColor() { + callCountThreshold = 1; if (selectedOptionIndex != null) { scheduleMicrotask(() async { if (AppState().getIsDemoMarathon) { @@ -447,7 +454,7 @@ class MarathonProvider extends ChangeNotifier { if (currentQuestionNumber == 0) { return; } - + callCountThreshold = 1; scheduleMicrotask(() async { await callNextQuestionApi(); }); @@ -478,6 +485,7 @@ class MarathonProvider extends ChangeNotifier { void resetValues() async { _currentQuestionNumber = 0; + iAmWinner = false; cardContentList.clear(); itsMarathonTime = false; timerForWinnerSelection.cancel(); diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 9d76cf7..f4207a1 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -169,26 +169,37 @@ class MarathonScreen extends StatelessWidget { ], ) : const SizedBox(), - 36.height, + 34.height, if (provider.selectedWinners != null) ...[ - ListView.separated( - shrinkWrap: true, - itemCount: provider.selectedWinners!.length, - separatorBuilder: (BuildContext context, int index) { - return const Divider(); - }, - itemBuilder: (BuildContext context, int index) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( - color: MyColors.grey3AColor, - ), - provider.selectedWinners!.first.employeeId!.toText16(color: MyColors.grey57Color), - ], - ); - }, - ), + provider.selectedWinners!.length == 1 + ? Column( + children: [ + (AppState().isArabic(context) ? provider.selectedWinners![0].nameEn : provider.selectedWinners![0].nameEn)!.toText24( + color: MyColors.grey3AColor, + isCentered: true, + ), + 8.height, + AppState().memberInformationList!.eMPLOYEENUMBER!.toText22(color: MyColors.grey57Color), + ], + ) + : ListView.separated( + shrinkWrap: true, + itemCount: provider.selectedWinners!.length, + separatorBuilder: (BuildContext context, int index) { + return const Divider(); + }, + itemBuilder: (BuildContext context, int index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( + color: MyColors.grey3AColor, + ), + provider.selectedWinners!.first.employeeId!.toText16(color: MyColors.grey57Color), + ], + ); + }, + ), ], 60.height, if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 223fb2c..f9076bc 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -431,7 +431,7 @@ class MarathonBanner extends StatelessWidget { ), Flexible( child: Text( - (AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "").trimString(15), + (AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "").trimString(isTablet ? 25 : 15), overflow: TextOverflow.ellipsis, style: TextStyle( fontStyle: FontStyle.italic,