implements notification

This commit is contained in:
2025-04-24 18:48:12 +05:30
parent 31cc1b9c15
commit 029b71a247
34 changed files with 1724 additions and 705 deletions

View File

@@ -1,7 +1,11 @@
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:grocery_app/src/core/network_services/service_locator.dart';
import 'package:grocery_app/src/core/routes/routes.dart';
import 'package:grocery_app/src/firebase_options.dart';
import 'package:grocery_app/src/logic/provider/addTocart_provider.dart';
import 'package:grocery_app/src/logic/provider/address_provider.dart';
import 'package:grocery_app/src/logic/provider/auth_provider.dart';
@@ -9,20 +13,70 @@ import 'package:grocery_app/src/logic/provider/bottom_navbar_provider.dart';
import 'package:grocery_app/src/logic/provider/home_provider.dart';
import 'package:grocery_app/src/logic/provider/order_provider.dart';
import 'package:grocery_app/src/logic/provider/profile_provider.dart';
import 'package:grocery_app/src/logic/services/notification_service.dart';
import 'package:grocery_app/src/ui/splash/splash_screen.dart';
import 'package:grocery_app/utils/constants/color_constant.dart';
import 'package:grocery_app/utils/constants/string_constant.dart';
import 'package:loader_overlay/loader_overlay.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
//change the location and many tings
void main() {
@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
print("💬 Background Message Received: ${message.notification?.title}");
if (message.notification != null) {
NotificationService.flutterLocalNotificationsPlugin.show(
message.hashCode,
message.notification!.title,
message.notification!.body,
const NotificationDetails(
android: AndroidNotificationDetails(
'high_importance_channel',
'High Importance Notifications',
channelDescription: 'Used for important notifications.',
importance: Importance.max,
priority: Priority.high,
),
),
);
}
}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
await NotificationService.init();
ServiceLocator.setup();
await requestNotificationPermission();
runApp(const MyApplication());
}
Future<void> requestNotificationPermission() async {
PermissionStatus status = await Permission.notification.status;
if (status.isDenied || status.isPermanentlyDenied) {
status = await Permission.notification.request();
}
if (status.isGranted) {
print("✅ Notification permission granted");
} else if (status.isPermanentlyDenied) {
print("⚠️ Notification permission permanently denied. Open settings.");
openAppSettings();
} else {
print("❌ Notification permission denied.");
}
}
class MyApplication extends StatelessWidget {
const MyApplication({super.key});