currency_formatter 2.1.0 currency_formatter: ^2.1.0 copied to clipboard
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.
currency_formatter #
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.
Format money #
To set how a double
will be formatted, create a CurrencyFormat
:
CurrencyFormat euroSettings = CurrencyFormat(
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
.
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 €
Parse formatted money #
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
Predefined CurrencyFormat #
Predefined settings for many currencies are also included in this package.
They are listed in the CurrencyFormatter.majors
variable and their symbols in
CurrencyFormatter.majorSymbols
. They can be used in both of the following ways
which do exactly the same:
String inUSD = CurrencyFormatter.format(amount, CurrencyFormat.usd); // $ 1,910.93
String inRUB = CurrencyFormatter.format(amount, CurrencyFormatter.majors['rub']!); // 1.910,93 ₽
String jpySymbol = CurrencyFormatter.majorSymbols['jpy']!; // ¥
In Flutter, you can get the default CurrencyFormat
according to the device
language using CurrencyFormat.local
:
String inSystemCurrency = CurrencyFormatter.format(amount, CurrencyFormat.local ?? CurrencyFormat.usd);
You 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