flutter_bloc 8:监听来自另一个集团的状态变化的最佳实践是什么

flutter_bloc 8: what is the best practice for listening to state changes from another bloc

监听另一个 bloc 状态变化的最佳实践是什么?

这个答案在以前的版本中是相关的,但它在版本 8 中不起作用(.listen 方法在 bloc 上不再存在):

FilteredTodosBloc({@required this.todosBloc}) {
  todosSubscription = todosBloc.listen((state) {
    if (state is TodosLoadSuccess) {
      add(TodosUpdated((todosBloc.state as TodosLoadSuccess).todos));
    }
});}

在 flutter_bloc 8 中监听来自另一个 bloc 的状态变化的推荐方法是什么?

状态流现在通过 stream getter 公开,因此您仍然可以使用几乎相同的代码:

FilteredTodosBloc({required this.todosBloc}) {
  todosSubscription = todosBloc.stream.listen((state) {
    if (state is TodosLoadSuccess) {
      add(TodosUpdated((todosBloc.state as TodosLoadSuccess).todos));
    }
});}

就推荐方法而言,没有真正改变。您所要做的就是先调用 stream 属性 并直接收听它而不是 bloc。因此,如果您以前像这样听过 blocs / cubits: myBloc.listen((state) => print(state));

您需要做的就是先调用 stream,如下所示:

myBloc.stream.listen((state) => print(state));