Exchange Rates

When manipulating monetary amounts you often need to convert between currencies.

Money2 provide a simple method to convert a Money instance to another currency using an exchange rate.

To converts a Money instance into a target Currency use the Money.exchangeTo method and an ExchangeRate.

To do this you need to define an exchange rate which consists of a rate, a from currency and a to currency.


Lets say you have an invoice in Australian Dollars (AUD) which you need to convert to US Dollars (USD).

Start by googling the exchange rate for AUD to USD. You are likely to find something similar to:

1 AUD = 0.68c USD

Which means that for each Australian Dollar you will receive 0.68 US cents. (AKA I'm not traveling to the USA this year).

To do the above conversion:

import 'package:money2/money2.dart';
import 'package:test/test.dart';

void main() {
  test('exchange rate', () {
// Create the AUD invoice amount ($10.00)
    Money invoiceAmount = Money.fromInt(1000, code: 'AUD');
    expect(invoiceAmount.format('SCCC 0.00'), equals(r'$AUD 10.00'));

// Define the exchange rate in USD (0.68c)
    ExchangeRate auToUsExchangeRate = ExchangeRate.fromFixed(
        Fixed.parse('0.75432', scale: 5),
        fromCode: 'AUD',
        toCode: 'USD',
        toScale: 5);
    expect(auToUsExchangeRate.format('S 0.00000'), equals(r'$ 0.75432'));

// Now do the conversion.
    Money usdAmount = invoiceAmount.exchangeTo(auToUsExchangeRate);
    expect(usdAmount.format('SCCC 0.00'), equals(r'$USD 7.54'));

Last updated