【发布时间】: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();
}
所以当我跳到第一个屏幕(从第二个屏幕)时,数据发生了变化。
避免这种行为的最干净的方法是什么?
【问题讨论】:
-
首先,在initState中不能访问
context。我想知道它是如何工作的
标签: flutter state bloc flutter-bloc