学ぶ/Flutterクイックスタート

サーバー側APIキーでFlutter通貨コンバーターを作る

自分のproxyでsource付きFX quoteを取得し、loading、error、cache ageを表示する型付きFlutterコンバーターを作ります。

ERexchangerate.dev·Sep 29, 2026·8分で読めます

Flutterアプリは公開クライアントです。bearer keyをアプリに入れず、サーバー側/api/fxで管理し、{from,to}とrate、source、market session、観測時刻を型付きモデルで扱います。

要点
Dartファイルはproxyを呼び、API keyをアプリに含めません。
rateとdata_updated_atを検証してから表示します。
loading、HTTP/format error、source、market session、cache ageを表示します。
表示は固定小数、APIの未丸め値はコードで保持します。
指標レートは推定・表示用で、決済は担当プロバイダーが行います。

認証情報をサーバーの後ろに置く

サーバーrouteはfromとtoを受け、Authorizationを追加して/v1/latest/{from}?symbols={to}を呼びます。キーはサーバー環境に保存し、アプリには渡しません。

proxy contract · responsecopy
GET /api/fx?from=USD&to=EUR

{"from":"USD","to":"EUR","rate":0.9245,"source":"live","market_session":"open","data_updated_at":"2026-09-29T10:00:00Z"}

HTTP依存関係を追加する

http packageをpubspec.yamlに追加してFlutter converterをlib/main.dartに保存します。flutter run --dart-define=FX_PROXY_BASE_URL=https://your-app.example/api/fxで実行します。Node 20以上でproxyをEXCHANGERATE_API_KEY付きでnode flutter-currency-converter-proxy.mjsとして起動し、ローカルではloopback 8787を使います。端末接続前は認証付きHTTPSとリクエスト制限を用意します。Flutterの公式networking recipeも参照してください。

quoteを検証する

rateが欠落、正でない、有限でない、非数値、またはdata_updated_at欠落なら拒否します。10秒timeoutと非2xxも表示します。

Dart · typed response shapecopy
class FxQuote {
  final String from;
  final String to;
  final double rate;
  final String source;
  final String marketSession;
  final DateTime dataUpdatedAt;
}

loading、error、鮮度を表示する

loading中はボタンを無効にし、金額、rate、source、session、観測時刻、アプリcache age、観測ageを表示します。

表示用に丸める

JPYは小数0桁、USD・EUR・GBP・IDRは2桁、rateは6桁で表示します。値は保持し、決済記録に表示値を使いません。

モバイルの認証情報は公開される
obfuscationやprivate repositoryでも配布後のkeyは秘密になりません。proxy境界は設計の一部です。

顧客経路をテストする

timeout、401/429、壊れたJSON、rate欠落、古いdata_updated_atを実機またはemulatorで確認します。ファイルはclient例でありhosted proxyではありません。

指標レートのみ
換算推定、表示、分析用です。決済システムは独自のquoteと記録を保持します。
ER
exchangerate.dev
FXデータを使う開発者向けの統合ガイドです。

関連記事

TutorialJavaScriptとNode.jsで通貨を変換する読む リファレンス為替レートAPIクイックスタート読む TutorialPythonで為替レートアラートを作る読む
他の比較Fixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
学ぶECB参照レートの解説JavaScriptとNode.jsによる通貨換算Pythonで為替レートを取得する方法
ライブレートEUR/USDGBP/USDUSD/JPY