Flutter : same BlocBuilder on two consecutive pages


I’m working on an application and we decided to use the BLoC pattern.
I am facing a recurrent problem in my application.
Indeed, I created a bloc called CatalogBloc.

On my first page, there is a widget that uses the following BlocBuilder:

BlocBuilder<CatalogBloc, CatalogState>(
            buildWhen: (previous, current) {
              return current is CatalogArticlesLoadIsFinished ||
                  current is CatalogArticlesLoadInProgress;
            builder: (context, state) {
              return CatalogArticlesWidget(
                data: state.data,

From this page, I can navigate to a page that contains this same BlocBuilder and same widget (CatalogArticlesWidget). This second page calls the bloc CatalogBloc to reload data of the same type, but filtered in initState:

void initState() {
  context.read<CatalogBloc>().add(CatalogArticlesLoadRequested(family: widget.family));

So when I pop to the first screen (from the second), the data has changed.

What is the cleanest way to avoid this kind of behavior ?


First solution: see w461 answer.

Second solution: in my case, I think it is better to create new states for each page.

Answered By – Gabriel Curinga

Answer Checked By – Willingham (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *