main.dart

Die Datei lib/main.dart ist der Einstiegspunkt (“Entry Point”) der MistelMonitor App. Sie initialisiert die Anwendung, konfiguriert das Routing und setzt grundlegende Services auf.

Hauptaufgaben

  1. Initialisierung:

    • Lädt Umgebungsvariablen und Plattform-spezifische Konfigurationen (sqfliteFfi für Desktop).
    • Startet den Offline-Karten-Speicher (FMTC).
    • Lädt den globalen AppState (Benutzerrolle, Nickname).
    • Führt Wartungsaufgaben durch (z.B. Status-Updates alter Berichte).
  2. Routing (GoRouter):

    • Definiert alle Navigationspfade (Routes) der App (z.B. /overview, /report).
    • Redirect Logic: Leitet neue Nutzer automatisch zum Setup (/setup) oder zum Splashscreen (/splash).
    • ShellRoute: Implementiert die persistente untere Navigationsleiste (BottomNavigationBar).
  3. App State & Theme:

    • Verbindet den AppState mit der UI via Provider.
    • Setzt das Farbschema basierend auf der aktuellen Rolle (Grün für Scouts, Blau für Teams, etc.).
  4. Hintergrund-Dienste:

    • Startet das Geofencing für Teammitglieder (Warnung beim Verlassen des Sektors).
    • Initialisiert Benachrichtigungen.

Code-Struktur

void main() async {
  // 1. Setup & Init
  runZonedGuarded(() async {
    // ... DB Init, FMTC Init ...
    runApp(MyApp());
  }, (error, stack) {
    // Global Error Handling
  });
}

class MyApp extends StatefulWidget {
  // Verwaltet globalen State Listener & Geofencing
}

final _router = GoRouter(
  // Definiert Routen wie '/report', '/overview'
);