TKK_E32232282/Source Code Mobile/main.dart

70 lines
2.3 KiB
Dart

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(),
),
);
}
}