import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:em2rp/providers/local_user_provider.dart'; import 'package:em2rp/utils/colors.dart'; class CustomAppBar extends StatefulWidget implements PreferredSizeWidget { final String title; final List? actions; final bool showLogoutButton; const CustomAppBar({ super.key, required this.title, this.actions, this.showLogoutButton = true, }); @override State createState() => _CustomAppBarState(); @override Size get preferredSize => const Size.fromHeight(kToolbarHeight); } class _CustomAppBarState extends State { @override Widget build(BuildContext context) { return AppBar( title: Text(widget.title), backgroundColor: AppColors.rouge, actions: [ if (widget.showLogoutButton) IconButton( icon: const Icon(Icons.logout, color: AppColors.blanc), onPressed: () async { // Afficher une boîte de dialogue de confirmation final shouldLogout = await showDialog( context: context, builder: (context) => AlertDialog( title: const Text('Déconnexion'), content: const Text('Voulez-vous vraiment vous déconnecter ?'), actions: [ TextButton( onPressed: () => Navigator.pop(context, false), child: const Text('Annuler'), ), TextButton( onPressed: () => Navigator.pop(context, true), child: const Text('Déconnexion'), ), ], ), ); if (shouldLogout == true && context.mounted) { // Déconnexion final provider = Provider.of(context, listen: false); await provider.signOut(); if (context.mounted) { Navigator.of(context).pushReplacementNamed('/login'); } } }, ), if (widget.actions != null) ...widget.actions!, ], ); } }