【发布时间】:2020-05-21 18:33:35
【问题描述】:
我有一个应用程序,它使用底部导航栏在页面之间切换。为此,我使用Bloc。 在其中一个标签页上,我呈现了一个包含一些项目的列表。此列表是在状态更改为 SchedulesLoaded 时构建的(见图)。
我遇到的问题是,当我使用底部导航栏(使用完全不同的 Bloc)更改页面时,正在重建图片中的列表。侦听器实际上是在重绘小部件而不改变它正在侦听的 Bloc 状态。我无法理解为什么会这样。有人知道吗?
我发现 this 链接讨论了这个问题,但我没有从中得到任何有用的信息。
【问题讨论】:
-
Bloc Listener 中没有任何内容。要测试您的 Bloc 侦听器是否实际执行,请尝试在侦听器中添加: (context, state) {print('bloc listener: $state')}
-
@FederickJonathan Bloc Builder 是否应该在 Bloc Listener 中?
-
@FederickJonathan Bloc 监听器只被调用一次,这是正确的。但是每次我切换回选项卡时都会调用构建器,从而重建小部件。我怎样才能防止这种情况发生?我只想在状态更改后构建列表视图,而不是在构建器中重绘它..
-
我不知道怎么做,但你可以试试这两个东西 AutomaticKeepAliveClientMixin 和 PageStorage。
-
AutomaticKeepAliveClientMixin 在 blocbuilder 中不起作用。您必须使用 BlocBuilder 中的条件属性。