import 'package:collection/collection.dart' show IterableExtension; import 'package:country_code_picker/country_codes.dart'; import 'package:country_code_picker/country_localizations.dart'; import 'package:flutter/cupertino.dart'; mixin ToAlias {} @deprecated class CElement = CountryCode with ToAlias; /// Country element. This is the element that contains all the information class CountryCode { /// the name of the country String? name; /// the flag of the country final String? flagUri; /// the country code (IT,AF..) final String? code; /// the dial code (+39,+93..) final String? dialCode; CountryCode({ this.name, this.flagUri, this.code, this.dialCode, }); @Deprecated('Use `fromCountryCode` instead.') factory CountryCode.fromCode(String isoCode) { return CountryCode.fromCountryCode(isoCode); } factory CountryCode.fromCountryCode(String countryCode) { final Map? jsonCode = codes.firstWhereOrNull( (code) => code['code'] == countryCode, ); return CountryCode.fromJson(jsonCode!); } factory CountryCode.fromDialCode(String dialCode) { final Map? jsonCode = codes.firstWhereOrNull( (code) => code['dial_code'] == dialCode, ); return CountryCode.fromJson(jsonCode!); } CountryCode localize(BuildContext context) { return this ..name = CountryLocalizations.of(context)?.translate(this.code) ?? this.name; } factory CountryCode.fromJson(Map json) { return CountryCode( name: json['name'], code: json['code'], dialCode: json['dial_code'], flagUri: 'flags/${json['code'].toLowerCase()}.png', ); } @override String toString() => "$dialCode"; String toLongString() => "$dialCode ${toCountryStringOnly()}"; String toCountryStringOnly() { return '$name'; } }