getInstance static method
Abstract base class for currency operations following ISO 4217 standards.
This class provides a common interface for all currency types and includes static methods to manage and retrieve currency instances according to ISO 4217 codes or locale information.
Use this class to:
- Retrieve currency instances by code or locale.
- Access currency metadata such as symbol, numeric code, or display name.
- Work with all available currencies in a consistent manner.
Example usage:
// Get a currency by ISO code
final usd = Currency.getInstance('USD');
// Get a currency by locale
final eur = Currency.getInstanceFromLocale(Locale('de', 'DE'));
// List all available currencies
final allCurrencies = Currency.getAllCurrencies();
// Access currency properties
print(usd.symbol); // $
print(eur.displayName); // Euro
Returns a Currency instance for the given ISO 4217 currency code.
Throws UnsupportedOperationException if the currency code is invalid or unsupported.
Example:
final usd = Currency.getInstance('USD');
final eur = Currency.getInstance('EUR');
Implementation
static Currency getInstance(String currencyCode) {
if (currencyCode.isEmpty) {
throw UnsupportedOperationException('Currency code cannot be empty');
}
final upperCode = currencyCode.toUpperCase();
if (_currencyCache.containsKey(upperCode)) {
return _currencyCache[upperCode]!;
}
final data = CurrencyDatabase.getCurrencyData(upperCode);
if (data == null) {
throw UnsupportedOperationException('Unsupported currency code: $currencyCode');
}
final currency = _Currency(
currencyCode: upperCode,
symbol: data['symbol'] as String,
defaultFractionDigits: data['digits'] as int,
numericCode: data['numeric'] as int,
displayName: data['name'] as String,
);
_currencyCache[upperCode] = currency;
return currency;
}