Flutter:两个连续页面上的相同 BlocBuilder

Flutter : same BlocBuilder on two consecutive pages

我正在开发一个应用程序,我们决定使用 BLoC 模式。 我在我的应用程序中遇到了一个反复出现的问题。 事实上,我创建了一个名为 CatalogBloc.

的区块

在我的第一页上,有一个使用以下 BlocBuilder 的小部件:

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

从此页面,我可以导航到包含相同 BlocBuilder 和相同小部件 (CatalogArticlesWidget) 的页面。第二个页面调用 bloc CatalogBloc 重新加载相同类型的数据,但在 initState:

中过滤
@override
void initState() {
  context.read<CatalogBloc>().add(CatalogArticlesLoadRequested(family: widget.family));
  super.initState();
}

所以当我(从第二个)弹出到第一个屏幕时,数据已经改变了。

避免这种行为的最干净的方法是什么?

为第 2 页创建该 bloc 的新实例

第一个解决方案:见w461答案

第二种解决方案:就我而言,我认为为每个页面创建新状态会更好。