feat: ajout d'un sélecteur de thèmes avec trois options (P'titsPas, Pastel, Sombre)

This commit is contained in:
Julien Martin
2025-04-30 11:01:15 +02:00
parent 9321430818
commit 9519fafe3a
5 changed files with 253 additions and 55 deletions
+37 -5
View File
@@ -1,6 +1,9 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import '../../services/auth_service.dart';
import '../../theme/theme_provider.dart';
import '../../theme/app_theme.dart';
import 'package:provider/provider.dart';
class LoginScreen extends StatefulWidget {
const LoginScreen({super.key});
@@ -15,6 +18,17 @@ class _LoginScreenState extends State<LoginScreen> {
final _passwordController = TextEditingController();
bool _isLoading = false;
String _getThemeName(ThemeType type) {
switch (type) {
case ThemeType.defaultTheme:
return "P'titsPas";
case ThemeType.pastelTheme:
return "Pastel";
case ThemeType.darkTheme:
return "Sombre";
}
}
@override
void dispose() {
_emailController.dispose();
@@ -56,6 +70,29 @@ class _LoginScreenState extends State<LoginScreen> {
return Scaffold(
appBar: AppBar(
title: const Text('Connexion'),
actions: [
Consumer<ThemeProvider>(
builder: (context, themeProvider, child) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: DropdownButton<ThemeType>(
value: themeProvider.currentTheme,
items: ThemeType.values.map((ThemeType type) {
return DropdownMenuItem<ThemeType>(
value: type,
child: Text(_getThemeName(type)),
);
}).toList(),
onChanged: (ThemeType? newValue) {
if (newValue != null) {
themeProvider.setTheme(newValue);
}
},
),
);
},
),
],
),
body: Center(
child: SingleChildScrollView(
@@ -105,11 +142,6 @@ class _LoginScreenState extends State<LoginScreen> {
: const Text('Se connecter'),
),
const SizedBox(height: 16),
TextButton(
onPressed: () => context.go('/register'),
child: const Text('Créer un compte'),
),
const SizedBox(height: 8),
TextButton(
onPressed: () => context.go('/parent-register'),
child: const Text('Créer un compte parent'),
+39 -2
View File
@@ -1,16 +1,53 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../theme/theme_provider.dart';
import '../../theme/app_theme.dart';
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
String _getThemeName(ThemeType type) {
switch (type) {
case ThemeType.defaultTheme:
return "P'titsPas";
case ThemeType.pastelTheme:
return "Pastel";
case ThemeType.darkTheme:
return "Sombre";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('P\'titsPas'),
title: const Text('Accueil'),
actions: [
Consumer<ThemeProvider>(
builder: (context, themeProvider, child) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: DropdownButton<ThemeType>(
value: themeProvider.currentTheme,
items: ThemeType.values.map((ThemeType type) {
return DropdownMenuItem<ThemeType>(
value: type,
child: Text(_getThemeName(type)),
);
}).toList(),
onChanged: (ThemeType? newValue) {
if (newValue != null) {
themeProvider.setTheme(newValue);
}
},
),
);
},
),
],
),
body: const Center(
child: Text('Bienvenue sur P\'titsPas'),
child: Text('Bienvenue sur P\'titsPas !'),
),
);
}