Search packages, repositories and app categories

Package detailsv2.3.0

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.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
13.5K
Likes
50
Pub points
150

Install package

flutter pub add currency_formatter

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Flutter package that simplifies the formatting of monetary values. It allows users to format numbers as currency with support for custom symbols, predefined formats for major currencies, or system-default currency settings. Ideal for applications requiring consistent and localized money display, such as e-commerce, finance apps, or expense trackers. The package is lightweight and compatible across all major platforms, ensuring a uniform user experience.

Use cases

  • Displaying prices in e-commerce apps
  • Formatting expenses in budgeting tools
  • Localizing currency in international apps
  • Showing transaction amounts in financial dashboards
  • Customizing currency symbols in multi-region apps

Key features

  • Supports custom currency symbols
  • Includes built-in formats for major currencies
  • Uses system-defined currency by default
  • Cross-platform compatibility
  • Simple API for formatting numbers
  • Configurable decimal and thousand separators

Suitable for

  • Developers building financial or shopping apps
  • Apps targeting multiple regions
  • Projects needing localized currency display
  • Teams wanting minimal setup for money formatting
  • Users preferring native-like currency presentation

Considerations

  • Requires manual handling of currency code mapping
  • Limited to formatting; does not parse or validate input
  • May need additional logic for bidirectional currency conversion
  • Depends on locale settings for system currency fallback
  • Not optimized for real-time currency rate updates

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

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(
  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 €

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 CurrencyFormats

Predefined 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; // ¥
Get local CurrencyFormat

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);

If instead you want to get the CurrencyFormat for a specific locale, use CurrencyFormat.fromLocale():

String inLocaleCurrency = CurrencyFormatter.format(amount, CurrencyFormat.fromLocale('en_US')!);
Get CurrencyFormat from symbol or code

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

String fromCode = CurrencyFormatter.format(amount, CurrencyFormat.fromCode('gbp')!); // £ 1,910.35

Using custom currencies

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);

Categories

Dependencies

Dependency list 2 items

  • intl>=0.17.0 <0.21.0
  • web>=1.0.0 <=3.0.0

Source repository

Projects using this package

No data available yet.