diff --git a/lib/src/country_code.dart b/lib/src/country_code.dart index b8a3863..3a8069f 100644 --- a/lib/src/country_code.dart +++ b/lib/src/country_code.dart @@ -1,5 +1,6 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'country_codes.dart'; import 'country_localizations.dart'; @@ -39,6 +40,15 @@ class CountryCode { return CountryCode.fromJson(jsonCode!); } + static CountryCode? tryFromCountryCode(String countryCode) { + try { + return CountryCode.fromCountryCode(countryCode); + } catch (e) { + if (kDebugMode) print('Failed to recognize country from countryCode: $countryCode'); + return null; + } + } + factory CountryCode.fromDialCode(String dialCode) { final Map? jsonCode = codes.firstWhereOrNull( (code) => code['dial_code'] == dialCode, @@ -46,6 +56,15 @@ class CountryCode { return CountryCode.fromJson(jsonCode!); } + static CountryCode? tryFromDialCode(String dialCode) { + try { + return CountryCode.fromDialCode(dialCode); + } catch (e) { + if (kDebugMode) print('Failed to recognize country from dialCode: $dialCode'); + return null; + } + } + CountryCode localize(BuildContext context) { return this ..name = CountryLocalizations.of(context)?.translate(code) ?? name;