- Implemented ExpensesTab to display a list of expenses with details. - Created GroupExpensesPage to manage group expenses with a tabbed interface. - Added SettlementsTab to show optimized settlements between users. - Developed data models for Expense and Balance, including necessary methods for serialization. - Introduced CountRepository for Firestore interactions related to expenses. - Added CountService to handle business logic for expenses and settlements. - Integrated image picker for receipt uploads. - Updated main.dart to include CountBloc and CountRepository. - Enhanced pubspec.yaml with new dependencies for image picking and Firebase storage. Not Tested yet
43 lines
982 B
Dart
43 lines
982 B
Dart
import 'package:equatable/equatable.dart';
|
|
import '../../data/models/expense.dart';
|
|
import '../../data/models/balance.dart';
|
|
|
|
abstract class CountState extends Equatable {
|
|
const CountState();
|
|
|
|
@override
|
|
List<Object?> get props => [];
|
|
}
|
|
|
|
class CountInitial extends CountState {}
|
|
|
|
class CountLoading extends CountState {}
|
|
|
|
class ExpensesLoaded extends CountState {
|
|
final String groupId;
|
|
final List<Expense> expenses;
|
|
final List<Balance> balances;
|
|
final List<Settlement> settlements;
|
|
final Map<ExpenseCurrency, double> exchangeRates;
|
|
|
|
const ExpensesLoaded({
|
|
required this.groupId,
|
|
required this.expenses,
|
|
required this.balances,
|
|
required this.settlements,
|
|
required this.exchangeRates,
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [groupId, expenses, balances, settlements, exchangeRates];
|
|
}
|
|
|
|
class CountError extends CountState {
|
|
final String message;
|
|
|
|
const CountError(this.message);
|
|
|
|
@override
|
|
List<Object?> get props => [message];
|
|
}
|