MVP Apresantação Final
This commit is contained in:
@@ -27,11 +27,34 @@ Widget _zoomCrop(
|
||||
);
|
||||
}
|
||||
|
||||
/// Transição entre perguntas do quiz — fade + leve deslize para cima, no
|
||||
/// mesmo estilo do [FadeSlideIn] já usado dentro de cada ecrã, em vez do
|
||||
/// slide-from-right abrupto padrão do Material ao navegar entre perguntas.
|
||||
Route<void> quizPageRoute({required WidgetBuilder builder}) {
|
||||
return PageRouteBuilder<void>(
|
||||
transitionDuration: const Duration(milliseconds: 320),
|
||||
reverseTransitionDuration: const Duration(milliseconds: 220),
|
||||
pageBuilder: (context, animation, secondaryAnimation) =>
|
||||
builder(context),
|
||||
transitionsBuilder: (context, animation, secondaryAnimation, child) {
|
||||
final fade = CurvedAnimation(parent: animation, curve: Curves.easeOut);
|
||||
final slide = Tween<Offset>(
|
||||
begin: const Offset(0, 0.04),
|
||||
end: Offset.zero,
|
||||
).animate(CurvedAnimation(parent: animation, curve: Curves.easeOutCubic));
|
||||
return FadeTransition(
|
||||
opacity: fade,
|
||||
child: SlideTransition(position: slide, child: child),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// Rota inicial do quiz: mostra primeiro o ecrã de checklist explicativo,
|
||||
/// só depois a pergunta 1 — usada em todos os pontos de entrada do quiz
|
||||
/// em vez de navegar diretamente para [Quiz1Screen].
|
||||
MaterialPageRoute<void> quizStartRoute({String? scopeId}) {
|
||||
return MaterialPageRoute<void>(
|
||||
Route<void> quizStartRoute({String? scopeId}) {
|
||||
return quizPageRoute(
|
||||
builder: (_) => QuizChecklistScreen(
|
||||
heading: 'Vamos ajudá-lo/a a compreender:',
|
||||
items: const [
|
||||
@@ -40,7 +63,7 @@ MaterialPageRoute<void> quizStartRoute({String? scopeId}) {
|
||||
'Quando deve procurar um dentista (urgência vs vigilância)',
|
||||
],
|
||||
onAdvance: (context) => Navigator.of(context).pushReplacement(
|
||||
MaterialPageRoute<void>(builder: (_) => Quiz1Screen(scopeId: scopeId)),
|
||||
quizPageRoute(builder: (_) => Quiz1Screen(scopeId: scopeId)),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -60,7 +83,7 @@ class Quiz1Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 1/27',
|
||||
title: 'Quiz 1/28',
|
||||
category: 'Saúde respiratória',
|
||||
categoryIcon: Icons.medical_information_rounded,
|
||||
fallbackIcon: Icons.medical_information_rounded,
|
||||
@@ -88,7 +111,7 @@ class Quiz1Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz2Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -107,7 +130,7 @@ class Quiz2Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 2/27',
|
||||
title: 'Quiz 2/28',
|
||||
category: 'Respiração',
|
||||
categoryIcon: Icons.air_rounded,
|
||||
fallbackIcon: Icons.air_rounded,
|
||||
@@ -135,7 +158,7 @@ class Quiz2Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz3Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -154,7 +177,7 @@ class Quiz3Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 3/27',
|
||||
title: 'Quiz 3/28',
|
||||
category: 'Sono',
|
||||
categoryIcon: Icons.bedtime_rounded,
|
||||
fallbackIcon: Icons.bedtime_rounded,
|
||||
@@ -182,7 +205,7 @@ class Quiz3Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz4Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -201,7 +224,7 @@ class Quiz4Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 4/27',
|
||||
title: 'Quiz 4/28',
|
||||
category: 'Respiração',
|
||||
categoryIcon: Icons.sick_rounded,
|
||||
fallbackIcon: Icons.sick_rounded,
|
||||
@@ -229,7 +252,7 @@ class Quiz4Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz5Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -248,7 +271,7 @@ class Quiz5Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 5/27',
|
||||
title: 'Quiz 5/28',
|
||||
category: 'Sono',
|
||||
categoryIcon: Icons.nights_stay_rounded,
|
||||
fallbackIcon: Icons.nights_stay_rounded,
|
||||
@@ -278,7 +301,7 @@ class Quiz5Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz6Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -297,7 +320,7 @@ class Quiz6Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 6/27',
|
||||
title: 'Quiz 6/28',
|
||||
category: 'Hábitos noturnos',
|
||||
categoryIcon: Icons.nights_stay_rounded,
|
||||
fallbackIcon: Icons.nights_stay_rounded,
|
||||
@@ -318,7 +341,7 @@ class Quiz6Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz7Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -337,7 +360,7 @@ class Quiz7Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 7/27',
|
||||
title: 'Quiz 7/28',
|
||||
category: 'Saúde geral',
|
||||
categoryIcon: Icons.local_florist_rounded,
|
||||
fallbackIcon: Icons.local_florist_rounded,
|
||||
@@ -365,7 +388,7 @@ class Quiz7Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz8Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -384,7 +407,7 @@ class Quiz8Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 8/27',
|
||||
title: 'Quiz 8/28',
|
||||
category: 'Sono',
|
||||
categoryIcon: Icons.water_drop_rounded,
|
||||
fallbackIcon: Icons.water_drop_rounded,
|
||||
@@ -412,7 +435,7 @@ class Quiz8Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz9Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -431,7 +454,7 @@ class Quiz9Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 9/27',
|
||||
title: 'Quiz 9/28',
|
||||
category: 'Saúde geral',
|
||||
categoryIcon: Icons.hearing_rounded,
|
||||
fallbackIcon: Icons.hearing_rounded,
|
||||
@@ -459,7 +482,7 @@ class Quiz9Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz10Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -478,7 +501,7 @@ class Quiz10Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 10/27',
|
||||
title: 'Quiz 10/28',
|
||||
category: 'Saúde geral',
|
||||
categoryIcon: Icons.healing_rounded,
|
||||
fallbackIcon: Icons.healing_rounded,
|
||||
@@ -506,7 +529,7 @@ class Quiz10Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz11Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -525,7 +548,7 @@ class Quiz11Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 11/27',
|
||||
title: 'Quiz 11/28',
|
||||
category: 'Saúde respiratória',
|
||||
categoryIcon: Icons.air_rounded,
|
||||
fallbackIcon: Icons.air_rounded,
|
||||
@@ -554,7 +577,7 @@ class Quiz11Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz12Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -573,7 +596,7 @@ class Quiz12Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 12/27',
|
||||
title: 'Quiz 12/28',
|
||||
category: 'Hábitos alimentares',
|
||||
categoryIcon: Icons.restaurant_rounded,
|
||||
fallbackIcon: Icons.restaurant_rounded,
|
||||
@@ -594,7 +617,7 @@ class Quiz12Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz13Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -613,7 +636,7 @@ class Quiz13Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 13/27',
|
||||
title: 'Quiz 13/28',
|
||||
category: 'Hábitos alimentares',
|
||||
categoryIcon: Icons.schedule_rounded,
|
||||
fallbackIcon: Icons.schedule_rounded,
|
||||
@@ -634,7 +657,7 @@ class Quiz13Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz14Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -653,7 +676,7 @@ class Quiz14Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 14/27',
|
||||
title: 'Quiz 14/28',
|
||||
category: 'Hábitos alimentares',
|
||||
categoryIcon: Icons.restaurant_menu_rounded,
|
||||
fallbackIcon: Icons.restaurant_menu_rounded,
|
||||
@@ -674,7 +697,7 @@ class Quiz14Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz15Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -693,7 +716,7 @@ class Quiz15Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 15/27',
|
||||
title: 'Quiz 15/28',
|
||||
category: 'Hábitos alimentares',
|
||||
categoryIcon: Icons.local_drink_rounded,
|
||||
fallbackIcon: Icons.local_drink_rounded,
|
||||
@@ -721,7 +744,7 @@ class Quiz15Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz16Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -740,7 +763,7 @@ class Quiz16Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 16/27',
|
||||
title: 'Quiz 16/28',
|
||||
category: 'Hábitos orais',
|
||||
categoryIcon: Icons.child_care_rounded,
|
||||
fallbackIcon: Icons.child_care_rounded,
|
||||
@@ -768,7 +791,7 @@ class Quiz16Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz17Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.yesNo,
|
||||
@@ -787,7 +810,7 @@ class Quiz17Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 17/27',
|
||||
title: 'Quiz 17/28',
|
||||
category: 'Hábitos orais',
|
||||
categoryIcon: Icons.back_hand_rounded,
|
||||
fallbackIcon: Icons.back_hand_rounded,
|
||||
@@ -815,11 +838,11 @@ class Quiz17Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => QuizVideoGuideScreen(
|
||||
youtubeId: 'W2BcK9nSyt0',
|
||||
onAdvance: (ctx) => Navigator.of(ctx).pushReplacement(
|
||||
MaterialPageRoute<void>(
|
||||
quizPageRoute(
|
||||
builder: (_) =>
|
||||
Quiz18Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
@@ -842,7 +865,7 @@ class Quiz18Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 18/27',
|
||||
title: 'Quiz 18/28',
|
||||
category: 'Avaliação postural',
|
||||
categoryIcon: Icons.accessibility_new_rounded,
|
||||
fallbackIcon: Icons.accessibility_new_rounded,
|
||||
@@ -869,7 +892,7 @@ class Quiz18Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz19Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -888,7 +911,7 @@ class Quiz19Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 19/27',
|
||||
title: 'Quiz 19/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.face_rounded,
|
||||
fallbackIcon: Icons.face_rounded,
|
||||
@@ -934,7 +957,7 @@ class Quiz19Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz20Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -953,7 +976,7 @@ class Quiz20Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 20/27',
|
||||
title: 'Quiz 20/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.sentiment_neutral_rounded,
|
||||
fallbackIcon: Icons.sentiment_neutral_rounded,
|
||||
@@ -982,11 +1005,11 @@ class Quiz20Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => QuizVideoGuideScreen(
|
||||
youtubeId: 'msKYr7nPxcw',
|
||||
onAdvance: (ctx) => Navigator.of(ctx).pushReplacement(
|
||||
MaterialPageRoute<void>(
|
||||
quizPageRoute(
|
||||
builder: (_) =>
|
||||
Quiz21Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
@@ -1009,7 +1032,7 @@ class Quiz21Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 21/27',
|
||||
title: 'Quiz 21/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.visibility_rounded,
|
||||
fallbackIcon: Icons.visibility_rounded,
|
||||
@@ -1043,7 +1066,7 @@ class Quiz21Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz22Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -1062,7 +1085,7 @@ class Quiz22Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 22/27',
|
||||
title: 'Quiz 22/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.face_rounded,
|
||||
fallbackIcon: Icons.face_rounded,
|
||||
@@ -1094,7 +1117,7 @@ class Quiz22Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz23Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -1113,7 +1136,7 @@ class Quiz23Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 23/27',
|
||||
title: 'Quiz 23/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.sentiment_neutral_rounded,
|
||||
fallbackIcon: Icons.sentiment_neutral_rounded,
|
||||
@@ -1148,7 +1171,7 @@ class Quiz23Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz24Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -1167,7 +1190,7 @@ class Quiz24Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 24/27',
|
||||
title: 'Quiz 24/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.zoom_in_rounded,
|
||||
fallbackIcon: Icons.zoom_in_rounded,
|
||||
@@ -1202,7 +1225,7 @@ class Quiz24Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz25Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -1221,7 +1244,7 @@ class Quiz25Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 25/27',
|
||||
title: 'Quiz 25/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.record_voice_over_rounded,
|
||||
fallbackIcon: Icons.record_voice_over_rounded,
|
||||
@@ -1247,7 +1270,7 @@ class Quiz25Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz26Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -1266,7 +1289,7 @@ class Quiz26Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 26/27',
|
||||
title: 'Quiz 26/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.record_voice_over_rounded,
|
||||
fallbackIcon: Icons.record_voice_over_rounded,
|
||||
@@ -1292,7 +1315,7 @@ class Quiz26Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz27Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
@@ -1301,7 +1324,7 @@ class Quiz26Screen extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
// Quiz 27: Céu da boca (Image-choice, final)
|
||||
// Quiz 27: Boca / dentição (Image-choice)
|
||||
class Quiz27Screen extends StatelessWidget {
|
||||
const Quiz27Screen({super.key, required this.currentScore, this.scopeId});
|
||||
|
||||
@@ -1311,7 +1334,53 @@ class Quiz27Screen extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 27/27',
|
||||
title: 'Quiz 27/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.sentiment_neutral_rounded,
|
||||
fallbackIcon: Icons.sentiment_neutral_rounded,
|
||||
fallbackColor: const Color(0xFF2F9E94),
|
||||
isSignQuestion: true,
|
||||
question:
|
||||
'Qual das seguintes imagens se assemelha à boca do seu filho/a?',
|
||||
answers: const [
|
||||
QuizAnswer(
|
||||
title: 'Dentição alinhada',
|
||||
description: 'Dentição bem alinhada, sem apinhamento',
|
||||
weight: 1,
|
||||
hideTitle: true,
|
||||
value: 'dentes_alinhados_2',
|
||||
imagePath: 'assets/mockup_images/29.jpeg',
|
||||
),
|
||||
QuizAnswer(
|
||||
title: 'Dentição desalinhada',
|
||||
description: 'Dentes sobrepostos/apinhados',
|
||||
weight: 2,
|
||||
hideTitle: true,
|
||||
value: 'dentes_desalinhados_2',
|
||||
imagePath: 'assets/mockup_images/28.jpeg',
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => Quiz28Screen(currentScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
showBackButton: true,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Quiz 28: Céu da boca (Image-choice, final)
|
||||
class Quiz28Screen extends StatelessWidget {
|
||||
const Quiz28Screen({super.key, required this.currentScore, this.scopeId});
|
||||
|
||||
final QuizScore currentScore;
|
||||
final String? scopeId;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return QuizQuestionScreen(
|
||||
title: 'Quiz 28/28',
|
||||
category: 'Avaliação facial',
|
||||
categoryIcon: Icons.architecture_rounded,
|
||||
fallbackIcon: Icons.architecture_rounded,
|
||||
@@ -1338,7 +1407,7 @@ class Quiz27Screen extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
currentScore: currentScore,
|
||||
nextRoute: (context, nextScore) => MaterialPageRoute<void>(
|
||||
nextRoute: (context, nextScore) => quizPageRoute(
|
||||
builder: (_) => QuizResultScreen(finalScore: nextScore, scopeId: scopeId),
|
||||
),
|
||||
answerType: QuizAnswerType.image,
|
||||
|
||||
Reference in New Issue
Block a user