π country_meta
A Dart-only package providing metadata for countries with ISO codes, localized names, currencies, phone codes, and flag image utilities (SVG, WebP, JPEG).
π¦ Features
- β ISO Alpha-2, Alpha-3, and Numeric codes
- π Phone codes
- π± Currencies and symbols
- π Localized country names: English, Russian, Arabic
- π Country lookup by code or locale
- π Flag URL builder with SVG / WebP / JPEG support
- π§ͺ Unit tests for model serialization, equality, and indexing
πΊπ³ Flag icons provided by flagpedia.net
π Project Structure
lib/
βββ country_meta.dart
βββ src/
βββ model/
β βββ country_meta.dart
βββ data/
β βββ country_repository.dart
βββ res/
β βββ data/
β β βββ countries_raw_data.dart
β βββ names/
β βββ country_names_en.dart
β βββ country_names_ru.dart
β βββ country_names_ar.dart
βββ localization/
β βββ localized_name.dart
β βββ country_name.dart
βββ flags/
βββ flag_format.dart
βββ flag_width.dart
βββ flag_height.dart
βββ flag_url_builder.dart
βββ country_flag.dart
π Usage
π Country Lookup
final country = CountryRepository.byAlpha2('US');
print(country?.currency); // USD
print(country?.phoneCode); // 1
π Localized Name
final name = country?.localizedName('ru_RU');
print(name); // Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ Π¨ΡΠ°ΡΡ
π Flag URL
// Default SVG
final svg = country?.flagUrl();
// JPEG with height
final jpeg = country?.flagUrl(
format: FlagImageFormat.jpeg,
height: FlagHeight.h160,
);
// WebP with width
final webp = country?.flagUrl(
format: FlagImageFormat.webp,
width: FlagWidth.w320,
);
π§ͺ Testing
Run all tests:
dart test
Includes tests for:
- β
CountryMetamodel parsing, serialization, equality - π¦ Country repository lookup
- π Localized name fallback logic
- π Flag URL generation and format fallback