Search code examples
flutterdartflutter-layoutrxdartstream-builder

Flutter - Show alert dialog after StreamBuilder loaded data and UI


I want to show an alert dialog after I get data from StreamBuilder. I also have a UI to render. Currently, I'm having an error like this when I'm trying to build dialog inside _loadUI method before returning actual UI.

setState() or markNeedsBuild() called during build.

Code:

if (dataSnapshot.hasData) {
            return dataSnapshot.data ? _loadUI(dataSnapshot.data) : _emptyView();
          }

Solution

  • You can do like this:

    void _loadUI(snapshot) {
    ...
    
      WidgetsBinding.instance.addPostFrameCallback((_){
        showDialog(
          context: context, 
          ...
        );
      });
    }
    

    addPostFrameCallback run during a frame, just after the persistent frame callbacks (which is when the main rendering pipeline has been flushed).