import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/models/marathon_question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:provider/provider.dart'; class QuestionCard extends StatefulWidget { final MarathonProvider provider; const QuestionCard({Key? key, required this.provider}) : super(key: key); @override State createState() => _QuestionCardState(); } class _QuestionCardState extends State { final List questionCards = []; @override void initState() { _loadCards(); super.initState(); } void _loadCards() { for (DummyQuestionModel question in questions) { questionCards.add( QuestionContent( question: question, provider: widget.provider, ), ); } } @override Widget build(BuildContext context) { return CupertinoPageScaffold( child: SizedBox( height: 420, width: double.infinity, child: Consumer( builder: (BuildContext context, MarathonProvider provider, _) { return AppinioSwiper( padding: EdgeInsets.zero, isDisabled: true, controller: provider.swiperController, unswipe: (int index, AppinioSwiperDirection direction) {}, cards: questionCards, onSwipe: (int index, AppinioSwiperDirection direction) { if (direction == AppinioSwiperDirection.left) { provider.startTimer(context); } }, ); }, ), ), ); } } class QuestionContent extends StatelessWidget { final DummyQuestionModel question; final MarathonProvider provider; const QuestionContent({ Key? key, required this.question, required this.provider, }) : super(key: key); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: CupertinoColors.white, boxShadow: [ BoxShadow( color: CupertinoColors.systemGrey.withOpacity(0.2), spreadRadius: 3, blurRadius: 7, offset: const Offset(0, 3), ) ], ), alignment: Alignment.center, child: Column( children: [ Container( height: 78, width: double.infinity, decoration: const BoxDecoration( gradient: LinearGradient( transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ MyColors.gradiantEndColor, MyColors.gradiantStartColor, ], ), borderRadius: BorderRadius.only( topLeft: Radius.circular(10), topRight: Radius.circular(10), ), ), child: const Center( child: Padding( padding: EdgeInsets.symmetric(horizontal: 13), child: Text( "What is the capital of Saudi Arabia?", style: TextStyle( color: MyColors.white, fontSize: 16, fontWeight: FontWeight.w600, ), ), ), ), ), AnswerContent(question: question, provider: provider), ], ), ); } } class AnswerContent extends StatelessWidget { final DummyQuestionModel question; final MarathonProvider provider; const AnswerContent({Key? key, required this.question, required this.provider}) : super(key: key); @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.all(13), decoration: const BoxDecoration( color: MyColors.kWhiteColor, borderRadius: BorderRadius.only( bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10), ), ), child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ InkWell( onTap: () { if (provider.currentQuestionNumber == 9) { provider.cancelTimer(); provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } provider.cancelTimer(); provider.startTimer(context); provider.swipeCardLeft(); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: MyDecorations.answerContainerDecoration, child: Center( child: Text( question.opt1!, style: const TextStyle( color: MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), ), ), ), ), const SizedBox(height: 15), InkWell( onTap: () { if (provider.currentQuestionNumber == 9) { provider.cancelTimer(); provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } provider.cancelTimer(); provider.startTimer(context); provider.swipeCardLeft(); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: MyDecorations.answerContainerDecoration, child: Center( child: Text( question.opt2!, style: const TextStyle( color: MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), ), ), ), ), const SizedBox(height: 15), InkWell( onTap: () { if (provider.currentQuestionNumber == 9) { provider.cancelTimer(); provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } provider.cancelTimer(); provider.startTimer(context); provider.swipeCardLeft(); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: MyDecorations.answerContainerDecoration, child: Center( child: Text( question.opt3!, style: const TextStyle( color: MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), ), ), ), ), const SizedBox(height: 15), InkWell( onTap: () { if (provider.currentQuestionNumber == 9) { provider.cancelTimer(); provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } provider.cancelTimer(); provider.startTimer(context); provider.swipeCardLeft(); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: MyDecorations.answerContainerDecoration, child: Center( child: Text( question.opt3!, style: const TextStyle( color: MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), ), ), ), ), ], ), ); } }