【问题标题】:Flutter : same BlocBuilder on two consecutive pagesFlutter:两个连续页面上的相同 BlocBuilder
【发布时间】:2023-03-24 13:25:02
【问题描述】:

我正在开发一个应用程序,我们决定使用 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();
}

所以当我跳到第一个屏幕(从第二个屏幕)时,数据发生了变化。

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

【问题讨论】:

标签: flutter state bloc flutter-bloc


【解决方案1】:

为第二页创建该块的新实例

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-10
      • 2022-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      相关资源
      最近更新 更多