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
Initialisierung:
- Lädt Umgebungsvariablen und Plattform-spezifische Konfigurationen (
sqfliteFfifü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).
- Lädt Umgebungsvariablen und Plattform-spezifische Konfigurationen (
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).
- Definiert alle Navigationspfade (Routes) der App (z.B.
App State & Theme:
- Verbindet den
AppStatemit der UI viaProvider. - Setzt das Farbschema basierend auf der aktuellen Rolle (Grün für Scouts, Blau für Teams, etc.).
- Verbindet den
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'
);