我们一直在开发一个使用嵌套对象的颤振项目,所有对象都被标记为@freezed。项目的整体实现高度依赖冻结包的copyWith功能。因此,我们想知道它是否真的有效。
这是一个例子:
我们有一个Event
对象,其中包含一个EventBasicInfo
对象(以及其他对象),该对象包含一个字段description
(以及其他对象)。
使用 BLoC 包处理事件的状态。要更改事件的描述,我们执行以下操作:
void _onDescriptionChanged(_DescriptionChanged event, Emitter<EventFormState> emit) {
emit(
state.copyWith(
event: state.event.copyWith(
basicInfo: state.event.basicInfo
.copyWith(description: EventDescription(event.descriptionStr)))),
);
}
我们可以看到,这个方法使用了 3 倍的 copyWith 方法,只改变了一个嵌套字段。不好吗?有没有更好的方法来做到这一点?