0

我想知道是否有办法使用 Freezed 库正确设置 BLoC 事件。当您想将变压器添加到选定的事件中时会出现问题。

让我们考虑一下这种情况:

class CustomState {}

@freezed
class CustomEvent with _$CustomEvent {
  const factory CustomEvent.regularEvent() = _RegularEvent;
  const factory CustomEvent.eventWithTransformer() = _EventWithTransformer;
}

class CustomBloc extends Bloc<CustomEvent, CustomState> {
  CustomBloc(CustomState initialState) : super(initialState) {
    on<CustomEvent>((event, emitter) {
      //handle Events
    },
        transformer: transformOnlyEventWithTransformer());
  }
}

我怎样才能添加转换只是为了eventWithTransformer

on<CustomEvent.regularEvent>((event, emitter) {
   //this won't work as ```CustomEvent.regularEvent``` is not a type
}

此外,您不能on<>在一个集团中有两个具有相同事件的事件,因此以下内容也不起作用

on<CustomEvent>((event, emitter) {
   event.whenOrNull(
     regularEvent: () => // handle event
  )
}

on<CustomEvent>((event, emitter) {
   event.whenOrNull(
     eventWithTransformer: () => // handle event
  )
},         transformer: transformOnlyEventWithTransformer());

让我知道这个问题是否有任何解决方案。如果没有,最好添加此功能请求。

4

1 回答 1

1

有类似的问题问题,我最初是在做

on<CustomEvent.RegularEvent>((event, emitter) {})

我通过将其更改为来修复它

on<RegularEvent>((event, emitter) {})

您必须公开您的活动才能使其正常工作,我希望它可以与它一起工作,但这对我来说很好。

于 2022-01-12T09:29:58.867 回答