airport_data 1.0.2 copy "airport_data: ^1.0.2" to clipboard
airport_data: ^1.0.2 copied to clipboard

A comprehensive Dart library for retrieving airport information by IATA codes, ICAO codes, country, continent, timezone, and more. Includes geographic proximity search, distance calculation, bulk oper [...]

Airport Data Dart #

A comprehensive Dart library for retrieving airport information by IATA codes, ICAO codes, and various other criteria. This library provides easy access to a large dataset of airports worldwide with detailed information including coordinates, timezone, type, and external links.

Installation #

Add this to your pubspec.yaml:

dependencies:
  airport_data: ^1.0.0

Then run:

dart pub get

Platform Support #

Platform Supported
Flutter Android Yes
Flutter iOS Yes
Flutter macOS Yes
Flutter Windows Yes
Flutter Linux Yes
Flutter Web Yes
Dart CLI / Server Yes

On dart:io platforms (mobile, desktop, CLI), gzip decompression uses the native codec for maximum performance. On web, a pure-Dart fallback from package:archive is used automatically — no configuration needed.

Features #

  • Comprehensive airport database with worldwide coverage
  • Works on all Flutter platforms including web
  • Search by IATA codes, ICAO codes, country, continent, and more
  • Geographic proximity search with customizable radius
  • External links to Wikipedia, airport websites, and flight tracking services
  • Distance calculation between airports
  • Filter by airport type (large_airport, medium_airport, small_airport, heliport, seaplane_base)
  • Timezone-based airport lookup
  • Autocomplete suggestions for search interfaces
  • Advanced multi-criteria filtering
  • Statistical analysis by country and continent
  • Bulk operations for multiple airports
  • Code validation utilities
  • Airport ranking by runway length and elevation

Airport Data Structure #

Each Airport object contains the following fields:

Airport(
  iata: 'SIN',                    // 3-letter IATA code
  icao: 'WSSS',                   // 4-letter ICAO code
  time: 'Asia/Singapore',         // Timezone identifier
  utc: 8,                         // UTC offset
  countryCode: 'SG',              // 2-letter country code
  continent: 'AS',                // 2-letter continent code (AS, EU, NA, SA, AF, OC, AN)
  airport: 'Singapore Changi Airport',  // Airport name
  latitude: 1.35019,              // Latitude coordinate
  longitude: 103.994003,          // Longitude coordinate
  elevationFt: '22',              // Elevation in feet
  type: 'large_airport',          // Airport type
  scheduledService: true,         // Has scheduled commercial service
  wikipedia: 'https://en.wikipedia.org/wiki/Singapore_Changi_Airport',
  website: 'https://www.changiairport.com',
  runwayLength: '13200',          // Longest runway in feet
  flightradar24Url: 'https://www.flightradar24.com/airport/SIN',
  radarboxUrl: 'https://www.radarbox.com/airport/WSSS',
  flightawareUrl: 'https://www.flightaware.com/live/airport/WSSS',
)

Basic Usage #

import 'package:airport_data/airport_data.dart';

// Get airport by IATA code
final airports = AirportData.getAirportByIata('SIN');
print(airports.first.airport); // "Singapore Changi Airport"

// Get airport by ICAO code
final airports = AirportData.getAirportByIcao('WSSS');
print(airports.first.countryCode); // "SG"

// Search airports by name
final airports = AirportData.searchByName('Singapore');
print(airports.length); // Multiple airports matching "Singapore"

// Find nearby airports (within 50km of coordinates)
final nearby = AirportData.findNearbyAirports(1.35019, 103.994003, 50);
print(nearby); // Airports near Singapore Changi

API Reference #

Core Search Functions #

AirportData.getAirportByIata(String iataCode)

Finds airports by their 3-letter IATA code.

final airports = AirportData.getAirportByIata('LHR');
// Returns list of airports with IATA code 'LHR'

AirportData.getAirportByIcao(String icaoCode)

Finds airports by their 4-character ICAO code.

final airports = AirportData.getAirportByIcao('EGLL');
// Returns list of airports with ICAO code 'EGLL'

AirportData.searchByName(String query)

Searches for airports by name (case-insensitive, minimum 2 characters).

final airports = AirportData.searchByName('Heathrow');
// Returns airports with 'Heathrow' in their name

Geographic Functions #

AirportData.findNearbyAirports(double lat, double lon, double radiusKm)

Finds airports within a specified radius of given coordinates.

final nearby = AirportData.findNearbyAirports(51.5074, -0.1278, 100);
// Returns airports within 100km of London coordinates

AirportData.calculateDistance(String code1, String code2)

Calculates the great-circle distance between two airports using IATA or ICAO codes.

final distance = AirportData.calculateDistance('LHR', 'JFK');
// Returns distance in kilometers (approximately 5541)

Filtering Functions #

AirportData.getAirportByCountryCode(String countryCode)

Finds all airports in a specific country.

final usAirports = AirportData.getAirportByCountryCode('US');

AirportData.getAirportByContinent(String continentCode)

Finds all airports on a specific continent.

final asianAirports = AirportData.getAirportByContinent('AS');
// Continent codes: AS, EU, NA, SA, AF, OC, AN

AirportData.getAirportsByType(String type)

Finds airports by their type.

