首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Freezed中,是否有可能从已经存在的冻结数据中创建联合案例?

在Freezed中,是否有可能从已经存在的冻结数据中创建联合案例?
EN

Stack Overflow用户
提问于 2020-04-09 09:12:51
回答 1查看 1K关注 0票数 9

我正在使用冻住包来创建json解析器和数据类。到目前为止,我正在使用达茨的包来创建Union,并在颤振小部件中处理它们。例如,我的一些Union类如下所示。

代码语言:javascript
复制
Either<ApiFailure,ModelA> apiResult1;
Either<ApiFailure,ModelB> apiResult2;

我在颤振小部件的构建器中使用它们,方法是折叠它们,并为每个案例返回特定的小部件。例如。

代码语言:javascript
复制
return apiResul1.fold<Widget>(
  (left) => ErrorWidget(),
  (right) => SuccessWidget(),
);

我使用冻结包创建了ApiFailureModelAModelB作为数据类。据我所知,冻结与类似的联合类支持,如dartz,我们可以定义联合案例。因此,我尝试按以下方式使用它们,并且根据我的初步理解,不可能使用已经存在的数据类来实现以下目标。ModelA andApiFailure`‘.

代码语言:javascript
复制
@freezed
abstract class ApiResult1 with _$ApiResult1{
  const factory ApiResult1.modelA() =  ModelA;
  const factory ApiResult1.apiFailure() =  ApiFailure;
}

@freezed
abstract class ApiResult2 with _$ApiResult1{
  const factory ApiResult2.modelB() =  ModelB;
  const factory ApiResult2.apiFailure() =  ApiFailure;
}

注意,在上面的两个联合类中,我在ApiResult2中重新定义了ApiResult2,这正是我要避免的。

问题:是否可以利用现有的数据类型来构建一个联合类,这样我就不必为了改变ApiFailure对象的结构而进行多次更改。希望我的问题很清楚。

EN

回答 1

Stack Overflow用户

发布于 2021-02-04 21:09:02

为什么不使用您的数据类作为参数?

代码语言:javascript
复制
@freezed
abstract class ApiResult1 with _$ApiResult1 {
  const factory ApiResult1.model(ModelA model) = _ModelA;
  const factory ApiResult1.failure(ApiFailure failure) = _ApiFailure1;
}

@freezed
abstract class ApiResult2 with _$ApiResult2 {
  const factory ApiResult2.model(ModelB model) = _ModelB;
  const factory ApiResult2.failure(ApiFailure failure) = _ApiFailure2;
}

那你就可以

代码语言:javascript
复制
  return apiResult1.when(
    model: (model) => SuccessWidget(),
    failure: (failure) => ErrorWidget(),
  );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61117705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档