forex_currency_conversion_historical 1.0.0 copy "forex_currency_conversion_historical: ^1.0.0" to clipboard
forex_currency_conversion_historical: ^1.0.0 copied to clipboard

A dart package to fetch FREE Forex (foreign exchange) prices by date (historical), and perform currency conversions. Also supports today's current rates.

forex_currency_conversion_historical #

A Dart package to fetch FREE foreign exchange (forex) rates, both historical and current.

Features #

  • Completely free — No API keys required
  • Historical rates — Rates dating back to January 1999
  • Wide currency support — 150+ currencies via multiple data sources
  • Safe numbers — Uses decimal package to safeguard against floating-point errors
  • Automatic fallback — Leverages multiple data sources in case one fails for any reason

Data Sources #

This package intelligently combines multiple free forex APIs:

Source Date Range Currencies Notes
Currency API 2024-03-02 → Present 150+ Primary source, extensive coverage
Frankfurter 1999-01-04 → Present ~30 European Central Bank

The package automatically selects the appropriate source based on the requested date and currency pair.

Getting Started #

Installation #

Add to your pubspec.yaml:

dependencies:
  forex_currency_conversion_historical: ^1.0.0

Then run:

dart pub get

Usage #

Fetch Today's Rate #

import 'package:forex_currency_conversion_historical/forex_currency_conversion_historical.dart';

void main() async {
  final rate = await fetchForex('USD', 'EUR');
  print('1 USD = $rate EUR');
}

Fetch Historical Rates #

final rate = await fetchForex('GBP', 'JPY', date: '2023-06-15');
print('GBP/JPY on 2023-06-15: $rate');

If you don't have a string representation of the date, you can pass in your DateTime variable and the package will convert it to a YYYY-MM-DD string for you. In this case use fetchForexParseDate.

Safely avoid Precision Errors (Floating point Errors) #

This package returns decimal instead of double to ensure precision in financial calculations. As such you should avoid double at all costs!

Here is an illustration of the problem:

// With double (problematic)
double rate = 0.1 + 0.2; // = 0.30000000000000004 ❌

// With Decimal (precise)
Decimal rate = Decimal.parse('0.1') + Decimal.parse('0.2'); // = 0.3 ✅

License #

Apache 2.0 LICENSE

3
likes
150
points
30
downloads

Publisher

verified publishernicovate.com

Weekly Downloads

A dart package to fetch FREE Forex (foreign exchange) prices by date (historical), and perform currency conversions. Also supports today's current rates.

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

decimal, http, intl, json_annotation, logging

More

Packages that depend on forex_currency_conversion_historical