Files
MABEA/flutter_app
patrickandClaude Sonnet 5 d8d2816758
CI / backend-tests (push) Successful in 1m1s
CI / frontend-build (push) Successful in 21s
Karte 10: Kamera-Scan in Flutter-App (Objekt-Code, Scan-First-Einstieg)
ScannerScreen auf mobile_scanner, Treffer springt direkt ins KontrollScreen,
sonst Fallback ins bestehende Suchfeld. Kamera-Berechtigung (Android Manifest/
iOS Info.plist) im README dokumentiert, da android/ios-Ordner generiert und
nicht im Repo sind.

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

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) 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):

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>:

<uses-permission android:name="android.permission.CAMERA" />

Für iOS entsprechend in ios/Runner/Info.plist:

<key>NSCameraUsageDescription</key>
<string>Wird zum Scannen von Objekt-/Geräte-Codes benötigt.</string>

Bewusst noch nicht umgesetzt (Unterschied zur React-PWA)

  • Keine Offline-Queue: anders als die PWA (frontend/src/offline/queue.ts, IndexedDB) sendet diese erste Fassung Positionen direkt; bei Netzwerkfehler erscheint nur eine "erneut versuchen"-Meldung, keine automatische Zwischenspeicherung/Sync bei Reconnect. Nachziehen, sobald die App über das Grundgerüst hinauswächst - gleiches Muster wie in der PWA übertragbar (z. B. sqflite oder hive statt IndexedDB).
  • Keine Tests (Flutter-Widget-/Integrationstests) - Sprintplan sieht Testphase 4 primär für die PWA vor (Playwright); Android-Testabdeckung ist noch offen.