Skip to content

Latest commit

 

History

History
92 lines (72 loc) · 3.9 KB

README.md

File metadata and controls

92 lines (72 loc) · 3.9 KB

This package is useful when you are trying to construct a test or quiz and check the user's understanding of a text. I'm currently developping a learning app and it's one of the package I already developped (There are 9 of them)

Features

Select an answer
Either you find the right one, if you don't, you are given the answer and the translation of it

exercice view seleted options view When the user has the right answer When the user has the right answer

Usage

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

import 'package:readandrespond/readandrespond.dart';


class MyQuizComponent extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final questions = [
      {
       "id": 0,
       "question": "Wanneer gaat juan zijn laptop kopen?",
       "options": ["Dinsdag, na het werk", "Woensdag, tijdens zijn lunchpauze", "Op vrijdag, als hij zijn salaris heeft ontvangen"],
       "answer": "Op vrijdag, als hij zijn salaris heeft ontvangen",
       "answerTranslation": "Vendredi, s'il a reçu son salaire",
       "text": "Deze week had Juan een ongeluk met zijn fiets. Het was niets ernstigs, maar toen hij viel, brak zijn laptop. Hij ziet er tegenop om dinsdag na zijn werk een nieuwe te kopen. Na overleg met Javonte besluit hij hem vrijdag te kopen, als hij zijn loon krijgt.",
       "type": "readandrespond",
       "title": "Read and respond",
       "result": -1
      },
    ]

    final questionIndex = useState(0);

    bool isNotLastQuestion(){
      return questionIndex.value < questions.length - 1;
    }

    void nextQuestion(){
      isNotLastQuestion()
        ? questionIndex.value++
        : GoRouter.of(context).go('/results');
    }

    useEffect(() {}, [questions]);

    return OverrideBackButtonWrapperWidget(
      child: Scaffold(
        resizeToAvoidBottomInset: false,
        body: ReadAndRespond(
          id: questions[questionIndex.value]["id"],
          title: questions[questionIndex.value]["title"],
          titleButton: 'VALIDATE',
          text: questions[questionIndex.value]["text"],
          titleButtonSheet: isNotLastQuestion() ? 'NEXT' : 'SEE RESULT',
          questionText: questions[questionIndex.value]["question"],
          options: questions[questionIndex.value]["options"],
          answer: questions[questionIndex.value]["answer"],
          setQuestionResult: () => {}, // get the result of the question
          action: () => nextQuestion(), // What you want to happen when you click on the bottom sheet button
        )
      ),
    );
  }
}

Additional information

  • Unit tests
  • Integration tests