// in bloc function...
final updatedList = [...state.myList]; // making a copy of the list using spread operator
// update your list
// emit updatedList and BlocBuilder will react
BlocListener<YourBloc, YourState>(
listenWhen: (previous, current) {
// check if current page is the current page before reacting to state changes
},
listener: (context, state) {
...
},
);
1条答案
按热度按时间eyh26e7m1#
如果你想让BlocBuilder根据列表更新而改变,那么你需要复制列表并发出它。
没有理由必须使用StreamBuilders。使用Bloc小部件,一旦页面离开导航堆栈,它就不会对任何更改做出React。如果您将一个新页压入堆栈而不弹出前一页,则所有侦听器仍将处于活动状态。
如果需要将上一页保留在导航堆栈中,可以使用BlocBuilder和BlocListener小部件的
buildWhen
或listenWhen
过滤器来检查您在导航中的位置。