Overview
The Wonderous app contains several primary screens that make up the core user experience. These screens handle navigation between wonders, detailed information display, timeline visualization, artifact browsing, and collectible management.Main Screens
HomeScreen
Location:lib/ui/screens/home/wonders_home_screen.dart
The home screen displays a horizontally scrollable list of wonders with parallax background and foreground effects.
Key Features:
- Horizontal PageView with infinite scrolling
- Parallax layered illustrations (background, middleground, foreground)
- Vertical swipe gesture to navigate to wonder details
- Wonder type selection via menu
- Animated transitions and visual effects
- Page indicator for navigation
_pageController: PageController for horizontal scrolling_wonderIndex: Current wonder index_swipeController: Handles vertical swipe interactions_fadeAnims: Animation controllers for fade transitions
- Swipe up → Navigate to WonderDetailsScreen
- Swipe left/right → Navigate between wonders
- Menu button → Open HomeMenu for direct wonder selection
WonderDetailsScreen
Location:lib/ui/screens/wonder_details/wonders_details_screen.dart
Displays detailed information about a specific wonder across multiple tabs.
Key Features:
- Tab-based navigation (Editorial, Photos, Artifacts, Events)
- Lazy-loaded content using LazyIndexedStack
- Responsive layout with navigation rail support
- Dynamic padding based on tab menu size
- Editorial - Wonder information and description
- Photo Gallery - Images from Unsplash
- Artifacts - Related artifacts carousel
- Events - Historical events timeline
_tabController: Manages tab navigation (length: 4)_tabBarSize: Dynamic size calculation for responsive layout_useNavRail: Boolean for layout mode (horizontal vs vertical tabs)
TimelineScreen
Location:lib/ui/screens/timeline/timeline_screen.dart
Interactive vertical timeline showing global historical events and wonder-specific milestones.
Key Features:
- Vertically scrolling timeline (1200-5500px range)
- Year markers and era text (Classical, Modern, etc.)
- Event cards with popup details
- Bottom scrubber for quick navigation
- Dashed line dividers with year labels
- Filterable by wonder type
_ScrollingViewport: Main timeline with events_AnimatedEraText: Displays current historical era_BottomScrubber: Horizontal mini-timeline for navigation_EventMarkers: Visual indicators for events_YearMarkers: Year labels along the timeline
_scroller: ScrollController for timeline navigation_year:ValueNotifier<int>for current year display
ArtifactSearchScreen
Location:lib/ui/screens/artifact/artifact_search/artifact_search_screen.dart
Searchable grid of artifacts from the Metropolitan Museum of Art API, filtered by name and time range.
Key Features:
- Text search by artifact name/keywords
- Time range filtering with visual selector
- Staggered grid layout for results
- Search visualization controller
- Real-time filtering and updates
_SearchInput: Text field for keyword search_ResultsGrid: Staggered grid of artifact tilesExpandingTimeRangeSelector: Panel for date range filtering_ResultTile: Individual artifact preview
_searchResults: Full search results list_filteredResults: Results after time range filter_query: Current search query string_startYear/_endYear: Time range boundariespanelController: Controls visibility of time range panelvizController: Manages search visualization
CollectionScreen
Location:lib/ui/screens/collection/collection_screen.dart
Displays user’s collected items (hidden collectibles found throughout the app).
Key Features:
- List of all collectibles with discovered/explored/locked states
- Auto-scroll to newly discovered items
- Progress tracking footer
- Reset collection functionality
- State persistence via CollectiblesLogic
_CollectionList: Scrollable list of collectible cards_CollectionListCard: Individual collectible display_CollectibleImage: Image with state-based styling_NewlyDiscoveredItemsBtn: Badge showing new discoveries_CollectionFooter: Progress counter
- Discovered count: Items found but not viewed in collection
- Explored count: Items viewed in collection screen
- Total count: All available collectibles
IntroScreen
Location:lib/ui/screens/intro/intro_screen.dart
The onboarding screen shown to first-time users before accessing the main app.
Key Features:
- Multi-slide introduction to Wonderous features
- Background images of wonders
- Skip and continue navigation buttons
- Marks onboarding as complete when finished
- Display welcome slides with wonder imagery
- User swipes through introduction
- On completion, sets
settingsLogic.hasCompletedOnboarding.value = true - Navigates to HomeScreen
- Shown when
settingsLogic.hasCompletedOnboarding.value == false - Controlled by bootstrap logic in
AppLogic
CollectibleFoundScreen
Location:lib/ui/screens/collectible_found/collectible_found_screen.dart
Celebration screen displayed when a user discovers a hidden collectible in the photo gallery.
Key Features:
- Full-screen modal presentation
- Collectible artifact image display
- Particle effect celebration animation
- “View in Collection” navigation button
- Marks collectible as discovered
- User navigates to specific photo grid position containing a collectible
- Collectible state changes from
losttodiscovered
- Artifact image preview
- Collectible title and wonder name
- Animated particle effects using
particle_fieldpackage - Success messaging
PhotoGalleryScreen
Location:lib/ui/screens/photo_gallery/photo_gallery_screen.dart
Interactive 5×5 grid photo browser for viewing wonder images from Unsplash.
Key Features:
- 5×5 grid navigation (25 photos total)
- Swipe gestures to move between photos
- Keyboard arrow key support (web/desktop)
- Collectible discovery integration
- Fullscreen image viewer
- Grid position indicator
- Swipe left/right/up/down to move through grid
- Arrow keys for desktop navigation
- Tap photo for fullscreen view
- Hidden collectibles at certain grid positions
_gridX,_gridY: Current grid position (0-4 each)_photoIndex: Current photo index (0-24)- Photo IDs from
UnsplashLogic.getCollectionPhotos()
HomeMenuScreen
Location:lib/ui/screens/home_menu/home_menu_screen.dart
Overlay menu for quick wonder selection and app settings.
Key Features:
- List of all 8 wonders with images
- Direct navigation to any wonder
- Settings and preferences access
- Modal overlay presentation
- Wonder tiles with names and images
- Close button
- Animated slide-in transition
- Opens from HomeScreen menu button
- Tapping a wonder navigates to WonderDetailsScreen
- Closes when selecting a wonder or tapping outside
Screen Structure
All screens follow a consistent structure:- Header - AppHeader component with title/subtitle
- Content Area - Main scrollable content
- Navigation - Back buttons and navigation controls
- Overlays - Modals and floating UI elements
Navigation Patterns
Screen Paths:context.go(path)- Navigate to routecontext.pop()- Go backappLogic.showFullscreenDialogRoute()- Show dialog overlay
Common Screen Features
State Management
All screens useGetItStatefulWidgetMixin for dependency injection:
Responsive Design
- Screens adapt to different screen sizes
- Navigation rail support for larger displays
- Dynamic insets and padding via
$styles
Accessibility
- Semantic labels for screen readers
- Keyboard navigation support
- Focus management
- Live regions for dynamic content
Performance
- RepaintBoundary for complex animations
- Lazy loading with LazyIndexedStack
- Image caching and optimization
- Debounced search input
Related
- Common Widgets - Reusable UI components
- Wonder Illustrations - Custom illustration system
- Architecture - App structure and patterns