提问人:user18084770 提问时间:10/29/2023 最后编辑:user18084770 更新时间:11/6/2023 访问量:63
如何在 Flutter Clean 架构中很好地组织文件夹结构
how to good organize folder structure in flutter clean architecture
问:
我使用 Flutter 干净架构 MVVM,我有几个问题:
我们可以将向 API 发送请求分为 2 个阶段: - 第一个 - 调用正在通过整个应用程序(查看 -> 查看模型 -> 模型)作为请求到 API - 第二个 - 我们调用的结果来自 API 并遍历所有应用程序(模型 -> 查看模型 -> 视图)作为响应
我有 2 个带有模型的文件夹:
- 在视图模型中,我有一个名为实体的文件夹
- 在模型 I 中,文件夹称为模型
在第一阶段,我有有效载荷模型,它被放置在实体文件夹中。在此有效负载中,我扩展了 toModel 方法,该方法基本上将有效负载转换为最终模型(该结构放置在模型文件夹中)。最终对象在 API 调用中作为正文(或标头中的参数)发送。
在第二阶段,我从API获得响应,该响应映射到放置在模型文件夹中的模型。在这个模型中,我有扩展 toEntity,它将模型转换为最终实体(放置在 entites 文件夹中)。
因此,在 entites 文件夹中,我在实体中有 2 种类型的类 - Entity 和 Payload 以及模型中有 2 种类型的类 - 转换了来自 API 的有效负载和响应。将它们分隔在文件夹结构中是否有意义,例如:
-entities
-entity
-payload
-models
-model
-dto
其中 payload -> dto(在第一阶段)和模型 -> 实体(在第二阶段)。
- 在这些文件夹中分隔这两种类型的类是否有意义?
- 在模型层中将其称为“dto”是否合适?
- 有时有效载荷与 dto 相同或几乎相同,模型和实体的情况也是如此。在这种情况下,我应该使用继承机制吗?例如
我的有效载荷:
@unfreezed
class AddTaskPayload with _$AddTaskPayload {
factory AddTaskPayload({
String? title,
String? description,
DateTime? date,
TimeOfDay? startingTime,
TimeOfDay? endingTime,
TaskPriority? priority,
}) = _AddTaskPayload;
}
extension AddTaskPayloadExtension on AddTaskPayload {
AddTaskModel get toModel {
final String startingDate = DateTime(date!.year, date!.month, date!.day,
startingTime!.hour, startingTime!.minute)
.toIso8601String();
final String endingDate = DateTime(date!.year, date!.month, date!.day,
endingTime!.hour, endingTime!.minute)
.toIso8601String();
return AddTaskModel(
title: title,
description: description,
startingDate: startingDate,
endingDate: endingDate,
priority: priority?.getIntFromPriority(),
);
}
}
我的DTO:
@unfreezed
class AddTaskModel with _$AddTaskModel {
factory AddTaskModel({
String? title,
String? description,
String? startingDate,
String? endingDate,
int? priority,
}) = _AddTaskModel;
factory AddTaskModel.fromJson(Map<String, Object?> json) =>
_$AddTaskModelFromJson(json);
}
在这种情况下,在 DTO 中使用继承是否有意义?2 个字段具有相同的类型(标题和描述),其余字段不同。如果不是,当它使敏感使用继承时?
答: 暂无答案
评论