currency_formatter
금액을 쉽게 형식화할 수 있는 패키지입니다. 사용자 정의 통화 기호와 형식을 설정할 수 있으며, 주요 통화용 내장 형식 중 일부를 사용하거나 시스템 형식을 사용할 수 있습니다.
금액을 쉽게 형식화할 수 있는 패키지입니다. 사용자 정의 통화 기호와 형식을 설정할 수 있으며, 주요 통화용 내장 형식 중 일부를 사용하거나 시스템 형식을 사용할 수 있습니다.
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
A package to easily format money. It supports setting a custom currency symbol and format, using some of the inbuilt ones for the main currencies or using the system one.
To set how a double will be formatted, create a CurrencyFormat:
CurrencyFormat euroSettings = CurrencyFormat(
code: 'eur',
symbol: '€',
symbolSide: SymbolSide.left,
thousandSeparator: '.',
decimalSeparator: ',',
symbolSeparator: ' ',
);
symbolSide can be set to SymbolSide.left, SymbolSide.right, or SymbolSide.none.thousandSeparator and decimalSeparator default to '.', ',' or ',','.' automatically depending on symbolSide.negativeSignPlacement can be set to NegativeSignPlacement.beforeSymbol or NegativeSignPlacement.afterSymbol, and defaults to NegativeSignPlacement.afterSymbol.To format a num, CurrencyFormatter.format() is used:
num amount = 1910.9347;
String formatted = CurrencyFormatter.format(amount, euroSettings); // 1.910,93 €
String compact = CurrencyFormatter.format(amount, euroSettings, compact: true); // 1,91K €
String threeDecimal = CurrencyFormatter.format(amount, euroSettings, decimal: 3); // 1.910,945 €
To get a num from a formatted String, use CurrencyFormatter.parse():
// Above's example continuation
num parseFormatted = CurrencyFormatter.parse(formatted, euroSettings); // 1910.93
num parseCompact = CurrencyFormatter.parse(compact, euroSettings); // 1910.0
num parseThreeDecimal = CurrencyFormatter.parse(threeDecimal, euroSettings); // 1910.935
CurrencyFormatsPredefined settings for many currencies are also included in this package.
They are listed in the CurrencyFormatter.majorsList list and defined as static constants in the CurrencyFormat class.
String inUSD = CurrencyFormatter.format(amount, CurrencyFormat.usd); // $ 1,910.93
String inRUB = CurrencyFormatter.format(amount, CurrencyFormatter.fromCode('rub')!); // 1.910,93 ₽
String jpySymbol = CurrencyFormatter.jpy.symbol; // ¥
CurrencyFormatIn Flutter, you can get the default CurrencyFormat according to the device
language using CurrencyFormat.local:
String inSystemCurrency = CurrencyFormatter.format(amount, CurrencyFormat.local ?? CurrencyFormat.usd);
If instead you want to get the CurrencyFormat for a specific locale, use CurrencyFormat.fromLocale():
String inLocaleCurrency = CurrencyFormatter.format(amount, CurrencyFormat.fromLocale('en_US')!);
CurrencyFormat from symbol or codeYou can get a CurrencyFormat from a currency symbol (if it is in
CurrencyFormatter.majors) with CurrencyFormat.fromSymbol():
String fromSymbol = CurrencyFormatter.format(amount, CurrencyFormat.fromSymbol('£')!); // £ 1,910.35
String fromCode = CurrencyFormatter.format(amount, CurrencyFormat.fromCode('gbp')!); // £ 1,910.35
Let's say you want to use the following custom currency seamlessly:
CurrencyFormat khr = CurrencyFormat(
symbol: '៛',
symbolSide: SymbolSide.right,
);
You can create your own majors list:
const List<CurrencyFormat> myCurrencies = [
...CurrencyFormatter.majorsList,
khr,
];
And use it to get the currency corresponding to a symbol or code, or the local one:
CurrencyFormat.fromSymbol('៛', myCurrencies); // khr
CurrencyFormat.fromCode('khr', myCurrencies); // khr
// custom local currency
CurrencyFormat? localCurrency() =>
CurrencyFormat.fromSymbol(CurrencyFormat.localSymbol, myCurrencies);
// or
CurrencyFormat? localCurrency() =>
CurrencyFormat.fromLocale(null, myCurrencies);