转换 BLoC 中的冻结事件

Transform Freezed Events in BLoC

我想知道是否有办法使用 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());

如果有解决此问题的方法,请告诉我。如果没有,最好将此添加为功能请求。

有类似问题, 我本来在做

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

我通过将其更改为

来修复它
on<RegularEvent>((event, emitter) {})

你必须让你的事件 public 才能正常工作,我希望它能正常工作,但对我来说没问题。