我正在使用freezed包来创建我的 json 解析器和数据类。到目前为止,我正在使用dartz的包来创建 Union 案例并在 Flutter 小部件中处理它们。例如,我的一些 Union 类如下所示。
Either<ApiFailure,ModelA> apiResult1;
Either<ApiFailure,ModelB> apiResult2;
我在我的颤振小部件的构建器中使用它们,方法是折叠它们并为每种情况返回特定的小部件。例如。
return apiResul1.fold<Widget>(
(left) => ErrorWidget(),
(right) => SuccessWidget(),
);
我使用 freezed 包创建了ApiFailure
、ModelA
和作为数据类。ModelB
我知道 freezed 带有类似的 Union 类支持,例如 dartz,我们可以在其中定义联合案例。因此,我尝试按如下方式使用它们,并且根据我最初的理解,使用已经存在的数据类例如是不可能实现以下目标的。ModelA and
ApiFailure`。
@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;
}
ApiFailure
请注意,在上述两个联合类中,我正在重新定义ApiResult2
我要避免的。
问题:是否可以利用现有的数据类来构建一个联合类,这样我就不必为了改变ApiFailure
对象的结构而进行多次更改。希望我的问题很清楚。