倾听另一个集团的状态变化的最佳做法是什么?
这个答案在以前的版本中是相关的,但在版本8中不起作用(.listen
方法不再存在于一个块上):https://stackoverflow.com/a/62785980/160919
FilteredTodosBloc({@required this.todosBloc}) {
todosSubscription = todosBloc.listen((state) {
if (state is TodosLoadSuccess) {
add(TodosUpdated((todosBloc.state as TodosLoadSuccess).todos));
}
});}
在flutter_bloc 8中,建议使用什么方法来侦听来自另一个块的状态变化?
状态流现在通过stream
getter暴露,所以你仍然可以使用几乎相同的代码:
FilteredTodosBloc({required this.todosBloc}) {
todosSubscription = todosBloc.stream.listen((state) {
if (state is TodosLoadSuccess) {
add(TodosUpdated((todosBloc.state as TodosLoadSuccess).todos));
}
});}
在推荐的方法方面没有什么变化。你所要做的就是先调用stream
属性,然后听它,而不是直接听它。如果你之前听过这样的blocks/腕尺:myBloc.listen((state) => print(state));
所有你需要改变的是先调用stream
,像这样:
myBloc.stream.listen((state) => print(state));