import 'package:firebase_database/firebase_database.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:provider/provider.dart'; import 'providers/auth_provider.dart'; import 'providers/sensor_provider.dart'; import 'providers/ac_provider.dart'; import 'providers/ac_config_provider.dart'; import 'providers/ac_setup_provider.dart'; import 'providers/history_provider.dart'; import 'providers/notification_provider.dart'; import 'providers/ir_provider.dart'; import 'services/notification_service.dart'; import 'core/app_theme.dart'; import 'screens/login_page.dart'; import 'firebase_options.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); // setPersistenceEnabled hanya untuk mobile/desktop, tidak untuk web if (!kIsWeb) { FirebaseDatabase.instance.setPersistenceEnabled(true); } // Inisialisasi layanan notifikasi lokal (push notification OS) await NotificationService.initialize(); // Test write ke database tanpa memblokir startup utama FirebaseDatabase.instance .ref('test') .set({'message': 'Flutter Connected', 'time': DateTime.now().toString()}) .catchError((e) { debugPrint('Firebase write error: $e'); }); runApp(const AirQuality()); } class AirQuality extends StatelessWidget { const AirQuality({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => AuthProvider()), ChangeNotifierProvider(create: (_) => SensorProvider()), ChangeNotifierProvider(create: (_) => ACProvider()), ChangeNotifierProvider(create: (_) => ACConfigProvider()), ChangeNotifierProvider(create: (_) => ACSetupProvider()), ChangeNotifierProvider(create: (_) => HistoryProvider()), ChangeNotifierProvider(create: (_) => NotificationProvider()), ChangeNotifierProvider(create: (_) => IrProvider()), ], child: MaterialApp( debugShowCheckedModeBanner: false, title: 'Smart Air Quality', theme: AppTheme.darkTheme, home: const LoginPage(), ), ); } }