Merge branch 'faiz_cs' into 'master'

Added Answer Selection Status in Marathon

See merge request Cloud_Solution/mohemm-flutter-app!38
merge-requests/37/merge
haroon amjad 3 years ago
commit ba588cd3a3

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20.527" height="19.358" viewBox="0 0 20.527 19.358">
<path id="winner" d="M8.828,34.936H14.18v6.547H8V35.763A.829.829,0,0,1,8.828,34.936ZM25.106,22.124a1.353,1.353,0,1,1-1.353,1.353A1.353,1.353,0,0,1,25.106,22.124Zm0,3.068a2.678,2.678,0,0,1,2.558,1.884.612.612,0,0,1-.585.793H23.133a.612.612,0,0,1-.584-.793,2.678,2.678,0,0,1,2.558-1.884Zm-6.842-.661a1.353,1.353,0,1,1-1.353,1.353A1.353,1.353,0,0,1,18.264,24.532Zm0,3.068a2.678,2.678,0,0,1,2.558,1.884.612.612,0,0,1-.584.793H16.291a.612.612,0,0,1-.584-.793A2.678,2.678,0,0,1,18.264,27.6Zm-6.842-.661a1.353,1.353,0,1,1-1.353,1.353A1.353,1.353,0,0,1,11.421,26.939Zm0,3.068a2.678,2.678,0,0,1,2.558,1.884.612.612,0,0,1-.584.793H9.448a.612.612,0,0,1-.584-.793A2.678,2.678,0,0,1,11.421,30.008Zm11.091.269H27.7a.829.829,0,0,1,.828.828V41.482H21.685V31.1A.829.829,0,0,1,22.513,30.277Zm-1.49,2.408H15.67a.829.829,0,0,0-.828.828v7.97h6.18Z" transform="translate(-8 -22.124)" fill="#2e303a" fill-rule="evenodd"/>
</svg>

After

Width:  |  Height:  |  Size: 1008 B

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="195.225" height="49.742" viewBox="0 0 195.225 49.742">
<g id="ribbon" transform="translate(0 -280.776)">
<g id="Group_8895" data-name="Group 8895" transform="translate(0 280.776)">
<path id="Path_14052" data-name="Path 14052" d="M.125,280.776l12.038,25.168L0,330.518H97.613l20.923-22.538-20.923-27.2Z" transform="translate(0 -280.776)" fill="#1fa269"/>
</g>
<g id="Group_8896" data-name="Group 8896" transform="translate(97.613 280.776)">
<path id="Path_14054" data-name="Path 14054" d="M341.49,305.762l12.074-24.986H256v49.742h97.613Z" transform="translate(-256 -280.776)" fill="#1a8959"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 687 B

@ -14,9 +14,12 @@ class MyDecorations {
], ],
); );
static Decoration answerContainerDecoration = BoxDecoration( static Decoration getContainersDecoration(Color color) {
borderRadius: BorderRadius.circular(10), Decoration answerContainerDecoration = BoxDecoration(
color: MyColors.greyF7Color, borderRadius: BorderRadius.circular(10),
border: Border.all(width: 1, color: MyColors.lightGreyEFColor), color: color,
); border: Border.all(width: 1, color: MyColors.lightGreyEFColor),
);
return answerContainerDecoration;
}
} }

@ -103,7 +103,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
DrawerMenuItem("assets/images/drawer/performance_evaluation.svg", LocaleKeys.performanceEvaluation.tr(), AppRoutes.performanceEvaluation), DrawerMenuItem("assets/images/drawer/performance_evaluation.svg", LocaleKeys.performanceEvaluation.tr(), AppRoutes.performanceEvaluation),
DrawerMenuItem("assets/images/drawer/mowadhafi.svg", LocaleKeys.mowadhafhi.tr(), AppRoutes.mowadhafhi), DrawerMenuItem("assets/images/drawer/mowadhafi.svg", LocaleKeys.mowadhafhi.tr(), AppRoutes.mowadhafhi),
DrawerMenuItem("assets/images/drawer/pending_trasactions.svg", LocaleKeys.pendingTransactions.tr(), AppRoutes.pendingTransactions), DrawerMenuItem("assets/images/drawer/pending_trasactions.svg", LocaleKeys.pendingTransactions.tr(), AppRoutes.pendingTransactions),
DrawerMenuItem("assets/images/drawer/pending_trasactions.svg", LocaleKeys.brainMarathon.tr(), AppRoutes.marathonIntroScreen), DrawerMenuItem("assets/images/drawer/drawer_marathon.svg", LocaleKeys.brainMarathon.tr(), AppRoutes.marathonIntroScreen),
DrawerMenuItem("assets/images/drawer/change_password.svg", LocaleKeys.changePassword.tr(), AppRoutes.changePassword), DrawerMenuItem("assets/images/drawer/change_password.svg", LocaleKeys.changePassword.tr(), AppRoutes.changePassword),
]; ];

