import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../blocs/group/group_bloc.dart'; import '../../blocs/group/group_state.dart'; import '../../data/models/group.dart'; import 'group_expenses_page.dart'; class CountContent extends StatelessWidget { const CountContent({super.key}); @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { if (state is GroupLoading) { return const Center(child: CircularProgressIndicator()); } if (state is GroupLoaded) { if (state.groups.isEmpty) { return _buildEmptyState(); } return ListView.builder( padding: const EdgeInsets.all(16), itemCount: state.groups.length, itemBuilder: (context, index) { final group = state.groups[index]; return _buildGroupCard(context, group); }, ); } if (state is GroupError) { return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.error, size: 64, color: Colors.red), const SizedBox(height: 16), Text(state.message), ], ), ); } return _buildEmptyState(); }, ); } Widget _buildEmptyState() { return const Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.account_balance_wallet, size: 80, color: Colors.grey), SizedBox(height: 16), Text( 'Aucun groupe', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), SizedBox(height: 8), Text( 'Créez un groupe pour commencer à gérer vos dépenses', textAlign: TextAlign.center, style: TextStyle(fontSize: 14, color: Colors.grey), ), ], ), ); } Widget _buildGroupCard(BuildContext context, Group group) { final isDark = Theme.of(context).brightness == Brightness.dark; return Card( margin: const EdgeInsets.only(bottom: 12), elevation: 2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), child: InkWell( onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => GroupExpensesPage(group: group), ), ); }, borderRadius: BorderRadius.circular(12), child: Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( width: 56, height: 56, decoration: BoxDecoration( color: isDark ? Colors.blue[900] : Colors.blue[100], borderRadius: BorderRadius.circular(12), ), child: const Icon( Icons.group, color: Colors.blue, size: 32, ), ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( group.name, style: const TextStyle( fontSize: 18, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 4), Text( '${group.members.length} membre${group.members.length > 1 ? 's' : ''}', style: TextStyle( fontSize: 14, color: isDark ? Colors.grey[400] : Colors.grey[600], ), ), ], ), ), Icon( Icons.chevron_right, color: isDark ? Colors.grey[400] : Colors.grey[600], ), ], ), ), ), ); } }