0

我们一直在开发一个使用嵌套对象的颤振项目,所有对象都被标记为@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 方法,只改变了一个嵌套字段。不好吗?有没有更好的方法来做到这一点?

4

0 回答 0