Skip to main content
The favorites feature allows authenticated users to save frequently used routes for quick access.

FavoriteService

The FavoriteService handles all favorites-related API calls.

Implementation

Source: lib/services/favorite_service.dart

Authentication Required

All favorite operations require user authentication (requireAuth: true).

Favorite Model

Favorite data is represented by the Favorite model:
Source: lib/models/favorite.dart

Model Fields

  • id: Server-assigned unique identifier
  • label: User-friendly display name
  • from: Origin stop name
  • to: Destination stop name
  • defaultTime: Preferred departure time

Adding Favorites

Users can save routes from the route search results:
Source: lib/screens/home/home_screen.dart:85-125

FavoritesScreen

The FavoritesScreen displays all saved routes.

Screen Structure

Source: lib/screens/favorites/favorites_screen.dart:8-23

Loading Favorites

Source: lib/screens/favorites/favorites_screen.dart:25-53

Deleting Favorites

Source: lib/screens/favorites/favorites_screen.dart:55-87

Favorites List Display

Source: lib/screens/favorites/favorites_screen.dart:190-231

Authentication States

Login Prompt

Show login prompt for unauthenticated users:
Source: lib/screens/favorites/favorites_screen.dart:115-148

Empty State

Source: lib/screens/favorites/favorites_screen.dart:168-188

Example Usage

Error Handling

Pull to Refresh

Users can refresh favorites by pulling down:
Source: lib/screens/favorites/favorites_screen.dart:191-193

UI Features

  • Authentication-gated access
  • Pull-to-refresh functionality
  • Delete confirmation dialog
  • Empty and login states
  • Error handling with retry
  • Visual feedback (SnackBars)

Next Steps