feat: Implement group balance and expense management with new navigation and data handling

This commit is contained in:
Dayron
2025-10-28 13:06:42 +01:00
parent 94f1abfbc7
commit df1bb6da4a
10 changed files with 390 additions and 54 deletions

View File

@@ -7,7 +7,8 @@ import '../../blocs/account/account_state.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:travel_mate/components/error/error_content.dart';
import '../../blocs/user/user_state.dart' as user_state;
import '../../repositories/group_repository.dart'; // Ajouter cet import
import 'group_expenses_page.dart'; // Ajouter cet import
class AccountContent extends StatefulWidget {
const AccountContent({super.key});
@@ -17,6 +18,8 @@ class AccountContent extends StatefulWidget {
}
class _AccountContentState extends State<AccountContent> {
final _groupRepository = GroupRepository(); // Ajouter cette ligne
@override
void initState() {
super.initState();
@@ -45,6 +48,44 @@ class _AccountContentState extends State<AccountContent> {
}
}
// Nouvelle méthode pour naviguer vers la page des dépenses de groupe
Future<void> _navigateToGroupExpenses(Account account) async {
try {
// Récupérer le groupe associé au compte
final group = await _groupRepository.getGroupByTripId(account.tripId);
if (group != null && mounted) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => GroupExpensesPage(
account: account,
group: group,
),
),
);
} else {
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Groupe non trouvé pour ce compte'),
backgroundColor: Colors.red,
),
);
}
}
} catch (e) {
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Erreur lors du chargement du groupe: $e'),
backgroundColor: Colors.red,
),
);
}
}
}
@override
Widget build(BuildContext context) {
return BlocBuilder<UserBloc, user_state.UserState>(
@@ -221,7 +262,7 @@ class _AccountContentState extends State<AccountContent> {
),
subtitle: Text(memberInfo),
trailing: const Icon(Icons.chevron_right),
onTap: () {},
onTap: () => _navigateToGroupExpenses(account), // Modifier cette ligne
),
);
} catch (e) {
@@ -234,6 +275,4 @@ class _AccountContentState extends State<AccountContent> {
);
}
}
}
}