Aus öffentlichen Paketdaten erstellte Orientierung.
Ein Dart-Paket, das den Zugriff auf globale Länderdaten vereinfacht, indem es die REST Countries-API umschließt. Es bietet eine saubere, einfach zu verwendende Schnittstelle zum Abrufen detaillierter Informationen über Länder, einschließlich Namen, Flaggen, Grenzen, Währungen und mehr. Speziell für Entwickler konzipiert, die zuverlässige, aktuelle Länderdaten in ihren Flutter-Anwendungen benötigen, unterstützt es mehrere Plattformen und reduziert Boilerplate-Code. Das Paket verarbeitet HTTP-Anfragen intern und liefert strukturierte Daten für eine nahtlose Integration.
Anwendungsfälle
Laden von Länderdetails in einer Reise-App
Ein Sprach- oder Währungsauswahl erstellen
Länderflaggen und Karten anzeigen
Erstellen eines Welt-Nachrichten- oder Bevölkerungs-Dashboards
Implementierung der Benutzerstandortauswahl
Hauptmerkmale
Einfacher API-Wrapper
Unterstützt mehrere Plattformen
Gibt strukturierte Länderdaten zurück
Verarbeitet HTTP-Anfragen intern
Einfache Integration mit Flutter
Geeignet für
Flutter-Entwickler, die internationale Apps erstellen
Apps, die Ländermetadaten erfordern
Bildungs- oder Referenzanwendungen
Reise- und Lokalisierungstools
Hinweise
Internetverbindung erforderlich
Beschränkt auf REST-Länder-API-Daten
Kein Offline-Caching enthalten
Abhängig von der Verfügbarkeit der externen API
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
rest_countries_data
A Dart wrapper around the REST Countries v3.1 API that provides a fully-typed, developer-friendly interface for accessing detailed country data.
✨ Features
Get all countries with selected fields (limited to 10 fields)
Query countries by:
Capital
Full name or partial name
ISO 3166-1 code or list of codes
Region / Subregion
Language / Currency / Demonym
Translation
Independence status
Built-in CountryModel to map the API response
Enum-based CountryFields selector for fine-grained queries
Clean separation of concerns via Repository, API and Domain layers
🚀 Getting Started
1. Install the Package
Add to your pubspec.yaml:
dependencies:rest_countries_data:^1.0.0
Then run:
# For Dart users
dart pub get
# For Flutter users
flutter pub get
final countries = awaitRestCountries.getAllCountries(
fields: [CountryFields.name, CountryFields.capital, CountryFields.region],
);
Field Limitation ⚠️
When using the fields parameter in methods like getAllCountries, the maximum number of allowed fields is 10. This limit is enforced by the REST Countries API.
Also note: Whenever you specify the fields property, the properties that will be available in the returned CountryModel depend entirely on which CountryFields you request. If you omit a field, the corresponding property in CountryModel may be null.
Get Countries by Capital
final country = awaitRestCountries.getCountryByCapital(capital: 'Paris');
Get a Country by ISO Code
final country = awaitRestCountries.getCountryByCode(code: 'NG');
Get Countries by Currency
final countries = awaitRestCountries.getCountriesByCurrency(currency: 'USD');
Get Countries by Region
final countries = awaitRestCountries.getCountriesByRegion(region: 'Europe');
Get Countries by SubRegion
final countries = awaitRestCountries.getCountriesBySubRegion(subRegion: 'Eastern Africa');
Get Country by Full Name
final country = awaitRestCountries.getCountryByFullName(fullName: 'Federal Republic of Nigeria');
Get Countries by Language, Demonym, or Translation
final countries = awaitRestCountries.getCountriesByLanguage(language: 'en');
final countries = awaitRestCountries.getCountriesByDemonym(demonym: 'Nigerian');
final countries = awaitRestCountries.getCountriesByTranslation(translation: 'Niger');
Get Countries by Independence Status
final countries = awaitRestCountries.getCountriesByIndependentStatus(
independent: true,
fields: [CountryFields.name, CountryFields.flag],
);
Use the CountryFields enum to limit which fields are returned from the API:
CountryFields.name
CountryFields.capital
CountryFields.region
CountryFields.area
CountryFields.languages
// etc.
Note: Maximum 10 fields per request for getAllCountries()
🧩 Utility Getter
getCountryPhoneNumberCode
This convenience getter is available on the CountryModel and returns the full numeric dialing code (e.g., +234 for the country Nigeria). It is constructed by combining idd.root and idd.suffixes in the CountryModel.
🔍 API Overview
Method
Description
getAllCountries({required fields})
Get all countries with selected fields
getCountryByCapital({required capital})
Filter by capital city
getCountryByCode({required code})
Get a single country by ISO code
getCountriesByCodes({required codes})
Get multiple countries by ISO codes
getCountriesByCurrency({required currency})
Filter by currency
getCountriesByDemonym({required demonym})
Filter by demonym
getCountriesByLanguage({required language})
Filter by spoken language
getCountriesByRegion({required region})
Filter by region
getCountriesBySubRegion({required subRegion})
Filter by subregion
getCountriesByTranslation({required translation})
Filter by translated country name
getCountryByFullName({required fullName})
Get a country by its full name
getCountriesByName({required name})
Filter by partial or full name
getCountriesByIndependentStatus(...)
Filter by independence and optionally fields
CountryModel.getCountryPhoneNumberCode
Get the phone dialing code of a country (e.g. +234)
📊 Example (Run it)
import'package:rest_countries_data/rest_countries_data.dart';
voidmain() async {
final countries = awaitRestCountries.getCountriesByRegion(region: 'Africa');
for (var country in countries) {
print(country.name?.common);
}
}
🚪 Contributing
Pull requests are welcome! If you have ideas or find bugs, feel free to open an issue.
Development Setup
After cloning the repository, install the git hooks for automatic formatting and linting: