DBR Index Projekt Dokumentáció
1. Projekt áttekintés & Architektúra
A DBR Index egy többplatformos Flutter alkalmazás Android, iOS, Windows, macOS, Linux és Web platformokra. Lehetővé teszi a DBR Index megtekintését, szavazást, részvétel kezelését. Funkciók: eszközinformáció-gyűjtés, biztonságos tárolás, API kommunikáció (izolátumokkal), lokalizáció, reszponzív UI.
Architektúra diagram
2. Könyvtár- és fájlstruktúra
- lib/: Fő Dart forráskód (UI, kontrollerek, modellek, API logika)
- assets/: Képek, CSV-k, erőforrások
- android/, ios/, windows/, linux/, macos/: Platformspecifikus kód/konfig
- web/: Web build fájlok
- test/: Unit/widget tesztek
- pubspec.yaml: Projekt konfiguráció, függőségek
- README.md: Projekt bemutatás
Könyvtárstruktúra diagram
3. Fő alkalmazásfolyam
- Az alkalmazás a
main()-ben indul (lib/main.dart) - Inicializálja a tárolást, tanúsítványokat, eszköz orientációt
- Elindítja a
MainAppwidgetet, betölti aMainFrame-et - A
HomePagebetölti az eszközinformációkat, ellenőrzi a hálózatot, betölti az adatokat - A UI frissül árfolyamokkal, szavazással, felhasználói adatokkal
Indítási szekvencia
4. Fő adatmodellek
- PublicPrivateData: Felhasználói és szavazási adatok
- Roundtrip: API roundtrip naplók
- EventLog: Alkalmazás eseménynaplók
- VoteRecordsProcessor: Szavazási rekordok
- VARecordsProcessor: Voting assistant rekordok
- CCRecordsProcessor: Kredit/kupon rekordok
Adatmodell kapcsolatok
5. Hálózatkezelés & izolátumok
A hálózati kéréseket a dio csomag kezeli. Az API hívások izolátumokban futnak (lib/apinetisolates/). Minden API művelethez dedikált izolátum kontroller tartozik, amely kezeli az újrapróbálást és hibakezelést.
Izolátum-alapú API hívás folyamata
6. Állapotkezelés
Az állapotot globális konfiguráció (lib/controllers/globalconfig.dart), helyi tárolás (shared_preferences, secure storage) és memóriabeli állapot (widgetekben) kezeli.
7. UI oldalak és navigáció
- HomePage: Főoldal, szavazás, árfolyamok
- SettingsPage: Beállítások, nyelv, VA konfiguráció
- InfoPage: Alkalmazás információ, verzió, eszközadatok
- StatPage: Statisztika, előzmények
- ActivationPage: Aktivációs kód megadása
- FssIssuePage: Adat-visszaállítás figyelmeztetés
Navigációs folyamatábra
8. Szavazás és kapcsoló logika
A szavazást a _pressVote metódus kezeli a HomePage-en, amely izolátumon keresztül küldi a szavazatot a backendnek. A VA kapcsolók is hasonlóan működnek. Mindkettő frissíti a helyi állapotot és API hívást indít, hibák esetén párbeszédablak jelenik meg.
9. Tartós tárolás
A shared_preferences és flutter_secure_storage csomagokat használja felhasználói/eszköz adatok, szavazatok, beállítások, aktivációs kódok tárolására.
10. Lokalizáció és nyelvkezelés
A lokalizáció CSV fájlokkal történik (assets/data/locales-keywords.csv). Az alkalmazás futásidőben tölti be a nyelvi sztringeket, a felhasználó választhat nyelvet. A Languages kontroller kezeli a fordításokat.
11. Hibakezelés és naplózás
A hibák és naplók dedikált adat osztályokban gyűlnek, majd API izolátumokon keresztül kerülnek a backendre. A felhasználói hibák párbeszédablakban jelennek meg, a hálózati/szerver hibák naplózódnak.
12. Platformspecifikus részletek
- Android:
android/, Gradle konfigurációk, AndroidManifest.xml - iOS:
ios/, Xcode projekt, Info.plist, storyboards - Windows/Linux/macOS:
windows/,linux/,macos/, CMake konfigurációk - Web:
web/, index.html, manifest.json
13. Build, futtatás és tesztelés
- Fordítás/futtatás:
flutter run - Platformra fordítás:
flutter build <platform> - Tesztelés:
flutter test
14. Erőforrások
Erőforrások: képek (ikonok), lokalizációs CSV-k, tanúsítványok. A pubspec.yaml-ban hivatkozva, futásidőben töltődnek be.
15. Biztonság
Az érzékeny adatok (API kulcsok, eszköz ID-k) a flutter_secure_storage-ban tárolódnak, sosem kerülnek a UI-ba. A backenddel való kommunikáció HTTPS-en keresztül történik, eszközinformáció csak szükség esetén kerül elküldésre.
16. Bővítés és karbantartás
- Kövesd a moduláris struktúrát (kontrollerek, modellek, UI widgetek)
- Új funkciókat külön widgetben/kontrollerben adj hozzá
- Frissítsd a lokalizációs fájlokat új UI szövegekhez
- Írj teszteket a
test/könyvtárba - Tartsd naprakészen a függőségeket a
pubspec.yaml-ban