@ -11,7 +11,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.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/button/default_button.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -24,18 +24,20 @@ class MarathonIntroScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
MarathonProvider provider = context.watch<MarathonProvider>(); MarathonProvider provider = context.watch<MarathonProvider>();
return Scaffold( return Scaffold(
appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()),
body: Stack( body: Stack(
children: <Widget>[ children: <Widget>[
SingleChildScrollView( SingleChildScrollView(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
const MarathonHeader(),
MarathonDetailsCard(provider: provider).paddingAll(15), MarathonDetailsCard(provider: provider).paddingAll(15),
MarathonTimerCard( MarathonTimerCard(
provider: provider, provider: provider,
timeToMarathon: dummyEndTime, timeToMarathon: dummyEndTime,
).paddingOnly(left: 15, right: 15, bottom: 15), ).paddingOnly(left: 15, right: 15, bottom: 15),
const SizedBox(height: 100,), const SizedBox(
height: 100,
),
], ],
), ),
), ),
@ -52,8 +54,7 @@ class MarathonIntroScreen extends StatelessWidget {
class MarathonDetailsCard extends StatelessWidget { class MarathonDetailsCard extends StatelessWidget {
final MarathonProvider provider; final MarathonProvider provider;
const MarathonDetailsCard({Key? key, required this.provider}) const MarathonDetailsCard({Key? key, required this.provider}) : super(key: key);
: super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -68,17 +69,12 @@ class MarathonDetailsCard extends StatelessWidget {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
LocaleKeys.contestTopicAbout LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color),
.tr() "Saudi Arabia".toText20(color: MyColors.textMixColor, isBold: true),
.toText16(color: MyColors.grey77Color),
"Saudi Arabia"
.toText20(color: MyColors.textMixColor, isBold: true),
Row( Row(
children: <Widget>[ children: <Widget>[
Flexible( Flexible(
child: child: "Nam suscipit turpis in pharetra euismsdef. Duis rutrum at nulla id aliquam".toText14(color: MyColors.grey77Color),
"Nam suscipit turpis in pharetra euismsdef. Duis rutrum at nulla id aliquam"
.toText14(color: MyColors.grey77Color),
) )
], ],
), ),
@ -86,31 +82,25 @@ class MarathonDetailsCard extends StatelessWidget {
5.height, 5.height,
Row( Row(
children: <Widget>[ children: <Widget>[
LocaleKeys.prize LocaleKeys.prize.tr().toText16(color: MyColors.grey77Color, isBold: true),
.tr() " LED 55\" Android TV".toText16(color: MyColors.greenColor, isBold: true),
.toText16(color: MyColors.grey77Color, isBold: true),
" LED 55\" Android TV"
.toText16(color: MyColors.greenColor, isBold: true),
], ],
), ),
Row( Row(
children: <Widget>[ children: <Widget>[
LocaleKeys.sponsoredBy LocaleKeys.sponsoredBy.tr().toText16(color: MyColors.grey77Color),
.tr() " Extra".toText16(color: MyColors.darkTextColor, isBold: true),
.toText16(color: MyColors.grey77Color),
" Extra"
.toText16(color: MyColors.darkTextColor, isBold: true),
], ],
), ),
10.height, 10.height,
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Image.network( Image.asset(
"https://cdn.pixabay.com/photo/2014/08/27/07/53/blog-428950_1280.jpg", "assets/images/logos/main_mohemm_logo.png",
height: 50, height: 40,
fit: BoxFit.fill, fit: BoxFit.fill,
width: 120, width: 150,
) )
], ],
), ),
@ -144,8 +134,7 @@ class MarathonTimerCard extends StatelessWidget {
Row( Row(
children: <Widget>[ children: <Widget>[
LocaleKeys.gameDate.tr().toText16(color: MyColors.grey77Color), LocaleKeys.gameDate.tr().toText16(color: MyColors.grey77Color),
" 10 Oct, 2022" " 10 Oct, 2022".toText16(color: MyColors.darkTextColor, isBold: true),
.toText16(color: MyColors.darkTextColor, isBold: true),
], ],
), ),
Row( Row(
@ -156,7 +145,7 @@ class MarathonTimerCard extends StatelessWidget {
), ),
Lottie.asset( Lottie.asset(
MyLottieConsts.hourGlassLottie, MyLottieConsts.hourGlassLottie,
height: 140, height: 200,
), ),
BuildCountdownTimer( BuildCountdownTimer(
timeToMarathon: timeToMarathon, timeToMarathon: timeToMarathon,

@ -2,7 +2,9 @@ import 'dart:async';
import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:appinio_swiper/appinio_swiper.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart';
class MarathonProvider extends ChangeNotifier { class MarathonProvider extends ChangeNotifier {
final AppinioSwiperController swiperController = AppinioSwiperController(); final AppinioSwiperController swiperController = AppinioSwiperController();
@ -41,11 +43,18 @@ class MarathonProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void resetAll() {
isSelectedOptions[0] = false;
isSelectedOptions[1] = false;
isSelectedOptions[2] = false;
isSelectedOptions[3] = false;
}
Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {});
int start = 5; int start = 8;
void startTimer(BuildContext context) { void startTimer(BuildContext context) {
start = 5; start = 8;
const Duration oneSec = Duration(seconds: 1); const Duration oneSec = Duration(seconds: 1);
timerU = Timer.periodic( timerU = Timer.periodic(
oneSec, oneSec,
@ -66,9 +75,10 @@ class MarathonProvider extends ChangeNotifier {
return; return;
} }
swipeCardLeft(); resetAll();
timer.cancel(); timer.cancel();
cancelTimer(); cancelTimer();
swipeCardLeft();
} else { } else {
start--; start--;
} }

@ -13,8 +13,8 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:steps_indicator/steps_indicator.dart'; import 'package:steps_indicator/steps_indicator.dart';
@ -25,11 +25,11 @@ class MarathonScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
MarathonProvider provider = context.watch<MarathonProvider>(); MarathonProvider provider = context.watch<MarathonProvider>();
return Scaffold( return Scaffold(
appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
const MarathonHeader(), 20.height,
20.height,
MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21),
if (provider.isMarathonCompleted) if (provider.isMarathonCompleted)
InkWell( InkWell(

@ -13,7 +13,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class MarathonWinnerSelection extends StatelessWidget { class MarathonWinnerSelection extends StatelessWidget {
@ -23,13 +23,12 @@ class MarathonWinnerSelection extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
MarathonProvider provider = context.read<MarathonProvider>(); MarathonProvider provider = context.read<MarathonProvider>();
return Scaffold( return Scaffold(
appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
const MarathonHeader(),
20.height, 20.height,
QualifiersContainer(provider: provider) QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21),
.paddingOnly(left: 21, right: 21),
20.height, 20.height,
InkWell( InkWell(
onTap: () { onTap: () {
@ -53,8 +52,7 @@ class MarathonWinnerSelection extends StatelessWidget {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
"Muhammad Shrouff" "Muhammad Shrouff".toText18(isBold: true, color: MyColors.white),
.toText18(isBold: true, color: MyColors.white),
"837436".toText18(isBold: true, color: MyColors.white), "837436".toText18(isBold: true, color: MyColors.white),
], ],
), ),
@ -96,8 +94,7 @@ class MarathonWinnerSelection extends StatelessWidget {
class QualifiersContainer extends StatefulWidget { class QualifiersContainer extends StatefulWidget {
final MarathonProvider provider; final MarathonProvider provider;
const QualifiersContainer({Key? key, required this.provider}) const QualifiersContainer({Key? key, required this.provider}) : super(key: key);
: super(key: key);
@override @override
State<QualifiersContainer> createState() => _QualifiersContainerState(); State<QualifiersContainer> createState() => _QualifiersContainerState();
@ -134,11 +131,8 @@ class _QualifiersContainerState extends State<QualifiersContainer> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[ children: <Widget>[
LocaleKeys.winnerSelection LocaleKeys.winnerSelection.tr().toText18(isBold: true, color: MyColors.grey3AColor),
.tr() "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(isBold: true, color: MyColors.redColor),
.toText18(isBold: true, color: MyColors.grey3AColor),
"00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}"
.toText18(isBold: true, color: MyColors.redColor),
], ],
), ),
10.height, 10.height,

@ -33,8 +33,9 @@ class BuildCountdownTimer extends StatelessWidget {
color: MyColors.white, color: MyColors.white,
fontSize: 24, fontSize: 24,
fontStyle: FontStyle.italic, fontStyle: FontStyle.italic,
fontFamily: "Poppins",
letterSpacing: -1.44, letterSpacing: -1.44,
fontWeight: FontWeight.w600, fontWeight: FontWeight.bold,
); );
final TextStyle styleTextMarathon = const TextStyle( final TextStyle styleTextMarathon = const TextStyle(
@ -141,15 +142,11 @@ class BuildCountdownTimer extends StatelessWidget {
time.days == null time.days == null
? Text( ? Text(
"00", "00",
style: style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
) )
: Text( : Text(
time.days! < 10 time.days! < 10 ? "0${time.days.toString()}" : time.days.toString(),
? "0${time.days.toString()}" style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
: time.days.toString(),
style:
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
), ),
Text( Text(
LocaleKeys.days.tr(), LocaleKeys.days.tr(),
@ -163,15 +160,11 @@ class BuildCountdownTimer extends StatelessWidget {
time.hours == null time.hours == null
? Text( ? Text(
"00", "00",
style: style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
) )
: Text( : Text(
time.hours! < 10 time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString(),
? "0${time.hours.toString()}" style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
: time.hours.toString(),
style:
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
), ),
Text( Text(
LocaleKeys.hours.tr(), LocaleKeys.hours.tr(),
@ -185,15 +178,11 @@ class BuildCountdownTimer extends StatelessWidget {
time.min == null time.min == null
? Text( ? Text(
"00", "00",
style: style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
) )
: Text( : Text(
time.min! < 10 time.min! < 10 ? "0${time.min.toString()}" : time.min.toString(),
? "0${time.min.toString()}" style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
: time.min.toString(),
style:
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
), ),
Text( Text(
LocaleKeys.minutes.tr(), LocaleKeys.minutes.tr(),
@ -207,15 +196,11 @@ class BuildCountdownTimer extends StatelessWidget {
time.sec == null time.sec == null
? Text( ? Text(
"00", "00",
style: style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
) )
: Text( : Text(
time.sec! < 10 time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString(),
? "0${time.sec.toString()}" style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
: time.sec.toString(),
style:
screenFlag == 0 ? styleDigitHome : styleDigitMarathon,
), ),
Text( Text(
LocaleKeys.seconds.tr(), LocaleKeys.seconds.tr(),

@ -1,3 +1,4 @@
import 'package:auto_size_text/auto_size_text.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@ -22,6 +23,7 @@ class MarathonBanner extends StatelessWidget {
MarathonProvider provider = context.read<MarathonProvider>(); MarathonProvider provider = context.read<MarathonProvider>();
return Container( return Container(
decoration: MyDecorations.shadowDecoration, decoration: MyDecorations.shadowDecoration,
height: 90,
child: Stack( child: Stack(
children: [ children: [
Transform( Transform(
@ -35,50 +37,69 @@ class MarathonBanner extends StatelessWidget {
width: MediaQuery.of(context).size.width - 40, width: MediaQuery.of(context).size.width - 40,
), ),
), ),
Row( SizedBox(
mainAxisAlignment: MainAxisAlignment.end, width: double.infinity,
children: <Widget>[ height: double.infinity,
Column( child: Row(
mainAxisAlignment: MainAxisAlignment.center, children: [
mainAxisSize: MainAxisSize.min, const Expanded(
children: <Widget>[ flex: 3,
AppState().isArabic(context) ? 0.height : 5.height, child: SizedBox(
Flexible( width: double.infinity,
child: Text( height: double.infinity,
LocaleKeys.getReadyForContest.tr(),
style: const TextStyle(
fontStyle: FontStyle.italic,
fontSize: 12,
fontWeight: FontWeight.w600,
color: MyColors.lightGreyEFColor,
letterSpacing: -0.4,
),
),
), ),
const Flexible( ),
child: Text( Expanded(
"Saudi Arabia", flex: 5,
style: TextStyle( child: SizedBox(
fontStyle: FontStyle.italic, width: double.infinity,
fontSize: 19, height: double.infinity,
fontWeight: FontWeight.bold, child: Row(
color: MyColors.lightGreyEFColor, mainAxisAlignment: MainAxisAlignment.end,
height: 32 / 22, children: <Widget>[
), Column(
), mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
AppState().isArabic(context) ? 0.height : 5.height,
AutoSizeText(
LocaleKeys.getReadyForContest.tr(),
style: const TextStyle(
fontStyle: FontStyle.italic,
fontSize: 12,
fontWeight: FontWeight.w600,
color: MyColors.lightGreyEFColor,
letterSpacing: -0.4,
),
),
const AutoSizeText(
"Saudi Arabia",
style: TextStyle(
fontStyle: FontStyle.italic,
fontSize: 19,
fontWeight: FontWeight.bold,
color: MyColors.lightGreyEFColor,
height: 32 / 22,
),
),
3.height,
BuildCountdownTimer(
timeToMarathon: dummyEndTime,
provider: provider,
screenFlag: 0,
),
],
).paddingOnly(
left: AppState().isArabic(context) ? 12 : 0,
right: AppState().isArabic(context) ? 0 : 12,
)
],
).paddingOnly(right: 20),
), ),
3.height, ),
BuildCountdownTimer( ],
timeToMarathon: dummyEndTime, ),
provider: provider,
screenFlag: 0,
),
],
).paddingOnly(
left: AppState().isArabic(context) ? 12 : 0,
right: AppState().isArabic(context) ? 0 : 12,
)
],
), ),
], ],
).onPress( ).onPress(

@ -8,6 +8,13 @@ import 'package:mohem_flutter_app/models/marathon_question_model.dart';
import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
List<bool> isSelectedOptions = [
false,
false,
false,
false,
];
class QuestionCard extends StatefulWidget { class QuestionCard extends StatefulWidget {
final MarathonProvider provider; final MarathonProvider provider;
@ -18,7 +25,7 @@ class QuestionCard extends StatefulWidget {
} }
class _QuestionCardState extends State<QuestionCard> { class _QuestionCardState extends State<QuestionCard> {
final List<QuestionContent> questionCards = <QuestionContent>[]; final List<CardContent> questionCards = <CardContent>[];
@override @override
void initState() { void initState() {
@ -29,7 +36,7 @@ class _QuestionCardState extends State<QuestionCard> {
void _loadCards() { void _loadCards() {
for (DummyQuestionModel question in questions) { for (DummyQuestionModel question in questions) {
questionCards.add( questionCards.add(
QuestionContent( CardContent(
question: question, question: question,
provider: widget.provider, provider: widget.provider,
), ),
@ -64,11 +71,11 @@ class _QuestionCardState extends State<QuestionCard> {
} }
} }
class QuestionContent extends StatelessWidget { class CardContent extends StatelessWidget {
final DummyQuestionModel question; final DummyQuestionModel question;
final MarathonProvider provider; final MarathonProvider provider;
const QuestionContent({ const CardContent({
Key? key, Key? key,
required this.question, required this.question,
required this.provider, required this.provider,
@ -131,12 +138,38 @@ class QuestionContent extends StatelessWidget {
} }
} }
class AnswerContent extends StatelessWidget { class AnswerContent extends StatefulWidget {
final DummyQuestionModel question; final DummyQuestionModel question;
final MarathonProvider provider; final MarathonProvider provider;
const AnswerContent({Key? key, required this.question, required this.provider}) : super(key: key); const AnswerContent({Key? key, required this.question, required this.provider}) : super(key: key);
@override
State<AnswerContent> createState() => _AnswerContentState();
}
class _AnswerContentState extends State<AnswerContent> {
void updateOption(int index, bool value) {
isSelectedOptions[0] = false;
isSelectedOptions[1] = false;
isSelectedOptions[2] = false;
isSelectedOptions[3] = false;
isSelectedOptions[index] = value;
setState(() {});
}
Decoration getContainerColor(int index) {
if (!isSelectedOptions[index]) {
return MyDecorations.getContainersDecoration(MyColors.greyF7Color);
}
if (isSelectedOptions[index] && context.watch<MarathonProvider>().start > 0) {
return MyDecorations.getContainersDecoration(MyColors.yellowColorII);
}
return MyDecorations.getContainersDecoration(
isSelectedOptions[index] ? MyColors.greenColor : MyColors.greyF7Color,
);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
@ -155,29 +188,27 @@ class AnswerContent extends StatelessWidget {
children: <Widget>[ children: <Widget>[
InkWell( InkWell(
onTap: () { onTap: () {
if (provider.currentQuestionNumber == 9) { if (widget.provider.currentQuestionNumber == 9) {
provider.cancelTimer(); widget.provider.cancelTimer();
provider.resetValues(); widget.provider.resetValues();
Navigator.pushReplacementNamed( Navigator.pushReplacementNamed(
context, context,
AppRoutes.marathonWinnerSelection, AppRoutes.marathonWinnerSelection,
); );
return; return;
} }
provider.cancelTimer(); updateOption(0, true);
provider.startTimer(context);
provider.swipeCardLeft();
}, },
child: Container( child: Container(
height: 60, height: 60,
width: MediaQuery.of(context).size.width - 75, width: MediaQuery.of(context).size.width - 75,
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
decoration: MyDecorations.answerContainerDecoration, decoration: getContainerColor(0),
child: Center( child: Center(
child: Text( child: Text(
question.opt1!, widget.question.opt1!,
style: const TextStyle( style: TextStyle(
color: MyColors.darkTextColor, color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 16, fontSize: 16,
), ),
@ -188,29 +219,27 @@ class AnswerContent extends StatelessWidget {
const SizedBox(height: 15), const SizedBox(height: 15),
InkWell( InkWell(
onTap: () { onTap: () {
if (provider.currentQuestionNumber == 9) { if (widget.provider.currentQuestionNumber == 9) {
provider.cancelTimer(); widget.provider.cancelTimer();
provider.resetValues(); widget.provider.resetValues();
Navigator.pushReplacementNamed( Navigator.pushReplacementNamed(
context, context,
AppRoutes.marathonWinnerSelection, AppRoutes.marathonWinnerSelection,
); );
return; return;
} }
provider.cancelTimer(); updateOption(1, true);
provider.startTimer(context);
provider.swipeCardLeft();
}, },
child: Container( child: Container(
height: 60, height: 60,
width: MediaQuery.of(context).size.width - 75, width: MediaQuery.of(context).size.width - 75,
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
decoration: MyDecorations.answerContainerDecoration, decoration: getContainerColor(1),
child: Center( child: Center(
child: Text( child: Text(
question.opt2!, widget.question.opt2!,
style: const TextStyle( style: TextStyle(
color: MyColors.darkTextColor, color: isSelectedOptions[1] ? MyColors.white : MyColors.darkTextColor,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 16, fontSize: 16,
), ),
@ -221,29 +250,27 @@ class AnswerContent extends StatelessWidget {
const SizedBox(height: 15), const SizedBox(height: 15),
InkWell( InkWell(
onTap: () { onTap: () {
if (provider.currentQuestionNumber == 9) { if (widget.provider.currentQuestionNumber == 9) {
provider.cancelTimer(); widget.provider.cancelTimer();
provider.resetValues(); widget.provider.resetValues();
Navigator.pushReplacementNamed( Navigator.pushReplacementNamed(
context, context,
AppRoutes.marathonWinnerSelection, AppRoutes.marathonWinnerSelection,
); );
return; return;
} }
provider.cancelTimer(); updateOption(2, true);
provider.startTimer(context);
provider.swipeCardLeft();
}, },
child: Container( child: Container(
height: 60, height: 60,
width: MediaQuery.of(context).size.width - 75, width: MediaQuery.of(context).size.width - 75,
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
decoration: MyDecorations.answerContainerDecoration, decoration: getContainerColor(2),
child: Center( child: Center(
child: Text( child: Text(
question.opt3!, widget.question.opt3!,
style: const TextStyle( style: TextStyle(
color: MyColors.darkTextColor, color: isSelectedOptions[2] ? MyColors.white : MyColors.darkTextColor,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 16, fontSize: 16,
), ),
@ -254,29 +281,27 @@ class AnswerContent extends StatelessWidget {
const SizedBox(height: 15), const SizedBox(height: 15),
InkWell( InkWell(
onTap: () { onTap: () {
if (provider.currentQuestionNumber == 9) { if (widget.provider.currentQuestionNumber == 9) {
provider.cancelTimer(); widget.provider.cancelTimer();
provider.resetValues(); widget.provider.resetValues();
Navigator.pushReplacementNamed( Navigator.pushReplacementNamed(
context, context,
AppRoutes.marathonWinnerSelection, AppRoutes.marathonWinnerSelection,
); );
return; return;
} }
provider.cancelTimer(); updateOption(3, true);
provider.startTimer(context);
provider.swipeCardLeft();
}, },
child: Container( child: Container(
height: 60, height: 60,
width: MediaQuery.of(context).size.width - 75, width: MediaQuery.of(context).size.width - 75,
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
decoration: MyDecorations.answerContainerDecoration, decoration: getContainerColor(3),
child: Center( child: Center(
child: Text( child: Text(
question.opt3!, widget.question.opt3!,
style: const TextStyle( style: TextStyle(
color: MyColors.darkTextColor, color: isSelectedOptions[3] ? MyColors.white : MyColors.darkTextColor,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 16, fontSize: 16,
), ),

@ -1,5 +1,6 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:lottie/lottie.dart'; import 'package:lottie/lottie.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart';
@ -8,7 +9,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_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/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
class WinnerScreen extends StatelessWidget { class WinnerScreen extends StatelessWidget {
const WinnerScreen({Key? key}) : super(key: key); const WinnerScreen({Key? key}) : super(key: key);
@ -17,10 +18,10 @@ class WinnerScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
const MarathonHeader(),
60.height, 60.height,
Container( Container(
width: double.infinity, width: double.infinity,
@ -43,27 +44,43 @@ class WinnerScreen extends StatelessWidget {
], ],
), ),
), ),
50.height, 26.height,
SizedBox(
height: 50,
child: Stack(
children: [
Align(
alignment: Alignment.center,
child: SvgPicture.asset(
"assets/images/winner_ribbon.svg",
height: 50,
),
),
Align(
alignment: Alignment.center,
child: "WINNER".toText32(color: MyColors.white, isBold: true).paddingOnly(top: 07),
)
],
),
),
12.height,
"Muhammad Shrouff".toText22(color: MyColors.grey3AColor), "Muhammad Shrouff".toText22(color: MyColors.grey3AColor),
"837436".toText22(color: MyColors.grey57Color), "837436".toText22(color: MyColors.grey57Color),
90.height, 80.height,
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
LocaleKeys.sponsoredBy LocaleKeys.sponsoredBy.tr().toText14(color: MyColors.grey77Color),
.tr() " Extra".toText14(color: MyColors.darkTextColor, isBold: true),
.toText14(color: MyColors.grey77Color),
" Extra".toText14(
color: MyColors.darkTextColor, isBold: true),
], ],
), ),
5.height, 5.height,
Image.network( Image.asset(
"https://cdn.pixabay.com/photo/2014/08/27/07/53/blog-428950_1280.jpg", "assets/images/logos/main_mohemm_logo.png",
height: 50, height: 40,
fit: BoxFit.fill, fit: BoxFit.fill,
width: 120, width: 150,
), )
], ],
), ),
).paddingOnly(left: 21, right: 21), ).paddingOnly(left: 21, right: 21),

Loading…
Cancel
Save