- Edited
Flutter fcm kullanarak navigasyon işlemleri yapmam gerekiyor.Fcm işleyen bir servisim var ve bu servis beni uygulama arka planda olduğunda ya da direkt olarak açık olduğunda hedef sayfaya yönlendiriyor fakat uygulama kapalı iken bu bildirime bastığımda beni ana safyama yönlendiriyor navigasyon işlemleri için go_router paketini kullanıyorum
`// Data alanını işle (payload)
void _handlePayload(Map<String, String> payload) async {
//final Uri googleMapsUrl = Uri.parse(
// “https://www.google.com/maps/search/?api=1&query=${payload[‘latitude’]},${payload[‘longitude’]}”);
//if (await canLaunchUrl(googleMapsUrl)) {
// await launchUrl(googleMapsUrl, mode: LaunchMode.externalApplication);
//} else {
// print("Google Haritalar açılamadı.");
//google map
if (payload["notificationType"] ==
NotificationTypeEnum.callForHelp.index.toString()) {
var locationModel = LocationModel(
latitude: double.tryParse(payload["latitude"].toString()),
longitude: double.tryParse(payload["longitude"].toString()),
markerId: payload["markerId"],
iconPath: payload["iconPath"]);
Map<String, dynamic> data = {
"route": payload["route"]!,
"locationModel": locationModel
};
if (routerKey.currentContext != null) {
GoRouter.of(routerKey.currentContext!)
.go(payload["route"]!, extra: locationModel);
} else {
Future.delayed(const Duration(milliseconds: 200), () {
if (routerKey.currentContext != null) {
GoRouter.of(routerKey.currentContext!)
.go(AppRoutes.splashScreen, extra: data);
}
});
}
//private message
} else if (payload["notificationType"] ==
NotificationTypeEnum.privateMessage.index.toString()) {
var userId = payload["userId"];
var connectionId = payload["connectionId"];
var privateConversationId =
int.tryParse(payload["privateConversationId"].toString());
final Map<String, dynamic> args = {
"userId": userId,
"connectionId": connectionId,
"privateConversationId": privateConversationId
};
if (routerKey.currentContext != null) {
GoRouter.of(routerKey.currentContext!).push(
'${AppRoutes.explorePage}/${AppRoutes.myPrivateMessagesPage}/${AppRoutes.privateChatPage}',
extra: args);
} else {
Future.delayed(const Duration(milliseconds: 200), () {
if (routerKey.currentContext != null) {
GoRouter.of(routerKey.currentContext!).push(
'${AppRoutes.explorePage}/${AppRoutes.myPrivateMessagesPage}/${AppRoutes.privateChatPage}',
extra: args);
}
});
}
}
}`
bildirimleri işleyen fonksiyonum burada