【发布时间】:2021-10-27 09:31:19
【问题描述】:
由于无法扩展诸如class MyBloc extends Bloc<MyEvent, MyState> 之类的类的扩展名,那么从我的 bloc 文件中获取某些功能的最干净的方法是什么?由于逻辑有点复杂,我想得到一些子函数,比如 in
@override
Stream<MyState> mapEventToState(MyEvent event) async* {
yield* event.map(
loadRequested: (e) => _mapLoadRequestedToState(),
dataEntered: (e) => _mapDataEnteredToState(),
);
}
Stream<LogicChainState> _mapLoadRequestedToState() async* {
final dataRaw = loadData();
final dataProc = initData(dataRaw);
yield doSomeMore(dataProc);
}
我不喜欢使用全局函数的想法。我可以创建一个类
class MyBlocUtils {
MyData initData(MyData dataRaw) {
...
}
MyData doSomeMore(MyData dataProc) {
...
}
}
这仍然不如使用在类 MyBloc 中定义的函数。
有什么建议吗?
【问题讨论】:
-
为什么要将它们从 bloc 类移到另一个类?
-
只是为了让代码更干净一点。将主要结构保留在 bloc 类文件中,并将一些实用程序功能移动到一些实用程序文件中。目前我在 bloc 文件中滚动了很多
-
您是否尝试过将代码导出到 mixin?教程在这里:medium.com/flutter-community/dart-what-are-mixins-3a72344011f3