我正在为我最新的 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) { }
}
对于想看的人... getter for todos
in TodosInteractor
:
Stream<List<Todo>> get todos {
return repository
.todos()
.map((entities) => entities.map(Todo.fromEntity).toList());
}
当我查看不同的代码时,我看到第一个示例使用字段而不是方法来公开流,但我不明白为什么我会选择一个而不是另一个。在我看来,创建另一个控制器只是为了推动流有点多……除了在我的 todos 流定义中不可变之外,这还有什么好处吗?还是我只是分裂头发?