Flutter 干净架构中的功能之间共享实体

问题描述 投票:0回答:1

我正在尝试在 Flutter 中开发一个小型应用程序,使用 BloC 状态管理和 get_it 依赖注入,同时使用干净的架构。

我目前开发了一项功能,可以向端点发出 API 请求,并将该信息映射到模型,然后通过块构建器状态将其作为实体进行访问。

我遵循 this 指南来了解干净的架构,因此我的项目以相同的方式构建。

下面是我如何在表示层中定义实体并为其分配来自块状态的值:

static LoginEntity? loginEntity = const LoginEntity();
loginEntity = state.loginEntity![0];

在我的块状态中,我定义了loginEntity:

abstract class RemoteLoginDetailsState extends Equatable {
  const RemoteLoginDetailsState({this.loginEntity});

  @override
  List<Object?> get props => [loginEntity!];
}

在我的 api service.g.dart 文件中,我的请求被发出并映射到模型:

    LoginModel value = LoginModel.fromJson(_result.data!);
    final httpResponse = HttpResponse([value], _result);
    return httpResponse;

我在理解如何在坚持干净的架构的同时使用从一项功能的 API 响应中获取的信息到其他功能时遇到问题。

映射后我们如何正确共享来自实体的信息?

假设我有一个登录功能,其中有一个名称对象,我获取该名称对象的值并将其映射到我的模型。那么我应该如何在遵守干净的架构的同时访问另一个功能中名称对象的值?

我知道也许可以通过状态将状态从一个功能传递到另一个功能来完成,但我不确定这是否仍然遵循干净的架构以及应该如何完成。

我知道 DTO 也可以使用,但我一直认为它们应该只用于在同一功能中传输对象,而不是从一个功能到另一个功能。

flutter model entity clean-architecture flutter-bloc
1个回答
0
投票

假设我有一个登录功能,其中有一个名称对象,我获取该名称对象的值并将其映射到我的模型。那么我应该如何在遵守干净的架构的同时访问另一个功能中名称对象的值?

您应该从 API 中为每个功能获取新数据,并根据特定功能的需要显示或操作它。它将确保数据是最新的。

如果数据持久化且不发生变化,则应考虑保存在本地存储中

如果您更新数据,您应该有一个端点来执行此操作。

使用 Stream,您可以捕获更新数据并拥有反应式 UI

© www.soinside.com 2019 - 2024. All rights reserved.