5

I have successfully setup background notifications and tested it using postman and all is good.

Now I need to access Provider.of(context) in my backgroundHandler which must be a static method where there is no context.

All I need to do is to perform an action according to the data in the background notification.

Here is my code for initializing FCM (I do it in Splash screen)

Future<void> initFcm() async {

_firebaseMessaging.configure(
  onBackgroundMessage: myBackgroundMessageHandler,
  onMessage: (msg) async {
    print('this is ONMESSAGE $msg');
  },
  onLaunch: (msg) async {
    print('ON LAUNCH');
  },
  onResume: (msg) async {
    print('ON RESUME');
  },
);

// For testing purposes print the Firebase Messaging token
 deviceToken = await _firebaseMessaging.getToken();
 print("FirebaseMessaging token: $deviceToken");
}


static Future<dynamic> myBackgroundMessageHandler(
  Map<String, dynamic> message) async {
print(message);

if (message.containsKey('data')) {
  // Handle data message
  final dynamic data = message['data'];
   final orderId = data['order_id'];

   //THE PROBLEM IS THAT HERE I DON'T HAVE CONTEXT (coz static method)
   Provider.of<Orders>(context, listen: false).setBackgroundStatus(orderId);
      
}

if (message.containsKey('notification')) {
  // Handle notification message
  final dynamic notification = message['notification'];
}

// Or do other work.
}

My question is how can I handle tasks in provider in my backgroundHandler which is a static method that doesn't have context?

General Grievance
  • 4,555
  • 31
  • 31
  • 45
AhWagih
  • 485
  • 5
  • 14

0 Answers0