final largeAirports = AirportData.getAirportsByType('large_airport');
// Available types: large_airport, medium_airport, small_airport, heliport, seaplane_base

// Convenience search for all airports
final allAirports = AirportData.getAirportsByType('airport');
// Returns large_airport, medium_airport, and small_airport

AirportData.getAirportsByTimezone(String timezone)

Finds all airports within a specific timezone.

final londonAirports = AirportData.getAirportsByTimezone('Europe/London');

Advanced Functions #

AirportData.findAirports(AirportFilter filters)

Finds airports matching multiple criteria.

// Find large airports in Great Britain with scheduled service
final airports = AirportData.findAirports(const AirportFilter(
  countryCode: 'GB',
  type: 'large_airport',
  hasScheduledService: true,
));

// Find airports with minimum runway length
final longRunwayAirports = AirportData.findAirports(const AirportFilter(
  minRunwayFt: 10000,
));

AirportData.getAutocompleteSuggestions(String query)

Provides autocomplete suggestions for search interfaces (returns max 10 results).

final suggestions = AirportData.getAutocompleteSuggestions('Lon');
// Returns up to 10 airports matching 'Lon' in name or IATA code

AirportData.getAirportLinks(String code)

Gets external links for an airport using IATA or ICAO code.

final links = AirportData.getAirportLinks('SIN');
// Returns AirportLinks with:
//   website, wikipedia, flightradar24, radarbox, flightaware

Statistical & Analytical Functions #

AirportData.getAirportStatsByCountry(String countryCode)

Gets comprehensive statistics about airports in a specific country.

final stats = AirportData.getAirportStatsByCountry('US');
print(stats.total);                  // Total airport count
print(stats.byType['large_airport']); // Count of large airports
print(stats.averageRunwayLength);     // Average runway length in feet
print(stats.timezones);               // List of timezones

AirportData.getAirportStatsByContinent(String continentCode)

Gets comprehensive statistics about airports on a specific continent.

final stats = AirportData.getAirportStatsByContinent('AS');
print(stats.total);
print(stats.byCountry); // Breakdown by country code

AirportData.getLargestAirportsByContinent(String continentCode, [int limit, String sortBy])

Gets the largest airports on a continent by runway length or elevation.

// Get top 5 airports in Asia by runway length
final airports = AirportData.getLargestAirportsByContinent('AS', 5, 'runway');

// Get top 10 airports in South America by elevation
final highAltitude = AirportData.getLargestAirportsByContinent('SA', 10, 'elevation');

Bulk Operations #

AirportData.getMultipleAirports(List<String> codes)

Fetches multiple airports by their IATA or ICAO codes in one call.

final airports = AirportData.getMultipleAirports(['SIN', 'LHR', 'JFK', 'WSSS']);
// Returns list of Airport? (null for codes not found)

AirportData.calculateDistanceMatrix(List<String> codes)

Calculates distances between all pairs of airports in a list.

final matrix = AirportData.calculateDistanceMatrix(['SIN', 'LHR', 'JFK']);
print(matrix.distances['SIN']!['LHR']); // Distance in km
print(matrix.distances['LHR']!['JFK']); // Distance in km

AirportData.findNearestAirport(double lat, double lon, [AirportFilter? filters])

Finds the single nearest airport to given coordinates, optionally with filters.

// Find nearest airport to coordinates
final nearest = AirportData.findNearestAirport(1.35019, 103.994003);
print(nearest.airport);   // Airport name
print(nearest.distance);  // Distance in km

// Find nearest large airport with scheduled service
final nearestHub = AirportData.findNearestAirport(1.35019, 103.994003, const AirportFilter(
  type: 'large_airport',
  hasScheduledService: true,
));

Validation & Utilities #

AirportData.validateIataCode(String code)

Validates if an IATA code exists in the database.

AirportData.validateIataCode('SIN');  // true
AirportData.validateIataCode('XYZ');  // false
AirportData.validateIataCode('ABCD'); // false (wrong format)

AirportData.validateIcaoCode(String code)

Validates if an ICAO code exists in the database.

AirportData.validateIcaoCode('WSSS'); // true
AirportData.validateIcaoCode('XXXX'); // false

AirportData.getAirportCount([AirportFilter? filters])

Gets the count of airports matching the given filters.

final total = AirportData.getAirportCount();
final usLargeCount = AirportData.getAirportCount(const AirportFilter(
  countryCode: 'US',
  type: 'large_airport',
));

AirportData.isAirportOperational(String code)

Checks if an airport has scheduled commercial service.

AirportData.isAirportOperational('SIN'); // true

Error Handling #

Functions throw exceptions for invalid input or when no data is found:

try {
  AirportData.getAirportByIata('XYZ');
} on StateError catch (e) {
  print(e.message); // "No data found for IATA code: XYZ"
}

Data Source #

This library uses a comprehensive dataset of worldwide airports with regular updates to ensure accuracy and completeness.

License #

This project is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) - see the LICENSE file for details.

Contributing #

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

0
likes
140
points
72
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A comprehensive Dart library for retrieving airport information by IATA codes, ICAO codes, country, continent, timezone, and more. Includes geographic proximity search, distance calculation, bulk operations, and statistical analysis.

Homepage
Repository (GitHub)
View/report issues
Contributing

License

unknown (license)

Dependencies

archive

More

Packages that depend on airport_data