先上代码
git clone http://122.51.89.245:8880/hz/architecture.git
欢迎PR
内容来源
- Reso Coder resocoder.com/2019/09/02/…
- 某github 主,github.com/stephantasy…
我的关注点
代码的结构
- 数据接口抽象 domain
- 数据接口实现 data
- 逻辑及UI presentation/bloc presentation/pages presentation/widget
- 依赖注入 injection_container.dart
觉得新奇点
- 将event的实现写到具体的event,bloc mapEventToState 只调用 event.loadAsync,减少了 IF语句
- HydratedBloc 缓存bloc数据, dataSource缓存http数据.
因为一般就只有去缓存http数据,很少有去缓存bloc的数据
- dataSource, 你的数据源可能来自graphql,rest,local... 这时使用dataSource这一层,目录结构就比较好看
- Either<Failure,Model>的使用,统一定了一个useCase的结果状态。
别的想法
- domain只是data的抽象,是一种DIP。 model是缺血模型定义+toJson,fromJson+UseCases. 用useCase避免了model大量的method。
- event->state这个过程 是否有办法复用?是否需要复用。 个人觉得,这个好像和业务关系密切,也是多种类的。
- state->widget 写到防腐层好吗?另,不同state到同一个widget的结构有什么可优化的?