tags: #flutter , #programming #basics links: [[Flutter MOC]] --- ### If you have to call something after build method is complete use addPostFrameCallback Example scenarios: - How to show a Dialog only the first time a page is displayed? - How to get dimensions of widget that depends on the device dimensions and other constraints - **How can I do something once the build is complete?** All these have something in common, we have to wait for the completion of **build** before doing something. ## Usage: ### initState ```dart @override void initState(){ super.initState(); WidgetsBinding.instance.addPostFrameCallback((_){ showDialog( context: context, ... ); }); } ``` ### Build method ```dart @override Widget build(BuildContext context){ WidgetsBinding.instance.addPostFrameCallback((_) => onAfterBuild(context)); return Container( ... ); } void _onAfterBuild(BuildContext context){ // I can now safely get the dimensions based on the context } ``` ### didUpdateWidget ```dart @override void didUpdateWidget(TimeRangePageView oldWidget) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) { if (oldWidget.something != widget.something) { // If a prop is changed and you have to call something based on the change // jumpToPage(2); } }); super.didUpdateWidget(oldWidget); } ``` **Common error messages** > setState() or markNeedsBuild() called during build. --- source: [AddPostFrameCallBack](https://www.didierboelens.com/2019/04/addpostframecallback/)