Skip to content

Instantly share code, notes, and snippets.

@Taosif7
Created December 1, 2025 19:13
Show Gist options
  • Select an option

  • Save Taosif7/7530f1fa3f5874452a8f5658f77fcb89 to your computer and use it in GitHub Desktop.

Select an option

Save Taosif7/7530f1fa3f5874452a8f5658f77fcb89 to your computer and use it in GitHub Desktop.
A simplified example of how travel filter criteria would plug into domains
// Shared enum for all verticals
enum TravelDomain { stay, flight, bus, train, store }
// Domain-specific implementation
TravelFilterCriteria buildStayFilterCriteria({
required MasterFilters masterFilters,
required int totalCount,
required StaySearchRequest initialRequest,
required StayService stayService,
}) {
return TravelFilterCriteria(
domain: TravelDomain.stay,
masterFilter: masterFilters,
initialTotalItemCount: totalCount,
filterSearchRequest: initialRequest,
// How to fetch updated filters + counts
fetchFilterCallback: (request, appliedFilters) async {
final response = await stayService.fetchFilters(
request: request,
appliedFilters: appliedFilters,
);
return (
response.masterFilters, // updated MasterFilters
response.totalResultsCount, // updated result count
);
},
// What to do when user taps "Apply"
onApplyFilters: (selectedFilters) {
// Trigger search in the Stay flow
stayService.searchWithFilters(
request: initialRequest,
filters: selectedFilters, // Updated instance of master filters
);
},
// Domain specific text / formatting (optional)
formatResultCount: (count) => "$count stays found",
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment