What I did :
- I have integrated FCM (Firebase Cloud Messaging) in my flutter app.
- I shared the
context
and thesetState()
of each page in static variables with these two lines getting called in all the build functions of my pages :
@override Widget build(BuildContext context) { StaticClass.currentContext = context; StaticClass.currentSetState = this.setState; return ... ; }
- I created a callback to handle the coming notifications when the app is running
fcm.configure( onMessage: (){ StaticClass.currentSetState((){ Navigator.pushNamed(StaticClass.currentContext, "/notifications"); }); });
What happened :
- I got this error:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══ ... setState() or markNeedsBuild() called during build. This Overlay widget cannot be marked as needing to build because the framework is already in the process of building widgets. ...
Explanations :
- I can't update the page (by using context or calling setState()) when the framework is building
- This problem doesn't happen when this function is called with a user interaction
What I want :
- Is there a way to repair my code or am I doing something wrong ?
OR
- Is there any other solution to go to another Page when onMessage() is triggered ?
OR
- Is there a way to know when the build function completes, to setState() without any problem ?
Please Help I'm stuck here