documentation_introduction top-level property

String documentation_introduction
getter/setter pair

Implementation

var documentation_introduction = '''

📄 QuizModel - Documentation

QuizModel est la classe centrale représentant un quiz dans l'application.
Elle gère la logique de navigation, la collecte des réponses, le traitement des conditions d'affichage et la génération des données pour l'API.
🚀 Fonctions principales
| Fonction                      | Description                                                        |
| ----------------------------- | ------------------------------------------------------------------ |
| `initFromTemplate`            | Initialise le modèle à partir d'un template JSON.                  |
| `initFromParticipationsDTO`   | Initialise le modèle depuis un DTO de participation.               |
| `computeDisplayableQuestions` | Recalcule les questions à afficher selon les conditions.           |
| `fillQuizResponse`            | Complète les réponses à partir de l'état stocké côté utilisateur.  |
| `getPutQuizResponseInput`     | Construit un DTO prêt à être envoyé à l'API.                       |
| `getNextButtonText`           | Retourne le texte du bouton "Suivant" selon l'état actuel du quiz. |
| `handleNextStep`              | Passe à l'étape suivante.                                          |
| `handlePreviousStep`          | Revient à l'étape précédente.                                      |
| `handleNextQuestion`          | Passe à la question suivante (mode question par question).         |
| `handlePreviousQuestion`      | Revient à la question précédente (mode question par question).     |
| `getDisplayCondition`         | Évalue les conditions d'affichage d'une question.                  |

📦 Propriétés
| Propriété               | Description                                                    |
| ----------------------- | -------------------------------------------------------------- |
| `quizTitle`             | Titre du quiz.                                                 |
| `quizSubTitle`          | Sous-titre du quiz.                                            |
| `steppingModeType`      | Mode de navigation (`step_by_step` ou `question_by_question`). |
| `steps`                 | Liste des étapes (`QuizStepModel`).                            |
| `_userResponses`        | Réponses collectées (clé: `questionKey`).                      |
| `stepperDisplayMode`    | Mode d'affichage du stepper (horizontal, vertical, etc.).      |
| `showBottomActions`     | Affiche ou non les actions bas de page.                        |
| `theme`                 | Thématisation du quiz.                                         |
| `dictionnary`           | Dictionnaire de textes multilingues.                           |
| `introStepper`          | Stepper d'introduction si applicable.                          |
| `timer`                 | Modèle de timer associé.                                       |
| `_currentStepIndex`     | Index de l'étape actuelle.                                     |
| `_currentQuestionIndex` | Index de la question actuelle.                                 |

🧩 Utilisation
///Initialiser un quiz depuis un template :
```dart
QuizModel quiz = QuizModel.initFromTemplate(myTemplateJson);

///Initialiser un quiz depuis une participation :

QuizModel quiz = QuizModel.initFromParticipationsDTO(participationDetailsDTO);

///Mettre à jour une réponse utilisateur :

quiz.updateResponse(questionKey: 'Q1', responseValue: 'My answer');

///Passer à la question suivante :

quiz.handleNextQuestion();

///Vérifier si on est à la toute première question :

if (quiz.isAtVeryFirstQuestion) {
  // Actions
}
```

🔄 Gestion de la progression
Modes supportés

    step_by_step : Navigation étape par étape.

    question_by_question : Navigation question par question.

Les méthodes de navigation (handleNextStep, handleNextQuestion, etc.) sont adaptées selon le mode.
🎯 Conditions d'affichage

Les questions ou étapes peuvent avoir des conditions d'affichage dynamiques basées sur les réponses actuelles :

bool shouldDisplay = quiz.getDisplayCondition(myDisplayConditionModel);

🛡 Sécurité & Assertions

La classe vérifie systématiquement que les index ne soient pas hors limites et que les étapes ou questions existent avant toute manipulation.
⚠ Remarques importantes

    Toujours appeler computeDisplayableQuestions() après avoir modifié les réponses pour recalculer les questions visibles.

    Pour la restauration d'état via l'API, utiliser setCurrentStepFromApi et setCurrentStepQuestionFromApi.
''';