Este equipo de especialistas pasados varios días de trabajo y de recopilar de información, encontramos la respuesta, esperamos que resulte útil para ti para tu trabajo.
Solución:
Tengo algo como esto, en mi clase FCM:
static StreamController
Mi main.dart
se suscribe a la transmisión onFcmMessage, pero no necesita transmisiones para hacer todo esto. Además, necesita algún código para manejar la falla y el cierre de la transmisión.
Pero cuando la aplicación pasa a primer plano, recibe el mensaje en onMessage
devolución de llamada o el onLaunch
o onResume
llamar de vuelta. Comprueba sus diferencias en los documentos de pub flutter de FCM.
Los métodos handlePath
y handlePathByRoute
son métodos que normalmente mi main.dart u otras clases que escuchan las notificaciones llaman para obtener la ruta a la que enrutar, pero simplemente puede llamarlos directamente reemplazando el código de flujo aquí como:
static setupFCMListeners()
print("Registered FCM Listeners");
_firebaseMessaging.configure(
onMessage: (Map message) async
print("Message: $message"); // Not handling path since on notification in app it can be weird to open a new page randomly.
,
onLaunch: (Map message) async
handlePath(message);
,
onResume: (Map message) async
handlePath(message);
,
);
Honestamente, puede que ni siquiera sea el mejor o incluso un buen enfoque, pero debido a la falta de documentación, esto es con lo que estoy trabajando por ahora. ¡Me encantaría probar el enfoque de Günter Zöchbauer y ahorrar algo de creación de objetos si es posible!
¡Espero que esto sea útil! 🙂
EDITAR: Profile
, EventInfo
y MessagingView
son tres clases que se extienden StatefulWidget
lo siento si eso no fue claro.
También puede intentar usar rutas con nombre, lo hacen más fácil como las rutas api y evitan muchas importaciones y tienen un enrutador central, pero AFAIK carecían de configuraciones de transición.
Reseñas y calificaciones
Si te ha resultado de ayuda este post, sería de mucha ayuda si lo compartes con el resto programadores de esta forma contrubuyes a extender nuestro contenido.