feat: Implement activity management feature with Firestore integration

- Added AddActivityBottomSheet for adding custom activities to trips.
- Created Activity model to represent tourist activities.
- Developed ActivityRepository for managing activities in Firestore.
- Integrated ActivityPlacesService for searching activities via Google Places API.
- Updated ShowTripDetailsContent to navigate to activities page.
- Enhanced main.dart to include ActivityBloc and necessary repositories.
This commit is contained in:
Dayron
2025-11-03 16:40:33 +01:00
parent 64fcc88984
commit 8ff9e12fd4
11 changed files with 3185 additions and 1 deletions

View File

@@ -4,9 +4,11 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:travel_mate/blocs/balance/balance_bloc.dart';
import 'package:travel_mate/blocs/expense/expense_bloc.dart';
import 'package:travel_mate/blocs/message/message_bloc.dart';
import 'package:travel_mate/blocs/activity/activity_bloc.dart';
import 'package:travel_mate/firebase_options.dart';
import 'package:travel_mate/services/balance_service.dart';
import 'package:travel_mate/services/error_service.dart';
import 'package:travel_mate/services/activity_places_service.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:travel_mate/services/expense_service.dart';
import 'blocs/auth/auth_bloc.dart';
@@ -26,6 +28,7 @@ import 'repositories/message_repository.dart';
import 'repositories/account_repository.dart';
import 'repositories/expense_repository.dart';
import 'repositories/balance_repository.dart';
import 'repositories/activity_repository.dart';
import 'pages/login.dart';
import 'pages/home.dart';
import 'pages/signup.dart';
@@ -99,6 +102,14 @@ class MyApp extends StatelessWidget {
expenseRepository: context.read<ExpenseRepository>(),
),
),
// Activity repository for managing trip activities
RepositoryProvider<ActivityRepository>(
create: (context) => ActivityRepository(),
),
// Activity places service for Google Places API integration
RepositoryProvider<ActivityPlacesService>(
create: (context) => ActivityPlacesService(),
),
// Balance service for business logic related to balances
RepositoryProvider<BalanceService>(
create: (context) => BalanceService(
@@ -151,6 +162,14 @@ class MyApp extends StatelessWidget {
expenseRepository: context.read<ExpenseRepository>(),
),
),
// Activity BLoC for managing trip activities
BlocProvider<ActivityBloc>(
create: (context) => ActivityBloc(
repository: context.read<ActivityRepository>(),
placesService: context.read<ActivityPlacesService>(),
errorService: ErrorService(),
),
),
],
child: BlocBuilder<ThemeBloc, ThemeState>(
builder: (context, themeState) {