import 'package:flutter/material.dart'; import 'package:audio_service/audio_service.dart'; import 'database/db_helper.dart'; import 'services/favoriten_service.dart'; import 'services/auth_service.dart'; import 'services/melo_logger.dart'; import 'services/audio_handler.dart'; import 'utils/farb_theme.dart'; import 'screens/home_screen.dart'; import 'screens/login_screen.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // Logger startet sofort – zeichnet ALLES auf MeloLogger().init('2.31'); try { await DbHelper().db; await FavoritenService().init(); // Hintergrund-Audio-Service starten await AudioService.init( builder: () => MeloAudioHandler(), config: const AudioServiceConfig( androidNotificationChannelId: 'de.baka.melo.audio', androidNotificationChannelName: 'Melo Wiedergabe', androidNotificationOngoing: true, ), ); MeloLogger().zustand('start_ok', {'db': 'ok', 'audio': 'ok'}); } catch (e, stack) { MeloLogger().fehler('App-Start', e, stack); } // Auth initialisieren (Token aus SharedPreferences laden) await AuthService().initialisieren(); runApp(const MeloApp()); } class MeloApp extends StatelessWidget { const MeloApp({super.key}); @override Widget build(BuildContext context) { final auth = AuthService(); return MaterialApp( title: 'Melo', debugShowCheckedModeBanner: false, theme: MeloTheme.theme, home: auth.istEingeloggt ? const Scaffold(body: MeloHome()) : const LoginScreen(), ); } }