Datenbank & Models
Die App nutzt sqflite (SQLite) als lokale Datenbank. Alle relevanten Klassen befinden sich in lib/database/ und lib/models/.
DatabaseHelper (lib/database/database_helper.dart)
Der DatabaseHelper ist ein Singleton, das den Zugriff auf die SQLite-Datenbank verwaltet.
Kernfunktionen
- Init: Erstellt Tabellen (
reports,events,groups,images…) und führt Migrationen (_onUpgrade) durch. - CRUD: Bietet Methoden zum Erstellen, Lesen, Aktualisieren und Löschen (Soft-Delete) von Daten.
- Sync: Methoden wie
getUnsyncedReports()undmarkReportsAsSynced()steuern den Datenaustausch. - Import/Export: Hilfsfunktionen zum Importieren von Backups und ZIP-Paketen.
Report Model (lib/models/report.dart)
Das Report Model ist das Herzstück der Anwendung. Es repräsentiert einen erfassten Baum.
Wichtige Felder
id: Eindeutige UUID.status: Der aktuelle Zustand (z.B.erfasst,geplant,geschnitten).severity: Befallsstärke (1-3).finders: Liste der Personen, die den Baum gefunden haben (Datenschutz-konform).image_paths: Lokale Pfade zu den Bildern.is_synced: Status der Synchronisation mit dem Server.
Serialisierung
Die Methoden toMap() und fromMap() wandeln das Dart-Objekt in eine JSON-Map für die Datenbank oder API um.