Learn/Szybki start Flutter

Budowa konwertera walut Flutter z kluczem API po stronie serwera

Zbuduj typowany konwerter Flutter, który pobiera przez własny proxy kurs FX ze źródłem, pokazuje ładowanie i błędy, podaje wiek cache i zaokrągla dopiero przy wyświetlaniu.

ERexchangerate.dev·Sep 29, 2026·8 min czytania

Mobilna aplikacja Flutter jest publicznym klientem i nie może zawierać klucza bearer exchangerate.dev. Umieść klucz w małym serwerowym proxy /api/fx, poproś Flutter o {from,to} i przechowuj kurs, źródło, sesję rynku oraz czas obserwacji razem w typowanym modelu.

Najważniejsze punkty
Pobrany plik Dart wywołuje Twój proxy, nigdy klucz API exchangerate.dev z aplikacji.
Model odpowiedzi sprawdza rate i data_updated_at przed renderowaniem.
Ładowanie, błędy HTTP/formatu, źródło, sesja rynku i wiek cache są widoczne.
Widok używa stałej liczby miejsc, a niezaokrąglona wartość API pozostaje dostępna dla kodu.
Kursy orientacyjne służą do estymacji i prezentacji; rozliczenie należy do odpowiedzialnego dostawcy płatności.

Umieść poświadczenie za serwerem

Trasa serwerowa przyjmuje from i to, dodaje Authorization: Bearer $EXCHANGERATE_API_KEY, wywołuje /v1/latest/{from}?symbols={to} i zwraca tylko pola potrzebne aplikacji. Klucz trzymaj w środowisku serwera. Aplikacja przekazuje URL proxy przez --dart-define=FX_PROXY_BASE_URL=…; nigdy nie otrzymuje klucza upstream.

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"}

Dodaj zależność HTTP

Utwórz aplikację Flutter, dodaj aktualny pakiet http do pubspec.yaml i zapisz kompletny konwerter Flutter jako lib/main.dart. Uruchom flutter run --dart-define=FX_PROXY_BASE_URL=https://your-app.example/api/fx. Pobierz minimalny proxy Node, ustaw EXCHANGERATE_API_KEY w środowisku serwera i uruchom node flutter-currency-converter-proxy.mjs na Node 20 lub nowszym. Do lokalnych testów nasłuchuje na loopback porcie 8787. Przed podłączeniem urządzenia wystaw własny uwierzytelniony backend HTTPS z limitami żądań; plik sprawdza waluty i kwotę, przekazuje klucz i zwraca tylko potrzebne typowane pola. Używa standardowych widgetów Flutter Material i typowanego modelu FxQuote. Oficjalny przepis Flutter dotyczący sieci opisuje konfigurację pakietu i wzorzec żądania.

Sprawdź kurs przed renderowaniem

Model odrzuca brakujący, niedodatni, nieskończony lub nienumeryczny rate oraz brakujące data_updated_at. Dzięki temu strona HTML z błędem, błąd proxy albo pusty JSON nie trafią do widoku konwersji. Klient ogranicza również żądanie do dziesięciu sekund i pokazuje statusy inne niż 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;
}

Pokaż ładowanie, błędy i świeżość

Ekran wyłącza przycisk podczas żądania, pokazuje wskaźnik postępu i zachowuje czytelny błąd po awarii proxy. Po sukcesie pokazuje kwotę, kurs, źródło, sesję rynku, czas obserwacji, wiek cache aplikacji (od załadowania odpowiedzi przez urządzenie) i wiek obserwacji (od data_updated_at). Użytkownik widzi, czy dane pochodzą z dnia handlowego, czy są dzienną referencją.

Zaokrąglaj do prezentacji, zachowaj wartość

Dla walut obsługiwanych w przykładzie JPY pokazuj bez miejsc dziesiętnych, a USD, EUR, GBP i IDR z 2; kurs pokazuj z 6 miejscami. To zaokrąglenie prezentacji. Zachowaj sparsowaną wartość liczbową i użyj strategii dziesiętnej lub fixed-point w produkcyjnym księgowaniu; nie używaj binarnej wartości z widoku jako rejestru rozliczenia.

Poświadczenia mobilne są publiczne
Obfuskacja, stałe kompilacji i prywatne repozytorium Flutter nie utrzymują tajemnicy klucza po wydaniu aplikacji. Granica proxy jest częścią projektu, a nie opcjonalnym wzmocnieniem.

Przetestuj ścieżkę klienta

Uruchom aplikację z testową odpowiedzią proxy, a następnie sprawdź timeout, HTTP 401/429, zły JSON, brak kursu i stare data_updated_at. Sieć, TLS i wdrożenie proxy specyficzne dla Flutter wymagają też testu na prawdziwym urządzeniu lub emulatorze; plik jest uruchamialnym przykładem klienta, nie hostowanym proxy.

Tylko kursy orientacyjne
Używaj wyniku do estymacji konwersji, prezentacji i analiz. Dostawca płatności lub system regulowany musi uzyskać i zachować własną wykonalną wycenę oraz rejestr rozliczenia.
ER
exchangerate.dev
Przewodniki integracji dla programistów korzystających z danych FX.

Czytaj dalej

ReferenceSzybki start API kursów walutCzytaj TutorialBudowa alertu kursowego w PythonieCzytaj
Więcej porównańFixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
PoradnikiKursy walut w Next.js i TypeScriptAlert kursów walut w Pythonie: USD/IDRKursy walut w Go przez net/http
Kursy na żywoEUR/USDGBP/USDUSD/JPY