Fetched Questoins and Added Answer Interactivity

merge-requests/77/head
Faiz Hashmi 3 years ago
parent 904e4df424
commit 59ad00ca2a

@ -129,11 +129,13 @@ class MarathonApiClient {
logger.i("Error in AddParticipant: $e"); logger.i("Error in AddParticipant: $e");
}); });
context.read<MarathonProvider>().addItemToList(ApiConsts.dummyQuestion);
await hubConnection.invoke( await hubConnection.invoke(
"SendQuestionToParticipant", "SendQuestionToParticipant",
args: <Object>[ args: <Object>[
<String, dynamic>{ <String, dynamic>{
"marathonId": "9c47d281-c5b5-4b5d-a90a-08dacb8cbdb6", "marathonId": "${AppState().getMarathonProjectId}",
} }
], ],
).catchError((e) { ).catchError((e) {
@ -163,7 +165,7 @@ class MarathonApiClient {
Map<dynamic, dynamic> data = arguments.first! as Map<dynamic, dynamic>; Map<dynamic, dynamic> data = arguments.first! as Map<dynamic, dynamic>;
var json = data["data"]; var json = data["data"];
QuestionModel newQuestion = QuestionModel.fromJson(json); QuestionModel newQuestion = QuestionModel.fromJson(json);
context.read<MarathonProvider>().addNewQuestionsToTheList(newQuestion, 0); context.read<MarathonProvider>().addNewQuestionsToTheList(newQuestion);
} }
} }

@ -1,4 +1,3 @@
import 'package:mohem_flutter_app/models/marathon/question_model.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart';
class ApiConsts { class ApiConsts {
@ -34,40 +33,8 @@ class ApiConsts {
static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast";
//DummyCards for the UI //DummyCards for the UI
static List<QuestionOptions> questionOptions = <QuestionOptions>[
QuestionOptions(
id: "id",
image: "image",
isCorrectOption: true,
questionId: "questionId",
sequence: 0,
titleAr: "titleAr",
titleEn: "titleEn",
),
];
static QuestionModel dummyQuestion = QuestionModel( static CardContent dummyQuestion = const CardContent();
id: "id",
titleEn: "titleEn",
titleAr: "titleAr",
marathonId: "marathonId",
questionTypeId: 0,
questionTime: 0,
nextQuestGap: 5,
gapType: 0,
gapText: "gapText",
gapImage: "gapImage",
questOptionsLimit: 4,
questionOptions: questionOptions,
);
static List<CardContent> dummyQuestions = <CardContent>[
CardContent(question: dummyQuestion),
CardContent(question: dummyQuestion),
CardContent(question: dummyQuestion),
CardContent(question: dummyQuestion),
CardContent(question: dummyQuestion),
];
} }
class SharedPrefsConsts { class SharedPrefsConsts {

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/models/marathon/question_model.dart';
class MyDecorations { class MyDecorations {
static Decoration shadowDecoration = BoxDecoration( static Decoration shadowDecoration = BoxDecoration(
@ -22,4 +23,18 @@ class MyDecorations {
); );
return answerContainerDecoration; return answerContainerDecoration;
} }
static Decoration getAnswersContainerColor(QuestionsOptionStatus questionsOptionStatus) {
switch (questionsOptionStatus) {
case QuestionsOptionStatus.correct:
return getContainersDecoration(MyColors.greenColor);
case QuestionsOptionStatus.wrong:
return getContainersDecoration(MyColors.redColor);
case QuestionsOptionStatus.selected:
return getContainersDecoration(MyColors.yellowColorII);
case QuestionsOptionStatus.unSelected:
return getContainersDecoration(MyColors.greyF7Color);
}
}
} }

@ -1,3 +1,5 @@
enum QuestionsOptionStatus { correct, wrong, selected, unSelected }
class QuestionModel { class QuestionModel {
String? id; String? id;
String? titleEn; String? titleEn;
@ -75,6 +77,7 @@ class QuestionOptions {
int? sequence; int? sequence;
String? image; String? image;
bool? isCorrectOption; bool? isCorrectOption;
QuestionsOptionStatus? optionStatus;
QuestionOptions({ QuestionOptions({
String? id, String? id,
@ -84,6 +87,7 @@ class QuestionOptions {
int? sequence, int? sequence,
String? image, String? image,
bool? isCorrectOption, bool? isCorrectOption,
QuestionsOptionStatus? optionStatus,
}); });
QuestionOptions.fromJson(Map<String, dynamic> json) { QuestionOptions.fromJson(Map<String, dynamic> json) {
@ -94,6 +98,9 @@ class QuestionOptions {
sequence = json['sequence']; sequence = json['sequence'];
image = json['image']; image = json['image'];
isCorrectOption = json['isCorrectOption']; isCorrectOption = json['isCorrectOption'];
optionStatus = QuestionsOptionStatus.unSelected;
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {

@ -13,7 +13,6 @@ 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/main.dart';
import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart';
@ -301,7 +300,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
), ),
], ],
).paddingOnly(left: 21, right: 21, top : 7), ).paddingOnly(left: 21, right: 21, top: 7),
context.watch<MarathonProvider>().isLoading ? MarathonBannerShimmer().paddingAll(20) : MarathonBanner().paddingAll(20), context.watch<MarathonProvider>().isLoading ? MarathonBannerShimmer().paddingAll(20) : MarathonBanner().paddingAll(20),
ServicesWidget(), ServicesWidget(),
// 8.height, // 8.height,
@ -348,7 +347,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
], ],
).paddingOnly(left: 21, right: 21), ).paddingOnly(left: 21, right: 21),
Consumer<DashboardProviderModel>( Consumer<DashboardProviderModel>(
builder: (context, model, child) { builder: (BuildContext context, DashboardProviderModel model, Widget? child) {
return SizedBox( return SizedBox(
height: 103 + 33, height: 103 + 33,
child: ListView.separated( child: ListView.separated(

@ -220,7 +220,7 @@ class MarathonFooter extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return provider.itsMarathonTime return !provider.itsMarathonTime
? DefaultButton( ? DefaultButton(
LocaleKeys.joinMarathon.tr(), LocaleKeys.joinMarathon.tr(),
() async { () async {
@ -229,7 +229,7 @@ class MarathonFooter extends StatelessWidget {
provider.resetValues(); provider.resetValues();
await provider.connectSignalrAndJoinMarathon(context); await provider.connectSignalrAndJoinMarathon(context);
} catch (e, s) { } catch (e, s) {
Utils.hideLoading(context); Utils.confirmDialog(context, e.toString());
print(s); print(s);
} }
Utils.hideLoading(context); Utils.hideLoading(context);

@ -4,7 +4,6 @@ import 'package:appinio_swiper/appinio_swiper.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart';
import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart';
@ -13,27 +12,35 @@ class MarathonProvider extends ChangeNotifier {
final AppinioSwiperController swiperController = AppinioSwiperController(); final AppinioSwiperController swiperController = AppinioSwiperController();
MarathonDetailModel marathonDetailModel = MarathonDetailModel(); MarathonDetailModel marathonDetailModel = MarathonDetailModel();
List<CardContent> cardContentList = <CardContent>[ List<CardContent> cardContentList = <CardContent>[];
CardContent(question: ApiConsts.dummyQuestion), QuestionModel currentQuestion = QuestionModel();
CardContent(question: ApiConsts.dummyQuestion),
CardContent(question: ApiConsts.dummyQuestion),
CardContent(question: ApiConsts.dummyQuestion),
CardContent(question: ApiConsts.dummyQuestion),
];
int? selectedOptionIndex;
int currentGapTime = 0; int currentGapTime = 0;
void addNewQuestionsToTheList(QuestionModel newQuestion, int index) { void addNewQuestionsToTheList(QuestionModel newQuestion) {
if (currentQuestionNumber > 0) {
//TODO: THIS SHOULD NOT SWIPE THE CARD ON THE FIRST TRIGGER
swipeCardLeft(); swipeCardLeft();
cardContentList.add(CardContent(question: newQuestion)); }
currentQuestionNumber++;
currentQuestion = newQuestion;
cardContentList.add(const CardContent());
currentGapTime = newQuestion.nextQuestGap!; currentGapTime = newQuestion.nextQuestGap!;
notifyListeners(); notifyListeners();
} }
void removeQuestionFromTheList(int index) { void addItemToList(CardContent value) {
cardContentList.removeAt(index); cardContentList.add(value);
notifyListeners();
}
void updateCurrentQuestionOptionStatus(QuestionsOptionStatus status, int index) {
for (int i = 0; i < currentQuestion.questionOptions!.length; i++) {
currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected;
}
currentQuestion.questionOptions![index].optionStatus = status;
selectedOptionIndex = index;
notifyListeners(); notifyListeners();
} }
@ -84,10 +91,19 @@ class MarathonProvider extends ChangeNotifier {
void swipeCardLeft() { void swipeCardLeft() {
swiperController.swipeLeft(); swiperController.swipeLeft();
currentQuestionNumber++;
notifyListeners(); notifyListeners();
} }
void getCorrectAnswerAndUpdateUI() {
if (selectedOptionIndex != null) {
if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) {
updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!);
} else {
updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!);
}
}
}
Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {});
void startTimer(BuildContext context) { void startTimer(BuildContext context) {
@ -95,6 +111,9 @@ class MarathonProvider extends ChangeNotifier {
timerU = Timer.periodic( timerU = Timer.periodic(
oneSec, oneSec,
(Timer timer) async { (Timer timer) async {
if (currentGapTime == 2) {
getCorrectAnswerAndUpdateUI();
}
if (currentGapTime == 0) { if (currentGapTime == 0) {
// if (currentQuestionNumber == 9) { // if (currentQuestionNumber == 9) {
// timer.cancel(); // timer.cancel();
@ -122,6 +141,8 @@ class MarathonProvider extends ChangeNotifier {
cardContentList.clear(); cardContentList.clear();
timerU.cancel(); timerU.cancel();
_isMarathonCompleted = false; _isMarathonCompleted = false;
currentGapTime = 0;
currentQuestion = QuestionModel();
notifyListeners(); notifyListeners();
} }

@ -117,7 +117,7 @@ class _MarathonProgressContainerState extends State<MarathonProgressContainer> {
borderRadius: BorderRadius.circular(5), borderRadius: BorderRadius.circular(5),
), ),
padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8),
child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel!.totalQuestions.toString()} ${LocaleKeys.question.tr()}"
.toText12(color: MyColors.white), .toText12(color: MyColors.white),
), ),
"${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), "${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(),
@ -149,7 +149,7 @@ class _MarathonProgressContainerState extends State<MarathonProgressContainer> {
12.height, 12.height,
Row( Row(
children: <Widget>[ children: <Widget>[
"${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel!.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(isBold: true),
], ],
), ),
], ],

@ -21,7 +21,8 @@ class MarathonBanner extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
MarathonProvider provider = context.read<MarathonProvider>(); MarathonProvider provider = context.read<MarathonProvider>();
return Container( return provider.marathonDetailModel.startTime != null
? Container(
decoration: MyDecorations.shadowDecoration, decoration: MyDecorations.shadowDecoration,
height: MediaQuery.of(context).size.height * 0.11, height: MediaQuery.of(context).size.height * 0.11,
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
@ -115,7 +116,29 @@ class MarathonBanner extends StatelessWidget {
], ],
), ),
), ),
Align( AppState().isArabic(context)
? Align(
alignment: Alignment.topRight,
child: SizedBox(
height: 20,
width: 35,
child: Transform.rotate(
angle: math.pi / 4.5,
child: Text(
LocaleKeys.brainMarathon.tr(),
textAlign: TextAlign.center,
maxLines: 2,
style: const TextStyle(
color: MyColors.black,
fontWeight: FontWeight.bold,
fontSize: 6,
height: 1.2,
),
),
),
),
).paddingOnly(top: 5)
: Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: SizedBox( child: SizedBox(
height: 20, height: 20,
@ -157,6 +180,7 @@ class MarathonBanner extends StatelessWidget {
).onPress( ).onPress(
() => Navigator.pushNamed(context, AppRoutes.marathonIntroScreen), () => Navigator.pushNamed(context, AppRoutes.marathonIntroScreen),
), ),
); )
: const SizedBox();
} }
} }

@ -1,9 +1,11 @@
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:flutter/material.dart';
import 'package:lottie/lottie.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.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';
import 'package:mohem_flutter_app/classes/lottie_consts.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/models/marathon/question_model.dart'; 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';
@ -24,20 +26,20 @@ class QuestionCard extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return CupertinoPageScaffold( return CupertinoPageScaffold(
child: SizedBox( child: provider.cardContentList.isEmpty
? Lottie.asset(MyLottieConsts.hourGlassLottie, height: 250).paddingOnly(top: 50)
: SizedBox(
height: 440, height: 440,
width: double.infinity, width: double.infinity,
child: Consumer<MarathonProvider>( child: Consumer<MarathonProvider>(
builder: (BuildContext context, MarathonProvider provider, _) { builder: (BuildContext context, MarathonProvider provider, _) {
return AppinioSwiper( return AppinioSwiper(
duration: const Duration(milliseconds: 400),
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
isDisabled: true, isDisabled: true,
controller: provider.swiperController, controller: provider.swiperController,
unswipe: (int index, AppinioSwiperDirection direction) {}, unswipe: (int index, AppinioSwiperDirection direction) {},
onSwipe: (int index, AppinioSwiperDirection direction) { onSwipe: (int index, AppinioSwiperDirection direction) {},
print("here is the length: ${provider.cardContentList.length} and index : $index");
},
cards: provider.cardContentList, cards: provider.cardContentList,
); );
}, },
@ -48,12 +50,11 @@ class QuestionCard extends StatelessWidget {
} }
class CardContent extends StatelessWidget { class CardContent extends StatelessWidget {
final QuestionModel question; const CardContent({Key? key}) : super(key: key);
const CardContent({Key? key, required this.question}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
MarathonProvider provider = context.watch<MarathonProvider>();
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
@ -92,7 +93,7 @@ class CardContent extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 13), padding: const EdgeInsets.symmetric(horizontal: 13),
child: Text( child: Text(
AppState().isArabic(context) ? question.titleAr ?? "" : question.titleEn ?? "", AppState().isArabic(context) ? provider.currentQuestion.titleAr ?? "" : provider.currentQuestion.titleEn ?? "",
style: const TextStyle( style: const TextStyle(
color: MyColors.white, color: MyColors.white,
fontSize: 16, fontSize: 16,
@ -102,48 +103,21 @@ class CardContent extends StatelessWidget {
), ),
), ),
), ),
AnswerContent(question: question), const AnswerContent(),
], ],
), ),
); );
} }
} }
class AnswerContent extends StatefulWidget { class AnswerContent extends StatelessWidget {
final QuestionModel question; const AnswerContent({Key? key}) : super(key: key);
const AnswerContent({Key? key, required this.question}) : super(key: key); void onAnswerTapped(BuildContext context, QuestionOptions questionOption) {}
@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>()
// .currentGapTime > 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) {
MarathonProvider provider = context.watch<MarathonProvider>();
return Container( return Container(
padding: const EdgeInsets.all(13), padding: const EdgeInsets.all(13),
decoration: const BoxDecoration( decoration: const BoxDecoration(
@ -153,23 +127,35 @@ class _AnswerContentState extends State<AnswerContent> {
bottomRight: Radius.circular(10), bottomRight: Radius.circular(10),
), ),
), ),
child: widget.question.questionOptions != null child: provider.currentQuestion.questionOptions != null
? Column( ? ListView.builder(
mainAxisSize: MainAxisSize.min, itemCount: provider.currentQuestion.questionOptions!.length,
mainAxisAlignment: MainAxisAlignment.center, shrinkWrap: true,
crossAxisAlignment: CrossAxisAlignment.center, itemBuilder: (BuildContext context, int index) {
children: widget.question.questionOptions!.map((QuestionOptions e) => AnswerTileForText(questionOption: e, onAnswerTapped: () {})).toList(), return AnswerTileForText(
index: index,
onAnswerTapped: () {
provider.updateCurrentQuestionOptionStatus(QuestionsOptionStatus.selected, index);
},
);
},
) )
// Column(
// mainAxisSize: MainAxisSize.min,
// mainAxisAlignment: MainAxisAlignment.center,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: question.questionOptions!.map((QuestionOptions e) => AnswerTileForText(questionOption: e, onAnswerTapped: () {})).toList(),
// )
: const SizedBox(), : const SizedBox(),
); );
} }
} }
class AnswerTileForText extends StatelessWidget { class AnswerTileForText extends StatelessWidget {
final QuestionOptions questionOption; final int index;
final Function() onAnswerTapped; final Function() onAnswerTapped;
const AnswerTileForText({Key? key, required this.questionOption, required this.onAnswerTapped}) : super(key: key); const AnswerTileForText({Key? key, required this.index, required this.onAnswerTapped}) : super(key: key);
// Decoration getContainerColor(int index) { // Decoration getContainerColor(int index) {
// if (!isSelectedOptions[index]) { // if (!isSelectedOptions[index]) {
@ -185,18 +171,19 @@ class AnswerTileForText extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
MarathonProvider provider = context.watch<MarathonProvider>();
return InkWell( return InkWell(
onTap: () { onTap: () {
onAnswerTapped(); onAnswerTapped();
}, },
child: Container( child: Container(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
decoration: MyDecorations.getContainersDecoration(MyColors.greyF7Color), decoration: MyDecorations.getAnswersContainerColor(provider.currentQuestion.questionOptions![index].optionStatus!),
child: Center( child: Center(
child: Text( child: Text(
questionOption.titleEn!, AppState().isArabic(context) ? provider.currentQuestion.questionOptions![index].titleAr! : provider.currentQuestion.questionOptions![index].titleEn!,
style: TextStyle( style: TextStyle(
color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor, color: provider.currentQuestion.questionOptions![index].optionStatus == QuestionsOptionStatus.unSelected ? MyColors.darkTextColor : MyColors.white,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 16, fontSize: 16,
), ),

Loading…
Cancel
Save