This commit is contained in:
2024-02-06 10:58:24 +01:00
parent 3259a7dd97
commit 9741b5530d
10 changed files with 69 additions and 10 deletions
+11 -3
View File
@@ -4,7 +4,12 @@ import 'package:adv_basics/data/questions.dart';
import 'package:google_fonts/google_fonts.dart';
class QuestionsScreen extends StatefulWidget {
const QuestionsScreen(void Function() switchScreen, {super.key});
const QuestionsScreen({
super.key,
required this.onSelectAnswer,
});
final void Function(String answer) onSelectAnswer;
@override
State<QuestionsScreen> createState() {
@@ -15,7 +20,8 @@ class QuestionsScreen extends StatefulWidget {
class _QuestionsScreenState extends State<QuestionsScreen> {
var currentQuestionIndex = 0;
void answerQuestion() {
void answerQuestion(String selectedAnswer) {
widget.onSelectAnswer(selectedAnswer);
setState(() {
currentQuestionIndex++;
});
@@ -46,7 +52,9 @@ class _QuestionsScreenState extends State<QuestionsScreen> {
...currentQuestion.getShuffeldAnswers().map((answer) {
return AnswerButton(
answerText: answer,
onTap: answerQuestion,
onTap: () {
answerQuestion(answer);
},
);
})
],
+20 -1
View File
@@ -1,5 +1,7 @@
import 'package:adv_basics/questions_screen.dart';
import 'package:adv_basics/start_screen.dart';
import 'package:adv_basics/data/questions.dart';
import 'package:adv_basics/results_screen.dart';
import 'package:flutter/material.dart';
class Quiz extends StatefulWidget {
@@ -12,6 +14,7 @@ class Quiz extends StatefulWidget {
}
class _QuizState extends State<Quiz> {
List<String> selectedAnswers = [];
var activeScreen = 'start-screen';
void switchScreen() {
@@ -20,14 +23,30 @@ class _QuizState extends State<Quiz> {
});
}
void chooseAnswer(String answer) {
selectedAnswers.add(answer);
if (selectedAnswers.length == questions.length) {
setState(() {
selectedAnswers = [];
activeScreen = 'results-screen';
});
}
}
@override
Widget build(context) {
Widget screenWidget = StartScreen(switchScreen);
if (activeScreen == 'questions-screen') {
screenWidget = QuestionsScreen(switchScreen);
screenWidget = QuestionsScreen(
onSelectAnswer: chooseAnswer,
);
}
if (activeScreen == 'results-screen') {
screenWidget = const ResultsScreen();
}
return MaterialApp(
home: Scaffold(
body: Container(
+32
View File
@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
class ResultsScreen extends StatelessWidget {
const ResultsScreen({super.key});
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
child: Container(
margin: const EdgeInsets.all(40),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('You answered X out of Y questions correctly!'),
const SizedBox(
height: 30,
),
const Text('List of answers and questions...'),
const SizedBox(
height: 30,
),
TextButton(
onPressed: () {},
child: const Text('Restart Quiz!'),
),
],
),
),
);
}
}