implements notification
This commit is contained in:
@@ -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});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user