arch-atlas

Filter / Sort / Category / Location Bottom Sheets

widgets/bottom_sheets/*

presentation

Overview

Four bottom sheets driving filter and sort interactions. Filter sheet renders the FilterSection list, Sort sheet picks the sort key, Category sheet is a quick category picker, Location sheet (currently mocked) picks the delivery region.

User Flow

  1. FilterBottomSheet builds from state.availableFilters and emits selected IDs.
  2. SortByBottomSheet lists 4-5 sort options with the current one highlighted.
  3. CategoryBottomSheet is a vertical category list used outside the filter sheet.
  4. LocationBottomSheet is currently a placeholder; tied to a future region-aware fetch.

Cases & Edge Cases

  • Filter sheet reads available filters from the controller — sheet-only state is local until 'Apply' is tapped.
  • Sort sheet calls setSortOrder which forks between client- and server-side sorting.
  • Location sheet does not yet wire into MarketplaceService — backend doesn't accept a region filter in this endpoint yet.

Code References

  • lib/src/features/shared/marketplace/views/widgets/bottom_sheets/filter_bottom_sheet.dart
  • lib/src/features/shared/marketplace/views/widgets/bottom_sheets/sort_by_bottom_sheet.dart
  • lib/src/features/shared/marketplace/views/widgets/bottom_sheets/category_bottom_sheet.dart
  • lib/src/features/shared/marketplace/views/widgets/bottom_sheets/location_bottom_sheet.dart

API Calls

Empty — fill this in later. Open the manifest and add content here.

Notes

Sheet 'Reset' buttons map onto controller.clearAllFilters — they should NOT manually rebuild state.