loadTripsV3 method
Future<void>
loadTripsV3({ - bool fromHome = false,
})
Implementation
Future<void> loadTripsV3({bool fromHome = false}) async {
_clearExclusiveFiltersValues();
_clearStandardFilterValues();
hasConfirmedBooking.value = false;
passengerExpanded.value = true;
tripExpanded.value = true;
if (tempFlightType.value == FlightType.exclusivePlus &&
remainingSearchCredit < neededSearchCredit) {
final res = await InsufficientSearchCreditsDialog.show();
if (res) {
tempFlightType.value = FlightType.standard;
} else {
return;
}
}
visibleItem.value = 12;
if (isStreamingExclusive.value) {
debugPrint('### Canceling the request');
isStreamingExclusive.value = false;
_disposeMap();
departureRes?.cancel();
if (isRoundTrip) {
returnRes?.cancel();
}
}
exclusiveOffers.value = [];
standardOffers.value = [];
if (!isValidSearch()) {
return;
}
if (totalPassengers > 9) {
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Invalid Search",
message: "Maximum number of passengers per a booking is 9.",
);
return;
}
if (fromHome) {
await storeSearch();
clearSearch();
initSearch();
goto(Routes.FLIGHT_SEARCH);
return;
}
try {
_startCarouselTimer();
isSearching.value = true;
searchCreditEarned.value = 0;
searchCreditUsed.value = 0;
exclusiveOffers.clear();
filteredList.clear();
standardOffers.clear();
openLoadingDialog();
final departureDate =
DateFormat('EEE, dd/MM/yy').parse(searchDepartureDate.value);
var departureTrip = {
"departureDate": DateFormat('yyyy-MM-dd').format(departureDate),
"tripType": isRoundTrip ? "roundtrip" : "oneway",
// "flixableDate": isFlexibleDeparture.value,
"fromAirportCode": searchFromAirport.value?.code ?? '',
"toAirportCode": searchToAirport.value?.code ?? '',
"flightClass": FlightSearchUtils.mapFlightClassFromIndex(
searchClassIndex.value, version.value),
"adultPassengersCount": searchAdults.value,
"childPassengersCount": searchChildren.value,
"infantWithSeatPassengersCount": searchInfantsInSeats.value,
"infantNoSeatPassengersCount": searchInfantsInLap.value,
// "searchCreditUsed": isExclusivePlus,
};
if (isRoundTrip) {
final returnDate =
DateFormat('EEE, dd/MM/yy').parse(searchReturnDate.value);
final formatedDate = DateFormat('yyyy-MM-dd').format(returnDate);
departureTrip['returnDate'] = formatedDate;
}
loadNonDiscountedTrips(departureTrip);
if (isExclusivePlus) {
// load discounted
isStreamingExclusive.value = true;
_fetchAndProcessDiscountedTrips(departureTrip);
}else{
departureRes = null;
}
} on DioException catch (e) {
if (cancelToken.isCancelled) {
isSearching.value = false;
debugPrint("Request cancelled");
} else {
_stopCarouselTimer();
isSearching.value = false;
isStreamingExclusive.value = false;
_disposeMap();
departureRes?.cancel();
if (isRoundTrip) {
returnRes?.cancel();
}
debugPrint("## exception here ${e.toString()}");
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Error",
message:
"We couldn't fetch flight data due to a timeout. Please try again or check your internet connection.",
);
}
} catch (e) {
_stopCarouselTimer();
stopAnimationTimer();
isSearching.value = false;
isStreamingExclusive.value = false;
_disposeMap();
departureRes?.cancel();
if (isRoundTrip) {
returnRes?.cancel();
}
debugPrint("## exception here ${e.toString()}");
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Error",
message:
"Something went wrong. Please try again or check your internet connection.",
);
}
}