refactor: Centralize error and notification handling using a dedicated _errorService across various components.
This commit is contained in:
@@ -63,6 +63,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:travel_mate/models/expense_split.dart';
|
||||
import '../../services/error_service.dart';
|
||||
import '../../blocs/expense/expense_bloc.dart';
|
||||
import '../../blocs/expense/expense_event.dart';
|
||||
import '../../blocs/expense/expense_state.dart';
|
||||
@@ -191,11 +192,8 @@ class _AddExpenseDialogState extends State<AddExpenseDialog> {
|
||||
|
||||
if (fileSize > 5 * 1024 * 1024) {
|
||||
if (mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('L\'image ne doit pas dépasser 5 Mo'),
|
||||
backgroundColor: Colors.red,
|
||||
),
|
||||
ErrorService().showError(
|
||||
message: 'L\'image ne doit pas dépasser 5 Mo',
|
||||
);
|
||||
}
|
||||
return;
|
||||
@@ -247,11 +245,8 @@ class _AddExpenseDialogState extends State<AddExpenseDialog> {
|
||||
}).toList();
|
||||
|
||||
if (selectedSplits.isEmpty) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('Veuillez sélectionner au moins un participant'),
|
||||
backgroundColor: Colors.red,
|
||||
),
|
||||
ErrorService().showError(
|
||||
message: 'Veuillez sélectionner au moins un participant',
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -299,22 +294,16 @@ class _AddExpenseDialogState extends State<AddExpenseDialog> {
|
||||
|
||||
if (mounted) {
|
||||
Navigator.of(context).pop();
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(
|
||||
widget.expenseToEdit == null
|
||||
? 'Dépense ajoutée'
|
||||
: 'Dépense modifiée',
|
||||
),
|
||||
backgroundColor: Colors.green,
|
||||
),
|
||||
ErrorService().showSnackbar(
|
||||
message: widget.expenseToEdit == null
|
||||
? 'Dépense ajoutée'
|
||||
: 'Dépense modifiée',
|
||||
isError: false,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
if (mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Erreur: $e'), backgroundColor: Colors.red),
|
||||
);
|
||||
ErrorService().showError(message: 'Erreur: $e');
|
||||
}
|
||||
} finally {
|
||||
if (mounted) {
|
||||
|
||||
@@ -15,6 +15,7 @@ import 'balances_tab.dart';
|
||||
import 'expenses_tab.dart';
|
||||
import '../../models/user_balance.dart';
|
||||
import '../../models/expense.dart';
|
||||
import '../../services/error_service.dart';
|
||||
|
||||
class GroupExpensesPage extends StatefulWidget {
|
||||
final Account account;
|
||||
@@ -93,20 +94,13 @@ class _GroupExpensesPageState extends State<GroupExpensesPage>
|
||||
BlocListener<ExpenseBloc, ExpenseState>(
|
||||
listener: (context, state) {
|
||||
if (state is ExpenseOperationSuccess) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(state.message),
|
||||
backgroundColor: Colors.green,
|
||||
),
|
||||
ErrorService().showSnackbar(
|
||||
message: state.message,
|
||||
isError: false,
|
||||
);
|
||||
_loadData(); // Recharger les données après une opération
|
||||
} else if (state is ExpenseError) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text(state.message),
|
||||
backgroundColor: Colors.red,
|
||||
),
|
||||
);
|
||||
ErrorService().showError(message: state.message);
|
||||
} else if (state is ExpensesLoaded) {
|
||||
// Rafraîchir les balances quand les dépenses changent (ex: via stream)
|
||||
context.read<BalanceBloc>().add(
|
||||
@@ -393,12 +387,7 @@ class _GroupExpensesPageState extends State<GroupExpensesPage>
|
||||
AddExpenseDialog(group: widget.group, currentUser: userState.user),
|
||||
);
|
||||
} else {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(
|
||||
content: Text('Erreur: utilisateur non connecté'),
|
||||
backgroundColor: Colors.red,
|
||||
),
|
||||
);
|
||||
ErrorService().showError(message: 'Erreur: utilisateur non connecté');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user