我正在为最新的Flutter应用程序使用BLOC模式,并且开始在输出流中使用如下所示的内容:
class MyBloc {
// Outputs
final Stream<List<Todo>> todos;
factory MyBloc(TodosInteractor interactor) {
final todosController = BehaviorSubject<List<Todo>>()
..addStream(interactor.todos);
return MyBloc._(todosController);
}
MyBloc._(this.todos);
}
但是慢慢地,我发现自己在一段时间后使用一种方法(或吸气剂)来做类似的事情:
class MyBloc {
final TodosInteractor _interactor;
// Outputs
Stream<List<Todo>> todos(){
return _interactor.todos;
}
MyBloc(this._interactor) { }
}
对于想在todos
中TodosInteractor
吸气的人:
Stream<List<Todo>> get todos {
return repository
.todos()
.map((entities) => entities.map(Todo.fromEntity).toList());
}
当我查看不同的代码时,我看到第一个示例使用字段而不是方法来公开流,但是我不知道为什么我会选择一个而不是另一个。在我看来,创建另一个仅用于推送流的控制器有点...除了在我的todos流定义中保持不变之外,这还有其他好处吗?还是我只是在梳头?
答案 0 :(得分:1)
也许这不是一个最佳答案,但这是一个很好的做法,可以使用get方法公开您的输出流。下面是我使用RxDart编写到项目中的bloc类的示例。
SELECT
object_schema,
object_name,
index_name
FROM
performance_schema.table_io_waits_summary_by_index_usage
WHERE
index_name IS NOT NULL
AND count_star = 0
ORDER BY object_schema, object_name;