Я использую firebase_messaging для получения push-уведомлений в приложении. Я отправляю вместе с уведомлением маршрут для отображения определенной страницы при нажатии на уведомление с помощью flutter_local_notification как это:
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) {
print('on message $message');
print(message['route']);
globals.firebaseIn(message['route']);
},
onResume: (Map<String, dynamic> message) {
print('on resume $message');
globals.firebaseOut(message['route']);
},
onLaunch: (Map<String, dynamic> message) {
print('on launch $message');
globals.firebaseOut(message['route']);
},
);
void firebaseIn(String route) {
showNotificationWithDefaultSound(route);
}
Future onSelectNotification(String payload) async {
router.navigateTo(currentContext, payload,
transition: TransitionType.inFromRight,
transitionDuration: const Duration(milliseconds: 500));
}
Future showNotificationWithDefaultSound(String route) async {
var androidPlatformChannelSpecifics = new
AndroidNotificationDetails(
'your channel id', 'your channel name', 'your channel description',
importance: Importance.Max, priority: Priority.High);
var iOSPlatformChannelSpecifics = new IOSNotificationDetails();
var platformChannelSpecifics = new NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
'استطلاع جديد',
'لديك استطلاع جديد',
platformChannelSpecifics,
payload: route,
);
}
void firebaseOut(String route) {
router.navigateTo(currentContext, route,
transition: TransitionType.inFromRight,
transitionDuration: const Duration(milliseconds: 500));
}
Это прекрасно работает, когда уведомление получено, когда приложение открыто ... но когда приложение работает в фоновом режиме или закрыто и уведомление получено, при нажатии на уведомление приложение откроется в своем состоянии из фона. или с самого начала, если он был закрыт ...
Я хочу, чтобы при нажатии на уведомление открывался конкретный маршрут, даже если он был в фоновом режиме или закрыт .. как это сделать? Есть ли способ добиться этого во флаттере?