Presearch google activities.

This commit is contained in:
Dayron
2025-11-13 09:27:37 +01:00
parent d17df621f4
commit 236327f6fa
6 changed files with 156 additions and 3 deletions

View File

@@ -1,11 +1,15 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:travel_mate/blocs/trip/trip_bloc.dart';
import 'package:travel_mate/blocs/trip/trip_event.dart';
import 'package:travel_mate/blocs/activity/activity_bloc.dart';
import 'package:travel_mate/blocs/activity/activity_event.dart';
import 'package:travel_mate/components/home/create_trip_content.dart';
import 'package:travel_mate/models/trip.dart';
import 'package:travel_mate/components/map/map_content.dart';
import 'package:travel_mate/services/error_service.dart';
import 'package:travel_mate/services/activity_cache_service.dart';
import 'package:travel_mate/components/activities/activities_page.dart';
import 'package:url_launcher/url_launcher.dart';
@@ -19,6 +23,47 @@ class ShowTripDetailsContent extends StatefulWidget {
class _ShowTripDetailsContentState extends State<ShowTripDetailsContent> {
final ErrorService _errorService = ErrorService();
final ActivityCacheService _cacheService = ActivityCacheService();
@override
void initState() {
super.initState();
// Lancer la recherche d'activités Google en arrière-plan
_preloadGoogleActivities();
}
/// Précharger les activités Google en arrière-plan
void _preloadGoogleActivities() {
// Attendre un moment avant de lancer la recherche pour ne pas bloquer l'UI
Future.delayed(const Duration(milliseconds: 500), () {
if (mounted && widget.trip.id != null) {
// Vérifier si on a déjà des activités en cache
if (_cacheService.hasCachedActivities(widget.trip.id!)) {
return; // Utiliser le cache
}
// Sinon, lancer la recherche
context.read<ActivityBloc>().add(
widget.trip.hasCoordinates
? SearchActivitiesWithCoordinates(
tripId: widget.trip.id!,
latitude: widget.trip.latitude!,
longitude: widget.trip.longitude!,
category: null,
maxResults: 6,
reset: true,
)
: SearchActivities(
tripId: widget.trip.id!,
destination: widget.trip.location,
category: null,
maxResults: 6,
reset: true,
),
);
}
});
}
// Calculer les jours restants avant le voyage
int get daysUntilTrip {