Reputation: 607
What I did :
context
and the setState()
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 ... ; }
fcm.configure( onMessage: (){ StaticClass.currentSetState((){ Navigator.pushNamed(StaticClass.currentContext, "/notifications"); }); });
What happened :
══╡ 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 :
What I want :
OR
OR
Please Help I'm stuck here
Upvotes: 8
Views: 12728
Reputation: 17756
You can call setState
after rendering is done by adding a post frame callback with addPostFrameCallback method. This will be called only once and after build process is done.
WidgetsBinding.instance.addPostFrameCallback((_) => setState(() {}));
Upvotes: 37