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));
监听另一个 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));