Flight search and tracking
Search by flight number
Track any commercial flight by its flight number:Select airline
Type the airline name or code (e.g., “Emirates”, “6E”) in the search bar. The app will show matching airlines with logos.
Enter flight number
After selecting an airline, enter just the numeric portion of the flight number. For example, for flight 6E1045, enter “1045”.
Tip: You only need the numbers. The app automatically adds the airline code.
Select date
Choose the flight date from the date selector. Dates show flights available for tracking.
lib/screens/home/widgets/flight_search_bar.dart) supports autocomplete and debounced search for smooth performance.
Search by route
Find flights between two airports:- Search for and select the departure airport
- Search for and select the arrival airport
- Choose a date from the date selector
- Select a flight from the list of available flights
- Flight numbers (IATA and ICAO)
- Airline names with logos
- Scheduled departure and arrival times
- Aircraft type when available
Flight information display
When viewing a flight (lib/screens/home/widgets/flight_info.dart), you’ll see:
Header information
- Airline logo and name
- Flight number (both IATA and ICAO identifiers)
- Aircraft type and registration number
Time and status
- Departure and arrival times in local timezone
- Scheduled vs. actual/estimated times
- Delay or early indicators with color coding:
- 🟢 Green: Early arrival/departure
- 🔴 Red: Delayed (>5 minutes)
- ⚫ Gray: On time
Airport details
- Terminal assignments
- Gate numbers (origin and destination)
- Baggage claim carousel
- Runway used for takeoff/landing
Flight metrics
- Total flight distance (km and miles)
- Flight duration
- Current altitude (when airborne)
- Ground speed (when airborne)
- Heading direction (when airborne)
Real-time tracking
When a flight is airborne, the app shows:Live position
Aircraft marker on the map with rotation based on heading
Flight path
Complete route from departure to destination with flight track
Altitude bar
Current altitude in feet, displayed at the top of the screen
Speed indicator
Ground speed in knots, updated every 15 minutes
lib/services/widget_update_service.dart) automatically refreshes data every 15 minutes using workmanager.
Interactive map
The home screen features a full-screen map (lib/screens/home/widgets/flight_map.dart) built with flutter_map:
Map features
- OpenStreetMap tiles: High-quality map rendering
- Animated transitions: Smooth camera movements when switching flights
- Aircraft marker: Rotates to match heading direction
- Flight route: Polyline showing the great circle path
- Flight track: Historical position data when available
- Airport markers: Icons at departure and arrival airports
Map controls
The map supports standard gestures:- Pinch: Zoom in/out
- Drag: Pan the map
- Double-tap: Zoom in
- Two-finger tap: Zoom out
Auto-centering
When a flight is selected, the map automatically centers on:- The aircraft position (if in flight)
- The destination airport (if flight is selected)
- A view showing both airports (if viewing route)
Tracked flights
You can save flights for quick access:Adding to tracked flights
- Search for and view any flight
- Flight is automatically tracked when you view it
- Access tracked flights from the home screen
- Flight number and airline logo
- Route (departure → arrival)
- Status indicator (scheduled, in air, landed, delayed)
- Quick tap to reload tracking
Managing tracked flights
Tracked flights are stored locally in SQLite (sqflite package) at lib/screens/home/service.dart.
Booking details
Attach personal booking information to any flight:Open booking sheet
When viewing a flight, tap the booking icon to open the booking details sheet (
lib/screens/home/widgets/booking_details_sheet.dart).Shareable flight cards
Create beautiful flight cards to share on social media:- View any flight
- Tap the share icon
- The app generates a custom flight card with:
- Airline branding and colors
- Route and timing information
- Aircraft details
- Distance metrics
- Status indicators (delayed, cancelled, diverted)
lib/screens/home/widgets/shareable_flight_card.dart) is rendered at 450×600px with:
- Dark gradient background
- World map overlay
- Airline logo
- Flight numbers (IATA and ICAO)
- Airport codes and city names
- Departure/arrival times in local timezone
- Gate, terminal, and baggage information
- Flight distance and duration
- Aircraft model and registration
share_plus package, or save to your photo library using screenshot.
Flight statistics
Track your personal aviation history with comprehensive statistics.Access statistics
- Tap the Profile tab in bottom navigation
- Tap “Flight Stats”
- View your lifetime aviation metrics
lib/screens/profile/stats/main.dart) displays:
Overview stats
Total flights
Number of flights tracked to your account
Flight time
Total hours and minutes in the air
Distance
Total kilometers/miles traveled
Airports
Unique airports visited
Airlines
Different airlines flown
Distance comparisons
Your total distance is compared to:- Around Earth: Trips around the equator (40,075 km)
- To the Moon: Distance to the moon (384,400 km)
- To Mars: Average distance to Mars (54.6M km)
Flight records
- Shortest flight: Minimum flight distance and duration
- Longest flight: Maximum flight distance and duration
- Route (departure → arrival)
- Airline and flight number
- Distance (km) or duration (hours, minutes)
Aircraft statistics
Detailed aircraft metrics including:- Most flown aircraft: Aircraft model with most flights
- Youngest aircraft: Newest aircraft by manufacturing date
- Oldest aircraft: Oldest aircraft by age
- Most common tail number: Registration appearing most often
- Median age: Median aircraft age across all flights
Top airlines
Ranked list of airlines by flight count:- Airline name and logo
- Flight count
- Progress bar relative to top airline
flutter_svg.
Top airports
Ranked list of airports by departure count:- Airport code (IATA)
- Airport name
- City and country
- Departure count
- Progress bar relative to top airport
Top routes
Most frequently flown routes:- Departure and arrival airports
- Flight count on route
- Distance
Wear OS integration
Connect Wear OS smartwatches to sync flight data:Connect a device
- Ensure your Wear OS watch is paired via Bluetooth
- In the Aero app, go to Profile → “Connected Wear OS Devices”
- Your watch should appear automatically
- Status shows:
- ✅ Green: Device nearby and connected
- ⚠️ Orange: Device paired but not nearby
View devices
The wearables screen (lib/screens/wearables/list/main.dart) shows:
- Device name
- Device ID
- Connection status
- Nearby indicator
WearOSService (lib/services/wear_os.dart) to communicate with watches via Bluetooth.
Automatic sync
When you view a flight, it automatically syncs to connected Wear OS devices. The watch receives:- Flight number and airline
- Departure and arrival airports
- Current status
- Gate and terminal information
Offline support
The app caches data locally for offline access:- Recently viewed flights stored in SQLite
- Airline logos cached via
cached_network_image - Map tiles cached by
flutter_map - User profile and statistics cached
- View previously loaded flights
- Access cached statistics
- View map with cached tiles
- No real-time updates until reconnected
Performance features
Debounced search
Search input uses debouncing to avoid excessive API calls. The search only triggers 300ms after you stop typing.Lazy loading
Flight lists use lazy loading to render efficiently:- Only visible items are rendered
- Smooth scrolling with
ListView.builder - Skeleton screens while loading (
skeletonizerpackage)
Image caching
All network images usecached_network_image for:
- Faster loading on repeat views
- Reduced bandwidth usage
- Offline access to previously loaded images