flutter 如何使用BloC+Freezed连接实体(域层)和模型(数据层)

mnemlml8  于 2023-03-24  发布在  Flutter
关注(0)|答案(1)|浏览(158)

我正在尝试学习如何使用Bloc和Freezed来遵循一个干净的功能优先架构。
从我所看到的,我应该在Domain层中有一个实体类,它只声明它的属性供表示层使用,在Data层中,我应该有一个这个类的DTO,它负责实现FromJson方法,以及从dataSources获取数据并将其解析为实体时可能需要的任何东西。
我的问题是:
1-我应该为这些类中的哪一个(如果不是两个)创建冻结的代码?
2-在使用仓库时,我如何连接实体和模型,我是否应该创建“fromEntity,toEntity”方法或类似的方法?如果需要这样的方法,我可以使用Freezed创建它们吗?
我正在使用这个实体类:

class NoteEntity{
  final String title;
  final String description;

  NoteEntity({required this.title, required this.description});
}

我是这样用freezed的:

@freezed
class NoteEntity with _$NoteEntity {
      const factory NoteEntity({
        required String title,
        required String description,
      }) = _NoteEntity;
}
g9icjywg

g9icjywg1#

当我们谈论architecture时,它将导致根据我们在基于体系结构模式的应用程序中的需求进行决策。

  1. freezed是一个插件来生成类.像copyWithtoStringoperator ==等.所以基本上你可以使用这两个层.你可以生成类构造器,而无需手动键入.
    再一次,关于决策:在我的例子中,我通常只在域层使用freezed。因为我在数据层上不需要它。
    1.是的,您可以在域模型中手动创建fromEntitytoEntity

*域层

@freezed
class NoteEntityDomain with _$NoteEntityDomain  {
      const factory NoteEntityDomain ({
        required String title,
        required String description,
      }) = _NoteEntity;

  // fromentity
  factory NoteEntityDomain.fromEntity(NoteEntity data) {
     return NoteEntityDomain(
       title: data.title,
       description: data.description
     )
   }
 // to entity method here
}

相关问题