简体   繁体   中英

Prevent main.dart on FCM onLaunch

Is there a proper way/flutter-firebase guidelines to prevent a flutter app to re-start from main.dart when loading from onLaunch() of FCM firebase notification.

I can see, onLaunch being triggered but soon main.dart overrides it.

_fcm.configure(
  // Called when the app is in the foreground and we receive a push notification
  onMessage: (Map<String, dynamic> message) async {
    print('onMessage: $message');
  },
  // Called when the app has been closed comlpetely and it's opened
  // from the push notification.
  onLaunch: (Map<String, dynamic> message) async {
    print('onLaunch: $message');
    _serialiseAndNavigate(message); //THIS WORKS , BUT SUDDENLY main.dart KICKS IN .
  },
  // Called when the app is in the background and it's opened
  // from the push notification.
  onResume: (Map<String, dynamic> message) async {
    print('onResume: $message');
    _serialiseAndNavigate(message);
  },
);

When you click on the FCM notification, app is likely to be launch from onLaunch method and it does invoke the main.dart . I would suggest please try to inject fcm.configure() not in main.dart , instead you can inject in whatever stateful widget/screen you want to invoke the screen directly to launch when notification gets clicked ( onLaunch ).

ex:-> main.dart -> homescreen.dart -> somescreen -> forever flow

if you want to invoke onLaunch to open homescreen.dart, run the fcm.configure() to homescreen.dart -> initState

Remember it will also run main.dart at first as flutter starts the flow of the app from main.dart itself, you cannot change it I guess, but on notification tap it will not open main.dart, instead it will launch homescreen.dart.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM