gpt4 book ai didi

dart - 如何在 flutter 中基于同一个流 Controller 获取多个流?

转载 作者:IT王子 更新时间:2023-10-29 06:58:53 25 4
gpt4 key购买 nike

我有一个 Bloc 类,它需要基于同一个流 Controller 的三个流。

class TodoBloc {

final _todoController = StreamController<List<TodoModel>>();

get allTodoStream => _todoController.stream;

get activeTodoStream => _todoController.stream
.map<List<TodoModel>>(
(list) => list.where((item) => item.state == 0));

get completedTodoStream => _todoController.stream
.map<List<TodoModel>>(
(list) => list.where((item) => item.state == 1));}

这是一个有状态的待办事项列表。我想在与检索其他状态的流分开的流中检索具有事件状态的待办事项。

我有一个方法负责过滤并根据过滤值返回一个流。这是方法:

Stream<List<TodoModel>> filterTodoLs(String filter) {
if (filter == 'all') {
return todoStream;
} else if (filter == 'completed') {
return completedStream;
} else if (filter == 'active') {
return activeStream;
}
return todoStream;
}

稍后将在如下小部件中使用:

 return StreamBuilder<List<TodoModel>>(
stream: bloc.filterTodoLs(filter),
builder:(BuildContext context, AsyncSnapshot<List<TodoModel>> todoSnapShot) {}

到目前为止快照是空的。我如何过滤我的原始流并根据应用于该流的过滤器返回不同的流?

最佳答案

StreamController.broadcast() 创建一个可以有多个监听器的流。

参见 https://www.dartlang.org/tutorials/language/streams#broadcast-streams

在不同过滤流之间切换的细节取决于问题中未提供的上下文。

关于dart - 如何在 flutter 中基于同一个流 Controller 获取多个流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54277592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com