This commit is contained in:
2026-05-14 16:54:32 +00:00
parent 5b2a2e7ddb
commit 15fcbcc9eb
212 changed files with 18586 additions and 10360 deletions
@@ -1,122 +1,122 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../providers/diagnostic_provider.dart';
class DiagnosticScreen extends StatelessWidget {
const DiagnosticScreen({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => DiagnosticProvider(),
child: const _DiagnosticView(),
);
}
}
class _DiagnosticView extends StatelessWidget {
const _DiagnosticView();
@override
Widget build(BuildContext context) {
final provider = Provider.of<DiagnosticProvider>(context);
if (provider.isLoading) {
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
}
if (provider.questions.isEmpty) {
return Scaffold(
appBar: AppBar(title: const Text('Diagnostic')),
body: const Center(child: Text('Aucun événement trouvé.')),
);
}
final question = provider.questions[provider.currentQuestionIndex];
if (provider.isFinished) {
return Scaffold(
appBar: AppBar(title: const Text('Résultat du Diagnostic')),
body: Center(
child: Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('Votre niveau de stress est :', style: TextStyle(fontSize: 18)),
const SizedBox(height: 10),
Text(
provider.stressLevel,
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: _getColorForLevel(provider.stressLevel),
),
),
const SizedBox(height: 20),
Text(
provider.advice,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 16, fontStyle: FontStyle.italic),
),
const SizedBox(height: 40),
ElevatedButton(
onPressed: () => Navigator.pop(context),
child: const Text('Retour à l\'accueil'),
),
],
),
),
),
);
}
return Scaffold(
appBar: AppBar(
title: Text('Question ${provider.currentQuestionIndex + 1}/${provider.questions.length}'),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
LinearProgressIndicator(
value: (provider.currentQuestionIndex + 1) / provider.questions.length,
backgroundColor: Colors.grey.shade200,
),
const SizedBox(height: 40),
Text(
question.text,
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
textAlign: TextAlign.center,
),
const SizedBox(height: 40),
...question.options.map((option) => Padding(
padding: const EdgeInsets.only(bottom: 12.0),
child: ElevatedButton(
onPressed: () => provider.answerQuestion(option.points),
style: ElevatedButton.styleFrom(
padding: const EdgeInsets.symmetric(vertical: 15),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
),
child: Text(option.text),
),
)),
],
),
),
);
}
Color _getColorForLevel(String level) {
switch (level) {
case "Faible": return Colors.green;
case "Modéré": return Colors.orange;
case "Élevé": return Colors.red;
case "Très élevé": return Colors.red.shade900;
default: return Colors.black;
}
}
}
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../providers/diagnostic_provider.dart';
class DiagnosticScreen extends StatelessWidget {
const DiagnosticScreen({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => DiagnosticProvider(),
child: const _DiagnosticView(),
);
}
}
class _DiagnosticView extends StatelessWidget {
const _DiagnosticView();
@override
Widget build(BuildContext context) {
final provider = Provider.of<DiagnosticProvider>(context);
if (provider.isLoading) {
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
}
if (provider.questions.isEmpty) {
return Scaffold(
appBar: AppBar(title: const Text('Diagnostic')),
body: const Center(child: Text('Aucun événement trouvé.')),
);
}
final question = provider.questions[provider.currentQuestionIndex];
if (provider.isFinished) {
return Scaffold(
appBar: AppBar(title: const Text('Résultat du Diagnostic')),
body: Center(
child: Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('Votre niveau de stress est :', style: TextStyle(fontSize: 18)),
const SizedBox(height: 10),
Text(
provider.stressLevel,
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: _getColorForLevel(provider.stressLevel),
),
),
const SizedBox(height: 20),
Text(
provider.advice,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 16, fontStyle: FontStyle.italic),
),
const SizedBox(height: 40),
ElevatedButton(
onPressed: () => Navigator.pop(context),
child: const Text('Retour à l\'accueil'),
),
],
),
),
),
);
}
return Scaffold(
appBar: AppBar(
title: Text('Question ${provider.currentQuestionIndex + 1}/${provider.questions.length}'),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
LinearProgressIndicator(
value: (provider.currentQuestionIndex + 1) / provider.questions.length,
backgroundColor: Colors.grey.shade200,
),
const SizedBox(height: 40),
Text(
question.text,
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
textAlign: TextAlign.center,
),
const SizedBox(height: 40),
...question.options.map((option) => Padding(
padding: const EdgeInsets.only(bottom: 12.0),
child: ElevatedButton(
onPressed: () => provider.answerQuestion(option.points),
style: ElevatedButton.styleFrom(
padding: const EdgeInsets.symmetric(vertical: 15),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
),
child: Text(option.text),
),
)),
],
),
),
);
}
Color _getColorForLevel(String level) {
switch (level) {
case "Faible": return Colors.green;
case "Modéré": return Colors.orange;
case "Élevé": return Colors.red;
case "Très élevé": return Colors.red.shade900;
default: return Colors.black;
}
}
}