66 lines
1.5 KiB
Dart
66 lines
1.5 KiB
Dart
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,
|
|
});
|
|
|
|
factory CountryCode.fromCode(String isoCode) {
|
|
final Map<String, String> jsonCode = codes.firstWhere(
|
|
(code) => code['code'] == isoCode,
|
|
orElse: () => null,
|
|
);
|
|
|
|
if (jsonCode == null) {
|
|
return null;
|
|
}
|
|
|
|
return CountryCode.fromJson(jsonCode);
|
|
}
|
|
|
|
factory CountryCode.fromJson(Map<String, dynamic> 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([BuildContext context]) =>
|
|
"$dialCode ${toCountryStringOnly(context)}";
|
|
|
|
String toCountryStringOnly([BuildContext context]) {
|
|
if (context != null) {
|
|
return CountryLocalizations.of(context)?.translate(code) ?? name;
|
|
}
|
|
return '$name';
|
|
}
|
|
}
|