fix: add project contents
This commit is contained in:
114
HackOnLinces_app/aplicacion_hack/lib/main.dart
Normal file
114
HackOnLinces_app/aplicacion_hack/lib/main.dart
Normal file
@@ -0,0 +1,114 @@
|
||||
// ================================================================
|
||||
// main.dart — EcoTrack
|
||||
// Sistema de Notificacion Privada de Recoleccion de Residuos
|
||||
// ================================================================
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'screens/login_screen.dart';
|
||||
import 'screens/home_screen.dart';
|
||||
import 'screens/route_list_screen.dart';
|
||||
import 'screens/info_screen.dart';
|
||||
import 'screens/analytics_screen.dart';
|
||||
import 'screens/reporte_screen.dart';
|
||||
import 'screens/mapa_rutas_screen.dart';
|
||||
import 'firebase_options.dart';
|
||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
|
||||
const AndroidNotificationChannel _canal = AndroidNotificationChannel(
|
||||
'ecotrack_canal',
|
||||
'EcoTrack Notificaciones',
|
||||
description: 'Notificaciones del camión de basura',
|
||||
importance: Importance.high,
|
||||
);
|
||||
|
||||
final FlutterLocalNotificationsPlugin _localNotifications =
|
||||
FlutterLocalNotificationsPlugin();
|
||||
|
||||
@pragma('vm:entry-point')
|
||||
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
|
||||
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
|
||||
}
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
|
||||
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
|
||||
|
||||
// DESPUÉS
|
||||
final androidPlugin =
|
||||
_localNotifications.resolvePlatformSpecificImplementation<
|
||||
AndroidFlutterLocalNotificationsPlugin>();
|
||||
await androidPlugin?.createNotificationChannel(_canal);
|
||||
|
||||
await _localNotifications.initialize(
|
||||
const InitializationSettings(
|
||||
android: AndroidInitializationSettings('@mipmap/ic_launcher'),
|
||||
),
|
||||
);
|
||||
|
||||
// ← EL QUE TE FALTABA
|
||||
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
|
||||
final notification = message.notification;
|
||||
if (notification == null) return;
|
||||
_localNotifications.show(
|
||||
notification.hashCode,
|
||||
notification.title,
|
||||
notification.body,
|
||||
NotificationDetails(
|
||||
android: AndroidNotificationDetails(
|
||||
_canal.id,
|
||||
_canal.name,
|
||||
channelDescription: _canal.description,
|
||||
importance: Importance.high,
|
||||
priority: Priority.high,
|
||||
icon: '@mipmap/ic_launcher',
|
||||
),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
await FirebaseMessaging.instance.requestPermission(
|
||||
alert: true,
|
||||
badge: true,
|
||||
sound: true,
|
||||
);
|
||||
|
||||
runApp(const EcoTrackApp());
|
||||
}
|
||||
|
||||
class EcoTrackApp extends StatelessWidget {
|
||||
const EcoTrackApp({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
title: 'EcoTrack',
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: ThemeData(
|
||||
colorScheme: ColorScheme.fromSeed(
|
||||
seedColor: const Color(0xFF2E7D32),
|
||||
brightness: Brightness.light,
|
||||
),
|
||||
useMaterial3: true,
|
||||
fontFamily: 'Roboto',
|
||||
appBarTheme: const AppBarTheme(
|
||||
centerTitle: false,
|
||||
elevation: 0,
|
||||
),
|
||||
),
|
||||
initialRoute: '/',
|
||||
routes: {
|
||||
'/': (context) => const LoginScreen(),
|
||||
'/home': (context) => const HomeScreen(),
|
||||
'/routes': (context) => const RouteListScreen(),
|
||||
'/info': (context) => const InfoScreen(),
|
||||
'/analytics': (context) => const AnalyticsScreen(),
|
||||
'/reporte': (context) => const ReporteScreen(),
|
||||
'/mapa': (context) => const MapaRutasScreen(),
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user