Files
MABEA/flutter_app/README.md
T
patrickandClaude Sonnet 5 c68d39b45f
CI / backend-tests (push) Successful in 1m5s
CI / frontend-build (push) Successful in 22s
Flutter: Offline-Queue für Kontroll-Erfassung (Prompt 17-Härtung)
lib/offline/queue.dart (sqflite) analog zur React-PWA-Queue: enqueue statt
Direkt-Senden, Status wartet/wird_uebertragen/fehler, Idempotenz, Sync bei
Reconnect (connectivity_plus) + periodisch alle 15s. KontrollScreen gleicht
per 2s-Reconciliation-Loop den Anzeigezustand ab, "Kein Netz"-Banner.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-04 18:36:10 +02:00

61 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MABEA Android-App (Flutter) erstes Grundgerüst
Zweiter Client derselben API (Prompt 19 API-first-Prinzip) neben der React-PWA
(`frontend/`). Deckt Login, Objektliste, Kontroll-Screen (Start/Sperre-Übernahme/
Positionen/Abschluss/Abbruch) sowie eine Offline-Queue (Prompt 17-Härtung,
`lib/offline/queue.dart`, sqflite) ab.
## Wichtig: Plattform-Ordner fehlen noch
Dieses Verzeichnis enthält nur `lib/`, `pubspec.yaml`, `analysis_options.yaml` -
die von `flutter create` generierten Plattform-Ordner (`android/`, `ios/`, Gradle-
Konfiguration etc.) wurden bewusst NICHT von Hand nachgebaut, da das ohne
Testlauf zu fehleranfällig wäre. Erstinbetriebnahme auf dem Zielsystem (mit
Flutter-SDK installiert):
```bash
cd flutter_app
flutter create . --platforms android --org de.perlbach24 --project-name mabea_app
# überschreibt pubspec.yaml NICHT automatisch mit *nix cp -n, ggf. lib/-Inhalt
# und pubspec.yaml-Dependencies danach gegen diese Version abgleichen
flutter pub get
flutter build apk
```
## API-Adresse
`lib/main.dart`: `kApiBaseUrl` ist aktuell fest auf den Deployment-Server
(`192.168.1.238`) gesetzt. Für Produktivbetrieb auf `--dart-define` umstellen
oder zumindest vor jedem Build prüfen/anpassen.
## Kamera-Berechtigung (Kamera-Scan, Karte 10)
`mobile_scanner` braucht die Kamera-Berechtigung im generierten `android/`-Ordner
(existiert erst nach `flutter create .`, siehe oben) - nach dem Erstlauf einmalig
in `android/app/src/main/AndroidManifest.xml` ergänzen, oberhalb von `<application>`:
```xml
<uses-permission android:name="android.permission.CAMERA" />
```
Für iOS entsprechend in `ios/Runner/Info.plist`:
```xml
<key>NSCameraUsageDescription</key>
<string>Wird zum Scannen von Objekt-/Geräte-Codes benötigt.</string>
```
## Offline-Queue (Prompt 17-Härtung)
`lib/offline/queue.dart`: Positionen werden lokal in sqflite zwischengespeichert
(`enqueue`), Status je Eintrag (`wartet`/`wird_uebertragen`/`fehler`), Sync bei
Reconnect (`connectivity_plus`) und periodisch alle 15s - gleiches Muster wie
`frontend/src/offline/queue.ts` (IndexedDB), nur die lokale DB ist anders.
`KontrollScreen` gleicht per 2s-Reconciliation-Loop den Anzeigezustand mit der
Queue ab, Abschluss ist gesperrt, solange Einträge offen sind.
## Bewusst noch nicht umgesetzt (Unterschied zur React-PWA)
- Keine Tests (Flutter-Widget-/Integrationstests) - Sprintplan sieht Testphase 4
primär für die PWA vor (Playwright); Android-Testabdeckung ist noch offen.